在python

时间:2015-07-17 20:23:43

标签: user-interface pyserial

我正在开展一个项目,在角度传感器(通过微型)与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

现在!我很惊讶如何摆脱我的串行数据中那个花哨的隐形字符

1 个答案:

答案 0 :(得分:0)

我认为我的代码有很多self.ser.open()self.ser.close()

命令self.ser.flushInput()解决了我的问题

f = self.ser.readline()
        self.ser.flushInput()