尝试使用pySerial模块从串口读取数据,我无法重建从微控制器(MSP430)发送的数据。
微控制器编程如下:
Serial.print(0x20); //32 in decimal
delay(200);
Serial.print(0x20); //32 in decimal
delay(200);
Serial.print(0x00); //0 in decimal
delay(500);
Serial.print(0x15); //21 in decimal
delay(500);
以上代码在无限循环中执行。
在Python代码中,我只是使用以下代码读取120个字节并检查串口变量。
import serial
ser = serial.Serial('/dev/ttyACM1', 115200, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS,)
cycles_needed = 120
chars=[]
s=ser.read(cycles_needed)
for i in range(len(s)):
print s[i]
上述代码的输出是
3
2
3
2
0
2
1
3
2
3
2
0
2
1
有人可以解释一下为什么数据被分成半字节,理想情况下,它必须逐字节地读取数据。
答案 0 :(得分:2)
Arduino documentation of Serial.print()
说:
将数据作为人类可读的ASCII文本打印到串行端口。
因此,值32最终为两个字符3
和2
。
要编写二进制数据,请改用write()
。