當前位置:首頁 » 編程軟體 » 編譯串口時亂碼

編譯串口時亂碼

發布時間: 2022-04-25 03:49:31

① 串口調試亂碼的原因

1.USB轉串口的問題

解決方法:我曾用一個12塊錢的那種U轉串,出現過亂碼,換一個好的就沒事了

2.波特率不同步的問題

解決方法:兩邊設置的波特率的一樣,會導致這樣的問題

3.在通信波特率為 38400 時,通信正常,arm 板上解受到的數據(ascII碼)顯示正常。
但是當波特率為 115200
時,解受到的數據就出現亂碼的現象!
解決方法:暫無

4.用ARM2103 給電腦發送信息,用串口高度精靈看,一直接收的都是錯誤碼

解決方法: 我用的44b0曾經出現過顯示亂碼的問題,在超級終端上顯示的;

後來才發現是在boot匯編程序里設置了主頻為60M;但是在串口初始化時用的是40M,在c語言程序里忘記重新設定主頻了

② 串口接收到亂碼什麼原因

亂碼很正常,因為是通訊嘛,硬體的接收當然要可能出現預料外的數據,比如,有些調制方式的Modem就是會必定產生亂碼,足夠強的電磁干擾信號也可能讓數據出錯。亂碼是有的,但不存在「多餘的」這樣的概念,如果你覺得「多餘」,那隻是你通訊協議沒制定好。

串口的協議,通常情況下格式是這樣的:起始字(多位元組),數據區長度(根據需要,一般是1或2位元組),校驗和(多位元組),數據區(多位元組)。

每個包都如此,起始字一般是全部正常通訊數據中不可能用到的位元組序列組合,校驗和一般採用CRC校驗的為多(這樣比較可靠,源代碼在網上很多)。

對協議的接收分包工作,是個稍微復雜的編碼工作(代碼本身不復雜,你需要思維復雜點),你需要定義一個「接受狀態」的標志值,每接一個位元組變換一次狀態值,它標志著你下一次將接收什麼位元組,比如:起始字位元組1,起始字位元組2,……,數據區長度位元組1,數據區長度位元組2,……,校驗和位元組1,校驗和位元組2……,數據區(已經進數據區了,因為已經知道長度,只積攢緩沖而已,一個標志就夠)。積攢完數據區位元組後,計算校驗和,如果不符合前面協議給的結果,則將「接受狀態」的標志值復位(將接收起始字位元組1),從前面的起始字位元組2開始(模擬接收)重復上面過程。以上這個過程需要你熟練編碼操控二進制緩沖區。

有很多人把數據結構指針當發送緩沖,後面跟一個sizeof()就直接發出去;接收那端直接預期有多少位元組數據,死等在那裡;或者,按時間去接受(規定協議間要間隔若干秒),這些都是絲毫不懂通訊的胡作非為,早晚要出問題,如果你代碼里有這些做法,推薦你早點把它們改過來。

對串口通訊的接收,實際上用計算機處理起來是這樣的:串口是按位接收數據的,但PC機的底層硬體和軟體已經能按標准協議規定把位緩沖並識別轉換成位元組了,不過,每收一個位元組的時間遠比PC機程序運行慢得多,因此,對你的程序而言,接收的數據,其實就是一串無限長的位元組任意序列慢慢向你走來,你一次只能見到一個,任何一個位元組都與其他位元組沒什麼特殊地方,它們可能是數據包的一部分或幾個數據包,也許有的是錯的,甚至根本全是錯的,這全靠你程序去分辨——在了解了這些實際的基礎上,你才可以設計你的協議和程序。

③ 串口輸出亂碼

很簡單
線序問題:
兩個設備的發送和接收
要交叉連接(即發送對接收
接收對發送)
如果連接錯誤
無任何反映
波特率問題:
如果線序正確
波特率不一樣
就會有亂碼出現
還有一種串口自檢的方法:
用跳線把串口的發送和接收短接
就是串口的
2腳
3腳
能夠實現自發自收
這樣能檢測串口工作是否正常
是否可以解決您的問題?

④ 串口通信 出現亂碼

串口通訊不正常,我的分析如下:
一、能正常的自收自發,只能說明自身的收和發設置正確,需要檢查ARM2103的設置和電腦的是否相同。同意4樓的說法,看看校驗位,數據位數是否都對應上了。
二、波特率需要用示波器測試一下,發送一個0x55,看看,一bit用的時間,計算一下,看看波特率到底對不對。自收自發,說明收發雙方波特率相同,看不出波特率對不對,這樣就不用猜測是否是波特率的問題了。用實踐檢驗。
三、如果串口高度精靈也能自收自發,上述都沒問題,你就得考慮一下通訊電路的問題了。你的232通訊晶元如果供電是3.3V,晶元周圍的電容用的是0.1uF,可能會出現這樣的情況。你把4個0.1uF的改成1uF的試試吧,不同廠家的232晶元也會造成差異。我遇到過這種情況。如能改成5V供電就試試。
祝你順利

⑤ C#編寫的串口上位機,顯示中文偶爾亂碼,求解決。

你可以先按十六進制顯示,然後對比你收到的十六進制與你輸入內容的十六進制之間的差異。

一般來說這種現象出現的原因是你上下位機沒有規定好通訊協議,而是直接將收到的任何內容直接進行轉碼顯示,因為串口本身有緩沖區,你下位機一次發出來的內容,在上位機可能兩次才能接收到,如果中斷的地方剛好是中文,自然就出來半個字元那就是亂碼了。

⑥ 串口調試助手一直出現亂碼

串口助手左側有個接收設置,將hex改成ascii試一次。

⑦ 串口出亂碼/無輸出的原因

很簡單

線序問題:兩個設備的發送和接收要交叉連接(即發送對接收接收對發送)

如果連接錯誤無任何反映

波特率問題:如果線序正確波特率不一樣就會有亂碼出現

還有一種串口自檢的方法:

用跳線把串口的發送和接收短接就是串口的2腳3腳能夠實現自發自收

這樣能檢測串口工作是否正常

⑧ 串口顯示亂碼的原因有哪些

1.USB轉串口的問題
解決方法:我曾用一個12塊錢的那種U轉串,出現過亂碼,換一個好的就沒事了
2.波特率不同步的問題
解決方法:兩邊設置的波特率的一樣,會導致這樣的問題
3.在通信波特率為
38400
時,通信正常,arm
板上解受到的數據(ascII碼)顯示正常。
但是當波特率為
115200
時,解受到的數據就出現亂碼的現象!
解決方法:暫無
4.用ARM2103
給電腦發送信息,用串口高度精靈看,一直接收的都是錯誤碼
解決方法:
我用的44b0曾經出現過顯示亂碼的問題,在超級終端上顯示的;
後來才發現是在boot匯編程序里設置了主頻為60M;但是在串口初始化時用的是40M,在c語言程序里忘記重新設定主頻了

⑨ 關於串口接收數據是亂碼的問題

只是做通訊的話沒關系,亂碼不影響你的通訊,通訊協議肯定是以位元組形式定義的,與字元無關。你那個亂碼就是字元庫的問題,數值已經通訊上了。

⑩ 調試串口為什麼會一直列印亂碼

顯示亂碼很可能是沒有使用TTL轉232,手冊里說需要USB轉串口模塊或TTL轉232模塊,很多人誤理解USB轉串口模塊是下圖連接線,那你就大錯特錯了,有部分初學者會把開發套件上的串口rx,tx腳使用杜邦線直接連到下圖所示的串口2,3,腳,另一端USB接到電腦,這樣電腦就出現了亂碼。

熱點內容
php壁紙源碼 發布:2025-07-08 03:04:26 瀏覽:319
android應用層 發布:2025-07-08 02:42:32 瀏覽:301
大唐存儲銷量 發布:2025-07-08 02:41:11 瀏覽:582
腳本怎麼打開 發布:2025-07-08 02:41:06 瀏覽:822
貴州電信iPtv升級伺服器地址 發布:2025-07-08 02:38:48 瀏覽:412
電腦怎麼鏈接本地伺服器 發布:2025-07-08 02:34:22 瀏覽:147
android調試webview 發布:2025-07-08 02:26:28 瀏覽:358
壓縮袋鞋子 發布:2025-07-08 02:21:30 瀏覽:752
為什麼安卓打吃雞感覺有延遲 發布:2025-07-08 02:09:32 瀏覽:168
課題組伺服器如何使用 發布:2025-07-08 02:09:27 瀏覽:44