I have managed to track down the reason for this, as the fact that the SM will send an indeterminant amount of null characters (0x0), before its response to the first command you send.
Typical command sequence according to the documentation
Code: Select all
PC -> 0xD //Check to see if SM is alive
SM -> 0xE0 0x08 0x3E
Code: Select all
PC -> 0xD
SM -> 0x0 0x0 0x0 (... some random number of 0's) 0xE0 0x08 0x3E
Code: Select all
PC -> 0xD
SM -> 0x0 0x0 0x0 (... some random number of 0's) 0xE0 0x08 0x3E
PC -> (Reads chars until 50-100ms timeout)
PC -> 0xD
SM -> 0xE0 0x08 0x3E