我有一个小循环,它应该从串行端口读取一些多行、长度不明(有时相当大)的文本数据,并将其写入一个文件:
while True:
data = port.readline()
file.write(data)
if not data:
break
我有正确的端口设置,整个程序在windows机器上运行得很好。当我在Linux机器上运行它时,它仍然接收数据,但是软件流控制无法工作——相反,XON
和{miniterm
,它包含在pySerial
中,它给出了相同的结果。在
有什么想法吗?在
为文件和端口添加了行:
^{pr2}$除了我写一个字符串到另一个设备开始发送之外,没有什么比这更多的了,因为我看到的是返回数据的响应。我也尝试过打印到控制台而不是写入文件。同样的事情-超限和打印控制代码。在
更新:我也尝试过一次读取一个字节,而不是整个行,并尝试过其他波特率-所有这些都没有改变。在
更新2:一直在做一些阅读和测试。用minicom测试。同样的结果。手动验证端口是否使用“stty-a”正确设置(尽管我不信任它,因为它可能会根据我读到的内容保存和恢复设置)。可能是termios的问题?在
也许你可以尝试使用这个串行捕获代码。它也有Pyserial方法,但它被简化了。如果您更改换行符以满足您的需要,换行符有一个拆分公式可以帮助您实现流控制。在
https://github.com/DaDaDadeo/Batch-Capture/blob/master/serial_to_tcp.py
尝试从收到的数据中删除不可打印的字符。在
相关问题 更多 >
编程相关推荐