為什麼使用串口軟體會顯示亂碼
㈠ 使用串口伺服器會出現亂碼怎麼辦
硬體原因,注意TTL RS232 RS485這幾種電平形式是不同的,不能直接連接,需要用232晶元或者485晶元轉發,客戶最常犯的一個錯誤是將TTL電平直接接到計算機上,肯定會亂碼,計算機是RS232電平。另外硬體設計不當,有干擾也可能會導致通訊不正常。仔細檢查硬體即可。
波特率、 數據位、 校驗位不匹配,即我們的網路轉串口設備與您的串口設備波特率不匹配,設置成一致即可。
有時候如果如果無法確認問題在哪,可以使用自收發的形式排除。
1、您的設備直接和電腦通訊,按照你理解的波特率相關設置,看是否正常,以確認你的設置是否有問題。
2、斷開您的設備與網路模塊之間的連接,再將我們的模塊串口的RXD和TXD短接,通過網路發送網路接收,看數據是否正常,以確認我們的模塊工作正常。
3、斷開您的設備與網路模塊之間的連接,再將您的設備的串口收發短接,通過電腦自收自發,看數據是否正常,以確認您的電腦到串口這部分硬體工作正常。
㈡ 為什麼串口通訊調試軟體上得到亂碼
首先確認硬體接線沒問題,其次檢查波特率等通信參數、再有就是接收的數據有沒有中文,如果有中文,則需要設置正確的解碼才可以,類似格西烽火軟體,可以設置中文的編碼方式。
㈢ 串口調試亂碼的原因
1.USB轉串口的問題
解決方法:我曾用一個12塊錢的那種U轉串,出現過亂碼,換一個好的就沒事了
2.波特率不同步的問題
解決方法:兩邊設置的波特率的一樣,會導致這樣的問題
3.在通信波特率為 38400 時,通信正常,arm 板上解受到的數據(ascII碼)顯示正常。
但是當波特率為 115200
時,解受到的數據就出現亂碼的現象!
解決方法:暫無
4.用ARM2103 給電腦發送信息,用串口高度精靈看,一直接收的都是錯誤碼
解決方法: 我用的44b0曾經出現過顯示亂碼的問題,在超級終端上顯示的;
後來才發現是在boot匯編程序里設置了主頻為60M;但是在串口初始化時用的是40M,在c語言程序里忘記重新設定主頻了
㈣ 串口出亂碼/無輸出的原因
很簡單
線序問題:兩個設備的發送和接收要交叉連接(即發送對接收接收對發送)
如果連接錯誤無任何反映
波特率問題:如果線序正確波特率不一樣就會有亂碼出現
還有一種串口自檢的方法:
用跳線把串口的發送和接收短接就是串口的2腳3腳能夠實現自發自收
這樣能檢測串口工作是否正常
㈤ HELP,為什麼我的串口發送數據顯示的是亂碼
亂碼的原因通常有兩個:
1、波特率 數據位 校驗位 不匹配,即網路轉串口設備與您的串口設備波特率不匹配,設置成一致即可。
2、硬體原因,注意TTL RS232 RS485這幾種電平形式是不同的,不能直接連接,需要用232晶元或者485晶元轉發,客戶最常患的一個錯誤是將TTL電平直接接到計算機上,肯定會亂碼,計算機是RS232電平。另外硬體設計不當,有干擾也可能會導致通訊不正常。仔細檢查硬體即可。
如果無法確認問題在哪,可以使用自收發的形式排除。
1、您的設備直接和電腦通訊,按照你理解的波特率相關設置,看是否正常,以確認你的設置是否有問題。
2、斷開您的設備與網路模塊之間的連接,再將模塊串口的RXD和TXD短接,通過網路發送網路接收,看數據是否正常,以確認我們的模塊工作正常。
3、斷開您的設備與網路模塊之間的連接,再將您的設備的串口收發短接,通過電腦自收自發,看數據是否正常,以確認您的電腦到串口這部分硬體工作正常。
㈥ 為什麼軟體會亂碼
系統字體丟失,或者沒有正確安裝,缺少了關鍵文件,因此才可能出現這樣的問題!
㈦ 串口程序 調試助手顯示是亂碼 為啥
你
發送的
可能是
2進制數
不是
ascii
碼,所以
顯示亂碼
你可以
傳輸之前,轉換
為
字元串
接收
後
程序
編程
轉換
串口調試助手
也可以
選擇
16進制顯示
祝你順利
㈧ 串口接收到亂碼什麼原因
亂碼很正常,因為是通訊嘛,硬體的接收當然要可能出現預料外的數據,比如,有些調制方式的Modem就是會必定產生亂碼,足夠強的電磁干擾信號也可能讓數據出錯。亂碼是有的,但不存在「多餘的」這樣的概念,如果你覺得「多餘」,那隻是你通訊協議沒制定好。
串口的協議,通常情況下格式是這樣的:起始字(多位元組),數據區長度(根據需要,一般是1或2位元組),校驗和(多位元組),數據區(多位元組)。
每個包都如此,起始字一般是全部正常通訊數據中不可能用到的位元組序列組合,校驗和一般採用CRC校驗的為多(這樣比較可靠,源代碼在網上很多)。
對協議的接收分包工作,是個稍微復雜的編碼工作(代碼本身不復雜,你需要思維復雜點),你需要定義一個「接受狀態」的標志值,每接一個位元組變換一次狀態值,它標志著你下一次將接收什麼位元組,比如:起始字位元組1,起始字位元組2,……,數據區長度位元組1,數據區長度位元組2,……,校驗和位元組1,校驗和位元組2……,數據區(已經進數據區了,因為已經知道長度,只積攢緩沖而已,一個標志就夠)。積攢完數據區位元組後,計算校驗和,如果不符合前面協議給的結果,則將「接受狀態」的標志值復位(將接收起始字位元組1),從前面的起始字位元組2開始(模擬接收)重復上面過程。以上這個過程需要你熟練編碼操控二進制緩沖區。
有很多人把數據結構指針當發送緩沖,後面跟一個sizeof()就直接發出去;接收那端直接預期有多少位元組數據,死等在那裡;或者,按時間去接受(規定協議間要間隔若干秒),這些都是絲毫不懂通訊的胡作非為,早晚要出問題,如果你代碼里有這些做法,推薦你早點把它們改過來。
對串口通訊的接收,實際上用計算機處理起來是這樣的:串口是按位接收數據的,但PC機的底層硬體和軟體已經能按標准協議規定把位緩沖並識別轉換成位元組了,不過,每收一個位元組的時間遠比PC機程序運行慢得多,因此,對你的程序而言,接收的數據,其實就是一串無限長的位元組任意序列慢慢向你走來,你一次只能見到一個,任何一個位元組都與其他位元組沒什麼特殊地方,它們可能是數據包的一部分或幾個數據包,也許有的是錯的,甚至根本全是錯的,這全靠你程序去分辨——在了解了這些實際的基礎上,你才可以設計你的協議和程序。
㈨ 串口讀取的數據顯示為亂碼
1、用一個變數超時計數來判斷;2、正常,有干擾;3、要接收啊,可能是你接收程序沒有做好,死機了。