PyBluez Bluetooth L2CAP
Моя проблема в том, что я получаю:
raise ValueError ("invalid protocol")
ValueError: invalid protocol
из этой строки кода:
sock=bluetooth.BluetoothSocket(bluetooth.RFCOMM)
Я не понимаю, почему я получаю эту ошибку.
Я использую это потому, что хочу отправить событие клавиатуры на устройство, подключенное через Bluetooth.
1 ответ
Ваш тег вопроса "l2cap" не соответствует вашему фрагменту кода, который относится к RFCOMM. По моему опыту, в Windows7 sock=bluetooth.BluetoothSocket(bluetooth.RFCOMM) не вызывает ошибку, однако sock=bluetooth.BluetoothSocket(bluetooth.L2CAP) действительно вызывает ошибку. Теперь, если вы действительно хотите RFCOMM, это может быть аппаратная проблема. Например, если ваш Bluetooth находится на USB-ключе USB, программное обеспечение должно выдавать эту ошибку, когда ключ отсоединен. Остальная часть моего ответа в основном предполагает, что вы пытались получить L2CAP.
Обычно ошибка возникает, потому что этот протокол не поддерживается вашим драйвером. В частности, я обнаружил, что L2CAP недоступен в PyBluez в Python2 или Python3 в Windows 7. В Python3 в Linux L2CAP доступен из "сокета импорта".
Мне неясно, присутствует ли ограничение PyBluez в стеках Widcomm и MSBT на Win7. Также мне неясно, может ли больше работы PyBluez решить проблему, если служба действительно недоступна в драйвере, который PyBluez пытается обернуть.
Надеюсь, это поможет.