我正在开展一个项目,在角度传感器(通过微型)与python GUI之间进行通信
我试图通过UART从微控制器发送2字节的数据(〜范围从0到360,超过255之后的1字节)
这就是我分割数据的方式,并将它们组合在接收方
angle = readangle();
send[0] = angle ;
send[1] = angle >> 8;
然后回到python
self.ser = serial.Serial("COM6", 115200, timeout=0.05)
f = self.ser.readline(2)
.
.
.
.
x = ord(self.f[1])
x = x << 8 | ord(self.f[0])
self.angle = x # this updates the angle value in the GUI
它几乎所有时间都给出了正确的值但是! 该值突然指向零,这使我的GUI深入研究(每30-50个样本一次)
%up0EEA$ ³ iam here ³ 179 %up0EEA$ ³ iam here ³ 179 . . . %up0EEA$ Ê iam here Ê 202 %up0EEA$ ç iam here ç 231 %up0EEA$ iam here 257 %up0EEA$ iam here 261 %up0EEA$ Í ---HERE ("Is that a white space before that ASCII " ) iam here Í 0 %up0EEA$ ” iam here ” --- AGAIN !! 0 %up0EEA$ î iam here î 238
现在!我很惊讶如何摆脱我的串行数据中那个花哨的隐形字符
答案 0 :(得分:0)
我认为我的代码有很多self.ser.open()
和self.ser.close()
命令self.ser.flushInput()
解决了我的问题
f = self.ser.readline()
self.ser.flushInput()