2013-12-11 56 views
0

我有一些pyserial和windows的問題(在Linux上它使用相同的代碼工作正常);我似乎在寫錯誤的字節。PySerial寫入錯誤(波特率敏感)

該代碼甚至可以在debian虛擬機內的同一臺機器上正常工作,所以我非常肯定它的軟件。我使用Python 2.7.6 32位,pyserial 2.7但嘗試過其他人(2.5和2.4)都顯示相同的錯誤。

有趣的是,這些錯誤是不頻繁時,波特率增加到115200

這是我的代碼的初步認識一下:

ser = serial.Serial() 
ser.timeout = 0.1 
ser.port = "COM74" 
ser.baudrate = 9600 
ser.bytesize = 8 
ser.parity = "N" 
ser.stopbits = 1 
ser.open() 

ser.write("AT+CMGR\r") 
search("OK", 5, rec, ser) 
ser.write("AT+CGSN\r") 
search("OK", 5, rec, ser) 
ser.write("AT+CSQ\r") 
search("OK", 5, rec, ser) 
ser.write("AT+CREG?\r") 
search("OK", 5, rec, ser) 

ser.close() 

哪個測試時給出了下面的輸出:(寫入回波自動匹配裝置):

***Timeout***, expected: "OK" received: "A\xa8+CMGR\r" 
***Timeout***, expected: "OK" received: "AT+C\x87SN\r\r\nERROR\r\n" 
***Timeout***, expected: "OK" received: "AT+CS\xd1\r" 
***Timeout***, expected: "OK" received: "A\xa8+CREG?\r" 

我可以確認「rece ived:」(沒有引號並用的異常‘錯誤’及由該設備產生的一些CR NL字符)就是由該設備實際收到的:

A\xa8+CMGR\r 
AT+C\x87SN\r 
AT+CS\xd1\r 
A\xa8+CREG?\r 

如果任何人都可以提出一個修復我將葡萄柚

回答

0

我使用AT命令與Windows和串口,我沒有這些問題,我的猜測是,這是有關編碼。

能否請您試試這個AT Commander

嘗試連接你的設備,並查看是否得到正確的響應,如果是相同的,那麼問題是在你的設備。

+0

問題根本不在於設備,腳本在Linux上適用於同一設備,並且通過minicom/screen正常通信。 – jayjay