串行数据导致的字符串错误

时间:2017-08-21 16:07:31

标签: python

我对python很新,目前只使用它来尝试从我的微控制器绘制数据。

import serial
import numpy
import matplotlib.pyplot as plt
from drawnow import *

port = serial.Serial('com4',9600)

while True:
   while (port.inWaiting()==0):
        pass
   sstring = port.readline()
   dataArray = sstring.split(',')

   Pterm = float(dataArray[0])
   Iterm = float(dataArray[1])
   Dterm = float(dataArray[2])
   Error = float(dataArray[3])

   print Pterm
   print Iterm
   print Dterm
   print Error
   print

现在,有时我收到数据没有问题;

Data that was successfully received

但有时候我会收到像

这样的消息
  • 格式字符串
  • 中无法识别的字符0
  • 无法将字符串转换为float
  • ' ASCII'编解码器不能解码位置35中的字节0xa9:序数不在范围内(128)

我从微控制器串行传输的字符串总是看起来像上图,但幅度不同。

我可以调整我的代码来解决甚至可能以脚本stil一直运行的方式忽略这些错误吗?

1 个答案:

答案 0 :(得分:0)

似乎当我在我的代码中添加了一个解码方法时,它开始变得更好了。

我更改了sstring = port.readline()

sstring = port.readline().decode('ascii').strip()

感谢您的帮助,我将确保包含异常处理。