2011-08-21 58 views
0

我正在爲通過串口連接的設備編寫驅動程序。不幸的是,第9個數據位指示該字符應該被解釋爲命令還是數據。如何從串口收到的字符中獲取校驗位?

使用內置奇偶校驗不適用於我,因爲錯誤由附加字符(NUL)指示。然後我不知道我收到了兩個數據字節還是一個奇偶校驗錯誤。

有沒有辦法在其他地方得到這個奇偶校驗位?

編輯:顯然,這個問題也存在於Windows上(見http://gilzu.com/?p=6)。它最終重寫了串行驅動程序。這也是我在Linux上的唯一選擇嗎?

+0

沒有發佈這個答案,因爲我不確定它是否會幫助你,但你有沒有考慮過使用'PARMRK'?如果是這樣的話,奇偶校驗錯誤的字符會以'\ 377 \ 0'爲前綴,即'0xFF 0x00' – Hasturkun

+0

@Hasturkun:謝謝你的想法,但我不知道我是否收到0xFF和0x00從我的設備或從奇偶校驗器。 – SecStone

+0

是否由UART處理奇偶校驗? AFAIC你無法真正瞭解它,但你可以設置任何奇偶校驗來獲得所有8位。 – Keith

回答

0

正如我所看到的,您應該可以原樣使用PARMRK,假設\377 \0模式不太可能出現在您的輸入中。否則,是的,您可能會修改您的串行驅動程序以將奇偶校驗(或者說,如果此字節有奇偶校驗錯誤)預先添加到每個字節。不過,我會和前者一起去的。