I'm having some issues with pyserial and windows (on linux it works fine with the same code); I seem to be writing erroneous bytes.
The code even works fine on the same machine inside a debian VM, So Im pretty sure its a software thing.
I'm using Python 2.7.6 32bit, pyserial 2.7 but have tried others (2.5 and 2.4) all exibit the same errors.
Interestingly enough, the errors are much less frequent when the baudrate is increased to 115200.
This is the relavant bit of my code:
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()
Which when tested gave the following output: (writing to an autobauding device with echo on):
***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"
I can confirm that the stuff after "received:" (sans quotes and with the exception of the "ERROR" and some CR NL chars which are generated by the device) is what is actually received by the device:
A\xa8+CMGR\r
AT+C\x87SN\r
AT+CS\xd1\r
A\xa8+CREG?\r
If anyone can suggest a fix I would be grapefruit