我有一个通过串口连接的设备。我有一个与之对话的 python 程序。但这必须通过 bash 脚本启动,该脚本将首先检查它连接到哪个串行端口,并提供必要的权限。然后它将启动 python 脚本,它应该有一种机制来了解它连接到哪个端口(就像 bash 脚本传递给它的参数一样)。
目前我的bash脚本是
#script
sudo chmod 666 /dev/ttyUSB0
sudo chmod 666 /dev/ttyUSB1
sudo chmod 666 /dev/ttyUSB2
如果设备连接到 ttyUSB1,第一行会出现错误 chmod: cannot access ‘/dev/ttyUSB0’: No such file or directory
。这就是我知道它连接到 USB1 的方式。 python 程序有行 ser=serial.Serial('/dev/ttyUSB1',115200, timeout=1)
一旦我知道哪个是正确的串行端口我手动更改。
如何查看设备连接到哪个端口,并通知python程序?
最佳答案
由于您使用 chmod,您可以使用 $?并包含一个 if 语句以中断脚本并加载 python。
举个例子:
#!bash
sudo chmod 666 /dev/ttyUSB0
if [$? = 0]
then
pythonscript /dev/ttyUSB0
这里的里程可能会有所不同,它很老套。您可能还想只使用
if [ -f /dev/ttyUSB0 ]
假设文件仅在连接设备时存在。我没有这方面的具体经验,所以我不会推测将其作为文件进行轮询的长期可行性。我遇到了未连接设备和/dev/中现有条目的问题,因此请密切注意这一点。
进一步阅读引用:
http://www.tldp.org/LDP/abs/html/exit-status.html
http://www.tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html
关于python - 用于检查哪个串行端口已连接的 Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24330372/