飲歌長嘯
2022-10-13 13:11:22
java 串口通訊,發(fā)送大于128的數(shù)時,收到的卻是0xff,而我發(fā)送小于128的數(shù)據(jù)時,接收到的數(shù)據(jù)都正常,當(dāng)發(fā)送大于128的數(shù)時,收到的卻是0xff,請問如何處理?byte[] = new byte {0x11,0x22,0x33,0x44,0x55,0x66,0x77,(byte)0x88,(byte)0x99,(byte)0xAA};接收到的數(shù)據(jù)為,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0xff,0xff,0xff后面大于128的都變成了0xff,因為java串口通訊發(fā)送的int,有符號的數(shù)據(jù),當(dāng)數(shù)據(jù)大于128時,就變成了負(fù)數(shù),請問這種如何處理.我直接接計算機(jī)的TX,RX,是正常的,即發(fā)出是什么,就收到什么數(shù)據(jù),沒有變化.但是如果發(fā)送給帶linux操作系統(tǒng)的ARM板就會出現(xiàn)發(fā)送大于128數(shù)據(jù),變成0xff,其它的正常.
3 回答

躍然一笑
TA貢獻(xiàn)1826條經(jīng)驗 獲得超6個贊
通用的方案:發(fā)送前將數(shù)據(jù)用Base64編碼,接受數(shù)據(jù)后用Base64解碼。
Base64編碼之后的長度會比沒編碼前多大約1/2的字節(jié)數(shù),所以自己看看能不能接受。

慕桂英546537
TA貢獻(xiàn)1848條經(jīng)驗 獲得超10個贊
作為一個路過的人,給你提點(diǎn)建議:
1. 沒有源代碼很難搞清楚你到底遇到了什么問題,除非和你碰上了同樣問題并解決了的人
2. 你至少要把你發(fā)送部分代碼,和接收部分代碼給我們看看吧
3. 既然
我直接接計算機(jī)的TX,RX,是正常的,即發(fā)出是什么,就收到什么數(shù)據(jù),沒有變化.
這個成立,那么我覺得和發(fā)送的程序應(yīng)該沒多大關(guān)系
添加回答
舉報
0/150
提交
取消