我有尝试连接到 USB ECG 传感器设备以进行连续数据流的代码:
import serial
s = serial.Serial()
s.port = "/dev/tty.my-device"
s.open()
当我运行这段代码时,出现以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "create_port.py", line 7, in <module>
s.open()
File "/Users/dimachy/anaconda/lib/python2.7/site-packages/serial/serialposix.py", line 289, in open
self.fd = os.open(self.portstr, os.O_RDWR|os.O_NOCTTY|os.O_NONBLOCK)
OSError: [Errno 16] Resource busy: '/dev/tty.my-device'
我曾尝试使用 sudo 运行上面的代码但没有成功。我已经尝试在我的计算机上的网络首选项中使 USB 服务处于非事件状态,这也没有改变上述错误。
当我使用 Thomas 在这里的回答中的代码扫描可用端口时:
Listing available com ports with Python
我发现只有一个端口可用,列为蓝牙端口。/dev/tty.my-device 端口未出现在此扫描中。
当通过 USB 插入 ECG 设备时,它会立即开始传输数据(无需调用设备即可启动)。我猜这可能与我遇到的“资源繁忙”错误有关。
我是网络编程的新手,所以我可能遗漏了一些明显的东西。有人有什么建议吗?
最佳答案
您可以尝试查看正在使用该"file"的进程(在 unix 系统中,所有串行设备都只是要读取的文件)。尝试使用 fuser 列出使用您的文件的进程。 http://en.wikipedia.org/wiki/Fuser_(Unix)
在你的情况下是这样的: $ fuser/dev/tty.my-device
关于python - "Resource busy"连接到 USB 端口时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26542231/