假设您尝试通过串行端口与shell进行交互。当你到达终点时会发生什么,<space><carriage return>
被插入。使用screen
或minicom
时这已经不舒服了,因为它通常只是继续写在同一行(缺少换行符),但是当你需要解析输出流时会导致错误的代码。我想知道如何配置我的串行连接,只是在行的末尾什么都不做。
示例:
$ python -i -c "import serial; s=serial.Serial('/dev/ttyUSB3', 115200, timeout=1.5)"
>>> s.write("echo \"123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123213\""); print s.readall().encode('string-escape')
211
echo "12312312312312312312312312312312312312312312312312312 \r31231231231231231231231231231231231231231231231231231231231231231231231231231231 \r23123123123123123123123123123123123123123123123123123123123123123123213"
通过更改解析器来解决此问题不是一种选择,因为在我的情况下解析是由第三方库完成的。也只是将行长度设置为非常高的数字可能会起作用,但这不是我喜欢做的事情。当线路已满时,我宁愿控制端口的行为。
答案 0 :(得分:2)
问题可能与pyserial
无关。如果使用write
命令将数据发送到串行端口,它只会将数据发送到串行端口,无论发送什么(甚至是二进制数据)。这同样适用于read
。
因此,额外的空格和换行符由shell插入连接的另一端。如果不配置另一端,可能没有合理的解决方法。例如,在Linux中,您可能需要尝试setterm -linewrap off
或只是将终端宽度更改为stty
足够大。
如果您的远程终端是Unix / Linux,我认为这个问题将在https://unix.stackexchange.com/中得到更完整的答案。