Bluetooth Bluetooth в Windows 10

Я нашел несколько похожих вопросов, но все они казались либо устаревшими, либо не имели рабочего ответа, поэтому я снова спрашиваю здесь.

Я хочу подключиться к другому устройству (в моем случае RaspberryPi) через Bluetooth с моего ноутбука под управлением Windows 10.

Я знаю, что есть встроенная поддержка через модуль сокетов, однако это вызвало у меня ошибку. После поиска я нашел ответ, утверждающий, что Bluetooth-сокет Python не работает с Windows (?).

Поэтому я продолжил поиски и обнаружил, что PyBluez часто рекомендуют как хорошую библиотеку Bluetooth. Опять же, это бросило мне OSError, и снова я услышал, что PyBluez не поддерживает Windows 10.

Я нашел модуль с именем pybluez-win10, но в нем практически не было документации о том, как заставить его работать. Установка предварительно скомпилированной сборки для Windows из здесь тоже не сработала, Я думаю, это потому, что последняя сборка предназначена для Python 3.5, а я использую 3.7.

Если у вас есть какие-либо предложения, что попробовать, или вы знаете другие библиотеки, которые вы рекомендуете, сообщите мне. Благодарю вас!


person Jannik    schedule 05.06.2020    source источник


Ответы (1)


Поддержка Bluetooth RFCOMM для Windows 10 появится в Python 3.9

https://bugs.python.org/issue36590

Я установил Python 3.9.0a6 на ПК с Windows 10 и смог подключиться к нему из приложения Bluedot. https://play.google.com/store/apps/details?id=com.stuffaboutcode.bluedot&hl=en_GB

Мой простой тестовый код на ПК был таким:

import socket

adapter_addr = 'e4:a4:71:63:e1:69'
port = 3  # Normal port for rfcomm?
buf_size = 1024

s = socket.socket(socket.AF_BLUETOOTH, socket.SOCK_STREAM, socket.BTPROTO_RFCOMM)
s.bind((adapter_addr, port))
s.listen(1)
try:
    print('Listening for connection...')
    client, address = s.accept()
    print(f'Connected to {address}')

    while True:
        data = client.recv(buf_size)
        if data:
            print(data)
except Exception as e:
    print(f'Something went wrong: {e}')
    client.close()
    s.close()
person ukBaz    schedule 09.07.2020