串口不重启后正常工作,除非我执行小型机(Serial port doesn't work p

2019-10-29 05:14发布

我的计划是这样开始的:

#!/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配置有一个空的初始化字符串,我总是退出而不复位。

不用说, minicom具有相同的设置AFAICS。 它还对硬件的控制,但我也尝试rtscts=True作为参数传递给Serial()看到没有什么区别(即使我的论点有一个错误,这并不能解释为什么执行后minicom程序工作正常)。

Answer 1:

你的症状是你的程序没有初始化串口终端,它需要适当的模式的指示。

小型机具有相同的设置AFAICS

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

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



文章来源: Serial port doesn't work properly after reboot, unless I execute minicom