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 пытается обернуть.

Надеюсь, это поможет.

Другие вопросы по тегам