如何立即记录串行数据?

如何立即记录串行数据?

我目前正在研究一个电子项目,该项目使用微控制器通过 USB 将信息发送到计算机,然后从串行端口读取信息。我可以使用 screen 读取数据,并使用 stty 记录数据。我遇到的问题是,串行端口(特殊文件?)在设备启动之前不会显示在 /dev 中。我手动启动 screen 或 stty,但错过了重要的启动消息。

有没有办法等待串行端口出现,然后立即记录或查看传入的数据?

答案1

我知道你会期待/dev/ttyUSB0出现,你可以使用 inotify 系统等待它出现,然后执行命令:

inotifywait -m -e create --format %f  /dev |
while read file
do      if [ "$file" = ttyUSB0 ]
        then  cat /dev/ttyUSB0
        fi
done

上面打印了/dev目录中创建的每个新文件(或设备)的基本名称,例如“ttyUSB0”。


创建通知非常快,udev 还没有时间将设备更改为组拨出。要等到完成,您还需要查找属性更改事件,如下所示:

inotifywait -m -e create,attrib --format %f  /dev |
while read file
do      if [ "$file" = ttyUSB0 ]
        then  ls -l /dev/ttyUSB0
              group=$(stat --format=%G /dev/ttyUSB0)
              if [ "$group" = dialout ]
              then  cat /dev/ttyUSB0
              fi
        fi
done

相关内容