串列埠亂碼疑雲

2021-10-01 18:02:28 字數 1537 閱讀 8087

首先檢查波特率的設定,沒有問題,想到亂碼是由於編碼與解碼不一致造成的,就又檢查android studio中的編碼設定:

再把收到的資訊顯示出來就是:

可見,從藍芽模組轉了一圈後回傳的資訊與傳送的資訊是完全一致的。顯然,目前這個亂碼的鍋應該由串列埠工具來背啊。那麼,選用不同的串列埠工具會有什麼結果呢,我試了不少於10種各式串列埠工具,大多數串列埠工具顯示都是亂碼,而且,這些串列埠工具都沒有編碼選擇這個功能,只能按照工具本身設定的編碼方式來解碼,如果串列埠工具接收到的資訊與工具設定的編碼不致,就會產生亂碼。但是,我還真找到兩款在utf-8編碼下不產生亂碼的串列埠工具:

第一款是格西烽火串列埠助手:

從這兩個圖能看出格西烽火串列埠工具可以很完美的顯示utf-8編碼的字元,因為它的編碼相同的,所以在所有的終端都會顯示相同的資訊。但是,它給我的註冊時間只有幾天,到年底,到期後不知道是不是免費使用的啦。還有就是貌似沒有gbk編碼選項。

第二款是 深藍串列埠助手,它的顯示效果如下圖:

這個是使用深藍串列埠助手時從藍芽返回的資訊:

後來總算是找到了在通常使用的串列埠工具上正確的顯示中文字元的方法,那就是使用getbyte()方法,把原字元轉換成位元組再轉成目標編碼方式顯示:

在這段**中,res是中文的字串,gbk是要轉換成的目標編碼,用這個方法在普通串列埠工具上的顯示效果:

然而,雖然在串列埠工具上能正確的顯示中文字元了,但手機上和從藍芽返回的資訊卻成了亂碼,下圖是藍芽模組接收到資訊後透傳的資訊:

同理,用string string=new string(「中文字串」.getbytes(「編碼1」),「編碼2」)方法也能達到這個效果,其中編碼1是中文字串現在的編碼,編碼2要轉換成的目標編碼。

crontab用法疑雲

crontab的教程裡面,一般都說 n 表示每隔n分鐘 小時執行一次。偶爾的教程裡會講到 這個n應該被60整除才行。我在網上基本上沒有搜到,如果n不被60整除的時候,會是怎樣?問題起因最開始在於 個人有個crontab任務,希望設定成40分鐘執行一次。但是設定了 40之後發現,任務總是會在整點和40...

串列埠顯示亂碼的原因總結

1.usb轉串列埠的問題 解決方法 我曾用乙個12塊錢的那種u轉串,出現過亂碼,換乙個好的就沒事了 2.波特率不同步的問題 解決方法 兩邊設定的波特率的一樣,會導致這樣的問題 3.在通訊波特率為 38400 時,通訊正常,arm 板上解受到的資料 ascii碼 顯示正常。但是當波特率為 115200...

串列埠顯示亂碼的原因總結

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!1.usb轉串列埠的問題 解決方法 我曾用乙個12塊錢的那種u轉串,出現過亂碼,換乙個好的就沒事了 2.波特率不同步的問題 解決方法 兩邊設定的波特率的一樣,會導致這樣的問題 3.在通訊波特率為 38400 時,通訊正常,arm 板上解受到的資料 ...