配置长命令的串口

时间:2014-07-31 06:40:14

标签: python pyserial

假设您尝试通过串行端口与shell进行交互。当你到达终点时会发生什么,<space><carriage return>被插入。使用screenminicom时这已经不舒服了,因为它通常只是继续写在同一行(缺少换行符),但是当你需要解析输出流时会导致错误的代码。我想知道如何配置我的串行连接,只是在行的末尾什么都不做。

示例:

$ 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"

通过更改解析器来解决此问题不是一种选择,因为在我的情况下解析是由第三方库完成的。也只是将行长度设置为非常高的数字可能会起作用,但这不是我喜欢做的事情。当线路已满时,我宁愿控制端口的行为。

1 个答案:

答案 0 :(得分:2)

问题可能与pyserial无关。如果使用write命令将数据发送到串行端口,它只会将数据发送到串行端口,无论发送什么(甚至是二进制数据)。这同样适用于read

因此,额外的空格和换行符由shell插入连接的另一端。如果不配置另一端,可能没有合理的解决方法。例如,在Linux中,您可能需要尝试setterm -linewrap off或只是将终端宽度更改为stty足够大。

如果您的远程终端是Unix / Linux,我认为这个问题将在https://unix.stackexchange.com/中得到更完整的答案。