我的程序是这样开始的:
{
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()
程序正常运行。
答案 0 :(得分:1)
您遇到的症状表明您的程序未将串行终端初始化为所需的正确模式。
minicom具有相同的设置AFAICS
好像你选择猜测而不是收集实际数据
在使用 minicom 之前和之后使用stty -a -F /dev/ttyUSB0
主要区别在于,默认情况下,termios模式可能是规范的(重启后), minicom 会使其处于非规范模式。
在启动程序之前尝试使用stty raw -F /dev/ttyUSB0
。