我有一个系统,在串口上发现了一些我不希望看到的奇怪行为。我以前偶尔会在usb转串口适配器上看到这种情况,但现在我更频繁地在本机串口上看到了这种情况。
该系统被设置为运行自动化测试,并且将首先执行一些任务,导致大量数据从串行设备输出,而我没有打开端口。设备也将重置自己。只连接了tx/rx线路。没有流控制。
完成这些任务后,测试软件会打开串口并立即失败,因为它得到了意外的响应。当我重现这个问题时,我发现如果在终端程序中打开串口,我会立即看到几千字节的旧数据(似乎是在关闭端口时发送的)。一旦我关闭了这个程序,我就可以按预期运行测试。
这是什么原因造成的?Linux如何处理关闭设备时串口的缓冲区?如果我打开一个设备,让它输出内容,然后关闭而没有从中读取,这是否会导致同样的问题?
该系统被设置为运行自动化测试,并且将首先执行一些任务,导致大量数据从串行设备输出,而我没有打开端口。设备也将重置自己。只连接了tx/rx线路。没有流控制。
完成这些任务后,测试软件会打开串口并立即失败,因为它得到了意外的响应。当我重现这个问题时,我发现如果在终端程序中打开串口,我会立即看到几千字节的旧数据(似乎是在关闭端口时发送的)。一旦我关闭了这个程序,我就可以按预期运行测试。
这是什么原因造成的?Linux如何处理关闭设备时串口的缓冲区?如果我打开一个设备,让它输出内容,然后关闭而没有从中读取,这是否会导致同样的问题?
gpsd
或logind
正在访问关闭的端口寻找GPS设备或登录连接,并推测性地更改端口速度规格。 - wallykstty -F /dev/ttyWhatever
,从未遇到过问题。 - wallyk