除非我执行minicom,否则串行端口在重启后无法正常工作

时间:2017-08-21 11:10:28

标签: linux serial-port pyserial

我的程序是这样开始的:

{
    TypeName" : "Not a Channel Member"
}

程序的下一部分向设备发送内容,然后期待响应。当我在重新启动后运行它时,它没有找到它所期望的响应并以错误终止(这是正确的行为,除了它没有看到它预期的响应)。

但是,如果我运行#!/usr/bin/env python import sys from serial import Serial, EIGHTBITS, PARITY_NONE, STOPBITS_ONE SERIAL_DEVICE = '/dev/ttyUSB0' ser = Serial(SERIAL_DEVICE, timeout=2, baudrate=9600, bytesize=EIGHTBITS, parity=PARITY_NONE, stopbits=STOPBITS_ONE) 并通过minicom与设备通话,则可以正常使用。如果然后我关闭minicom并运行该程序,它运行正常。 minicom配置有一个空的初始化字符串,我总是退出而不重置。

毋庸置疑,minicom具有相同的AFAICS设置。它也有硬件控制,但我确实尝试minicom作为rtscts=True的参数并没有看到任何区别(即使我在参数中有错误,这也没有解释为什么之后执行Serial()程序正常运行。

1 个答案:

答案 0 :(得分:1)

您遇到的症状表明您的程序未将串行终端初始化为所需的正确模式。

  

minicom具有相同的设置AFAICS

好像你选择猜测而不是收集实际数据 在使用 minicom 之前和之后使用stty -a -F /dev/ttyUSB0 主要区别在于,默认情况下,termios模式可能是规范的(重启后), minicom 会使其处于非规范模式。

在启动程序之前尝试使用stty raw -F /dev/ttyUSB0