2013-02-22 29 views
1

我想向設備發送兩行ASCII文本,但設備讀取這兩行作爲一行附加。是延遲還是錯誤的結束字符?我似乎看不出問題。使用pySerial發送的ASCII文本變成附加在終端設備

import serial 
ser = serial.Serial('/dev/cu.usbserial-FTVFV0X7', 19200, timeout=10) 
ser.write("x0") 
ser.flush() 
ser.write("11") 
ser.flush() 

端設備接收此作爲x011代替x011

當從普通的終端程序進行測試時,單獨接收兩條線路是沒有問題的。

+0

它還會收到什麼? 0x0 + 11 = 0x011。 – 2013-02-22 18:53:24

+0

@肯,請不要誤會。我正在談論ASCII字符而不是HEX。 – JavaCake 2013-02-22 18:54:14

+0

@bernie,實際上是做了一個新行,但問題是第二行是作爲'\ n11'接收的。新的char char將會搞亂一切。 – JavaCake 2013-02-22 18:56:30

回答

0

許多硬件串行設備使用回車來表示行或指令的結束。不知道你想傳達問心無愧(或預計協議)是什麼設備,我可能會建議嘗試

ser.write("x0\r") 
ser.flush() 
ser.write("11\r") 

正如documentation表示,pySerial不支持EOL參數readline()不再所以,如果設備正在向您回覆(並且正在使用\r已終止的行),那麼您應該按照建議進行操作,並使用io.TextIOWrapper以及適當的超時值來解析傳入數據。