我用pySerial从arduino发送一些数据。在
我的数据看起来像
bytearray(DST, SRC, STATUS, TYPE, CHANNEL, DATA..., SIZEOFDATA)
其中sizeofData是一个所有字节都被接收的测试。在
问题是,每当一个字节为零时,我的python程序就会停止读取:
^{pr2}$例如,当我发送bytearray(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)
时,一切正常。但是当我发送类似bytearray(1,2,3,4,0,1,2,3,4)
的内容时,我并没有看到所有内容都以零开头。在
问题是我不能避免发送零,因为我只是发送“内存转储”,例如,当我发送一个浮点值时,可能有零字节。在
如何告诉pyserial不要忽略零字节。在
我已经看过PySerial的源代码,问题出在PySerial的
FileLike.readline
(in http://svn.code.sf.net/p/pyserial/code/trunk/pyserial/serial/serialutil.py)的实现中。冒犯的功能是:明显的问题是
^{pr2}$if c:
行。当c == b'\x00'
时,它的计算结果为false,并且例程将脱离读取循环。最简单的方法是自己重新实现,比如:为了澄清您的注释,这是对
Serial.readline
方法的替代,该方法将使用空字节并将它们添加到返回的字符串中,直到它碰到eol
字符,我们在这里将其定义为"\n"
。在使用新方法的一个示例是,使用file对象替换套接字:
希望这有点道理。在
相关问题 更多 >
编程相关推荐