【问题标题】:Can't connect to device via RFCOMM because 'Resource Busy'无法通过 RFCOMM 连接到设备,因为“资源忙”
【发布时间】:2015-06-17 23:18:43
【问题描述】:

我正在尝试打开与 Lego EV3 积木的连接,其串行端口为 /dev/tty.EV3-SerialPort,我在 mac 10.6.8 上。执行此操作时资源繁忙,但是当我使用其他 API 进行连接(不通过 pyserial 写入串行端口)时,它不会显示错误。我想找到一种方法来解决这个错误。为什么它很忙,所有其他蓝牙应用程序都被禁用。这是我的代码:

test.py:

import serial
import time
ser = serial.Serial('/dev/tty.EV3-SerialPort', 19200, timeout=1)  # open first serial port
ser.close()
ser.open()
time.sleep(1)
ser.close()
print "closed"

这是它输出的错误:

File "test.py", line 7, in <module>
ser.open()
File "/Library/Frameworks/Python.framework/Versions/2.7/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.EV3-SerialPort'

一个弹出窗口也会显示:

A Bluetooth serial failure has occurred.
Failed to open an RFCOMM serial channel.
Check if authentication needs to be enabled in your device

【问题讨论】:

    标签: python macos bluetooth pyserial lego


    【解决方案1】:

    我已经能够通过将串行端口作为文件打开而不是使用串行模块来与 EV3 通信。

    with open('/dev/tty.EV3-SerialPort', 'w+', 0) as bt:
    

    完整示例请参见https://bricks.stackexchange.com/a/4257/3498

    【讨论】:

    • 我会研究一下,这是许多图书馆使用的。我有一个问题,是否有类似的方法来捕获传入的数据包(来自 ev3)?谢谢你的回答!
    • 谢谢!刚刚尝试使用incoming = bt.read(),它抛出了错误IOError: File not open for reading。有什么建议吗?
    • 阅读手册 ;-) docs.python.org/2/library/functions.html#open 'w+' 应该可以解决问题。
    • 哦,我是个白痴,我知道这一点。我认为这是一个与 EV3 相关的问题。谢谢
    【解决方案2】:

    我完全使用了您的示例并且对我有用,请查看(在我的情况下,连接名称不同,如下所示:)。

    EV3 = serial.Serial('/dev/tty.EV3-N1-SerialPort', 19200, timeout=1)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-02
      • 2012-01-28
      相关资源
      最近更新 更多