2010-12-01 32 views
1

我想使用PySerial通過串口發送消息。串行構造函數的其中一個參數是'bytesize'。我一直在嘗試serial.SEVENBITS和serial.EIGHTBITS,並沒有注意到一個區別。文檔有點含糊,我對Python和串行通信都很陌生。 這只是設置一個字節可以容納的最大值還是與簽名字節有關?任何人都可以清楚爲什麼我會使用8位以上的7位? 我一直在尋找,但還沒有找到答案。PySerial模塊中的'bytesize'

謝謝

回答

1

這是指每個傳輸字符中的數據位數。從wikipedia

數據位

數據比特的在每個 字符的數目可以是5(對於博多碼),6(很少使用) ,7(對於真ASCII),8 (對於任何類型的數據,因爲這與一個字節的大小相匹配 )或9(很少使用 )。 8個數據位幾乎是 普遍用於較新的 應用程序。 5或7位一般 只適用於舊設備 ,如電傳打印機。

大多數串行通信設計 首先在每個字節 LSB(最低有效位)內發送數據位。 本標準也被稱爲 「小端」。也可以,但很少使用 ,是「big endian」或MSB (最高有效位)第一個串行 通信。 (有關位排序的更多信息,請參閱 的字節順序。) 位的順序通常不可配置,但 數據只能在發送 之前進行字節交換。

+0

重新「大多數串行通信設計讓每一個字節中的數據位LSB」大多數串行硬件接口的海報是有可能與pyserial抽象位訂購了,只提供一個字節遇到接口。另一方面,LSB標準[UART(包括RS-232)],但MSB標準[SPI,I2C] – SingleNegationElimination 2010-12-01 20:00:15

3

從歷史上看,這是共同的,只通過串行連接,它融入七位發送ASCII文本,第八位將被用作奇偶校驗標記這可能表明,如果數據是正確傳輸。

由於奇偶校驗不會在偶數位上捕獲錯誤,並且根本不能糾正數據,所以它不是那麼有價值,現代實踐是使用8位數據並進行錯誤檢測,在較高層的協議中進行校正。

簡短的回答是你可能需要8位,但它取決於串行連接的另一端預期。

更新: 從您的其他問題,它聽起來像你編程連接的兩端,並校驗你的消息,所以它是最直接的使用8位。

+0

感謝羅素,非常感謝:) – Jack 2010-12-01 20:04:27