串口通信仅在使用 screen 后才工作

我在使用串口 UART 接口编程时,注意到了奇怪的行为。首先我为串行端口设置了正确的波特率。

stty-F /dev/ttyS0 speed 9600

然后我用 LUA 进行阅读:

rserial=io.open('/dev/ttyS0','r')
print (Reading)
repeat
    local line=rserial:read(1)
    if line == "EOD" then
       EOD = true
       rserial:close()
    elseif line then
       lines = lines .. line
    end
until EOD == true
print (lines)

通常情况下,我只会得到一个"?"的答案。但是当我尝试通过 screen 连接设备时,它可以正常工作。

screen /dev/ttyS0 9600

关闭 screen 连接后,我重新尝试了我的 LUA 脚本,奇怪的是它突然可以正常工作了。在"?"的位置上,我收到了一个"OK"。

最后我的问题是:screen 是否更改了我不知道的任何配置?如果是,我应该如何在 LUA 中设置它们?我弄不清我缺少了什么。 谢谢您的帮助。 最好的问候。

点赞