2010-12-15 51 views
1

好吧,所以我是一個完整的pyobial noob。我正嘗試與一臺實驗室設備進行通信,但發送STX(文本開始)命令時遇到麻煩。到目前爲止,我的基本代碼如下所示:PySerial - 不能發送STX

ser = serial.Serial(0, 19200, timeout=1,parity=serial.PARITY_ODD, rtscts=0) 
ser.write(0x02) #ASCII STX is 0x2 in hex 

但是,當我看到在我的範圍232點的數據,我想送STX,並不像在Hperterminal發送STX命令任何東西。

任何想法?我相信這是非常直接的,我只是忽略了一些微不足道的東西。

謝謝!

回答

0

您確定HyperTerminal和PySerial使用相同的配置。你應該確保以下是一樣的:

  • 波特率(您使用19200)
  • 平價(您正在使用PARITY_ODD)
  • 數據的位數(pySerial默認8)
  • 停止位(pySerial默認爲1)
+0

我做了檢查,並設置相同。 – KMB 2010-12-15 11:49:57

4

串行類中的寫入函數接受字節或字符串。你正在傳遞一個整數,所以結果是未知的,也許是將它轉換爲str,所以你發送的字符'2'。

做正確的方法是:

ser = serial.Serial(0, 19200, timeout=1,parity=serial.PARITY_ODD, rtscts=0) 
ser.write(chr(0x02)) #ASCII STX is 0x2 in hex 
+0

啊,是的,這是訣竅!謝謝!我曾嘗試發送一個字節,但沒有通過它作爲一個字符呢。 – KMB 2010-12-15 12:03:20