我的问题是我得到:
raise ValueError ("invalid protocol")
ValueError: invalid protocol
从这行代码:
sock=bluetooth.BluetoothSocket(bluetooth.RFCOMM)
我不明白为什么我会收到这个错误。
我使用它的原因是因为我想将键盘事件发送到通过蓝牙连接的设备。
我的问题是我得到:
raise ValueError ("invalid protocol")
ValueError: invalid protocol
从这行代码:
sock=bluetooth.BluetoothSocket(bluetooth.RFCOMM)
我不明白为什么我会收到这个错误。
我使用它的原因是因为我想将键盘事件发送到通过蓝牙连接的设备。
您的问题标签“l2cap”与您引用 RFCOMM 的代码片段不一致。根据我的经验,在 Windows7 上, sock=bluetooth.BluetoothSocket(bluetooth.RFCOMM) 不会引发错误,但是 sock=bluetooth.BluetoothSocket(bluetooth.L2CAP) 会引发错误。现在,如果您确实需要 RFCOMM,则可能是硬件问题。例如,如果您的蓝牙驻留在 USB 蓝牙加密狗上,那么当拔出加密狗时,软件应该会引发此错误。我的其余答案主要假设您正在尝试获取 L2CAP。
通常会引发错误,因为您的驱动程序不支持该协议。具体来说,我发现在 Windows 7 上的 Python2 或 Python3 中的 PyBluez 中无法访问 L2CAP。在 Linux 上的 Python3 中,可以从“导入套接字”访问 L2CAP。
我不清楚 Win7 上的 Widcomm 和 MSBT 堆栈中是否存在 PyBluez 限制。我也不清楚如果 PyBluez 试图包装的驱动程序中的服务确实不可用,是否有更多的 PyBluez 工作可以解决这个问题。
希望有帮助。