Связь с двумя устройствами через BLE UART на Python с использованием bleakPython

Программы на Python
Ответить
Anonymous
 Связь с двумя устройствами через BLE UART на Python с использованием bleak

Сообщение Anonymous »

К сожалению, у меня нет опыта асинхронного программирования, поэтому мне потребовалось довольно много времени, чтобы запустить мой код для связи с одним устройством BLE (Raspberry Pi Pico 2W с микропитоном и ble_simple_peripheral):

Код: Выделить всё

import asyncio
from bleak import BleakClient
from bleak.backends.characteristic import BleakGATTCharacteristic
from bleak.backends.device import BLEDevice

UART_SERVICE_UUID = "6E400001-B5A3-F393-E0A9-E50E24DCCA9E"
UART_RX_CHAR_UUID = "6E400002-B5A3-F393-E0A9-E50E24DCCA9E"
UART_TX_CHAR_UUID = "6E400003-B5A3-F393-E0A9-E50E24DCCA9E"

async def BLE_send(data):
device="2C:CF:67:D2:CA:2F" # MAC Adresse RasPi Pico2W im Pendelkörper

def handle_disconnect(_: BleakClient):
print("Disconnected", BleakClient)
# cancelling all tasks effectively ends the program
for task in asyncio.all_tasks():
task.cancel()

def handle_rx(_: BleakGATTCharacteristic, data: bytearray):
print("received:", data)

async with BleakClient(device, disconnected_callback=handle_disconnect) as client:
await client.start_notify(UART_TX_CHAR_UUID, handle_rx)

print("connected")

loop = asyncio.get_running_loop()
nus = client.services.get_service(UART_SERVICE_UUID)
assert nus is not None, "UART service not found"
rx_char = nus.get_characteristic(UART_RX_CHAR_UUID)
assert rx_char is not None, "UART RX characteristic not found"
await client.write_gatt_char(rx_char, data, response=False)

print("sent:", data)

data=b"rb10\n"

try:
asyncio.run(BLE_send(data))
except asyncio.CancelledError:
print("")
pass
Возможно, это можно сделать намного лучше, но для одного устройства оно делает то, что я хочу.
Теперь мне нужно связаться со вторым периферийным устройством (Pi Pico2W), и - из-за моего невежества - я не смог заставить это работать. Я пробовал много вещей, и было бы неэффективно перечислять их все.
Было бы здорово, если бы кто-нибудь мог сказать мне, как нужно изменить/оптимизировать код для взаимодействия с двумя устройствами (насколько это возможно синхронно).

Подробнее здесь: https://stackoverflow.com/questions/798 ... sing-bleak
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»