我已經閱讀了很多問題和答案,但沒有找到任何解決方案。可能是我的問題不對,但我需要一些指導。我在使用從我的Arduino設備讀取數據的Linux中使用串行端口。無論何時我想從Arduino發送數據到Linux,我都會首先發送兩個字節,表示來自Arduino的總字節數。我將這兩個字節轉換爲整數值並開始從串行端口讀取數據。再說了,我想從Ardiuno發送300個字節的Linux,我只是寫{1,44},然後再由下式這個1和44字節轉換成INT:從串口Linux讀取NULL字符C
char data[] = {1, 44};
int to_read = data[0]
to_read = to_read << 8;
to_read = to_read | data[1];
return to_read;
這會給我300 int值,這就像魅力一樣工作。但是當我必須讀取少於255的數據時纔會出現問題。假設我想讀取100個字節,那麼前兩個字節將是{0,100}。 0是空字符,串口不處理它(我手動寫0到串口,它總是給我寫0字節),並且我的所有序列都出錯了。所以我的問題是我可以從串口閱讀空字符或有人請給我更好的解決方案..
在此先感謝。
理由#爲什麼我恨它,當人們談論字符時說「空」 18。 「Null」基本上意味着「無值」 - 即:它位於允許值的範圍之外 - 而「空字符」是代碼爲0的字符。IE:允許的值,如果有點奇怪的話。請用NUL代替;這就是ASCII表格中的內容。 :P – cHao
要點是,字符0仍然是一個正常字符。它恰好也對C具有特殊含義,當使用nul結尾的字節串*時。另一方面,串行端口並不在乎。 – cHao
您可能想向我們展示代碼如何在兩側設置串行設備,以及如何通過這些設備發送和接收數據。 – alk