无法通过RFCOMM连接到设备,因为“资源忙”

问题描述 投票:1回答:2

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

test.朋友:

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
2个回答
2
投票

我只需打开串口作为文件而不是使用串行模块就可以与EV3通信。

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

有关完整示例,请参阅https://bricks.stackexchange.com/a/4257/3498


0
投票

我使用了你的例子并且对我有用,检查出来(在我的例子中,连接名称是不同的,如下所示:)。

EV3 = serial.Serial('/dev/tty.EV3-N1-SerialPort', 19200, timeout=1)
© www.soinside.com 2019 - 2024. All rights reserved.