Python 为长命令配置串行端口

Python 为长命令配置串行端口,python,pyserial,Python,Pyserial,假设您试图通过串行端口与shell交互。当您到达行的末尾时,将插入一个。当使用屏幕或minicom时,这已经很不舒服了,因为它通常只是在同一行上继续写入(换行符丢失),但当您需要解析输出流时,它会导致错误代码。我想知道如何配置我的串行连接,以便在线路的末尾不做任何事情 例如: $ python -i -c "import serial; s=serial.Serial('/dev/ttyUSB3', 115200, timeout=1.5)" >>> s.write("echo

假设您试图通过串行端口与shell交互。当您到达行的末尾时,将插入一个
。当使用
屏幕
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"

通过更改解析器来解决这个问题不是一个选项,因为在我的例子中,解析是由第三方库完成的。另外,仅仅将行长度设置为一个非常高的数字可能会起作用,但这不是我喜欢做的。我宁愿在线路满时控制端口的行为。

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

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


如果您的远程终端是Unix/Linux,我想这个问题将在中得到更完整的答案。

不需要任何借口,您所写的正是我想要的答案!是的,其他工具也会出现问题。我刚刚添加了pyserial,因为它使问题更加明显。我认为setterm linewrap命令可能正是解决这个问题的方法,遗憾的是服务器端没有安装这个工具。我看看能不能找到它。谢谢