Я написал скрипт Python, который работает из командной строки. Я хочу разделить сценарий на конечные точки REST.
С этой целью я хочу заменить async на BleakClient(d, timeout=10) в качестве клиента: чем-то, что позволяет мне сделать client глобальным, чтобы я мог использовать его в другой конечной точке REST. Другими словами, я хочу, чтобы клиент оставался вне вызова, подключающегося к устройству. Есть идеи?
Я пробовал client = await BleakClient(d, timeout=10), но эта строка выдает исключение: объект BleakClient нельзя использовать в выражении 'await' .
РЕДАКТИРОВАТЬ
Я включаю весь (усеченный) скрипт Python. Вызов ConnectAndReadChar() работает. Вызов ConnectUUT() не работает. Исключение в строке «client = await BleakClient(d, timeout=10)», .
import asyncio
import traceback
from bleak import BleakScanner, BleakClient
import sys
import time
global client
async def ConnectAndReadChar(MAC_ID):
d = await BleakScanner.find_device_by_address(MAC_ID, timeout=20)
time.sleep(0.5)
while True:
try:
if d.address == MAC_ID:
async with BleakClient(d, timeout=10) as client:
time.sleep(0.5)
res = await client.pair(protection_level=None)
print(res)
x = client.is_connected
print("Connected: {0}".format(x))
svc = client.services.get_service("Service ID")
thisCharacteristic = svc.get_characteristic("Char ID")
value = bytes(await client.read_gatt_char(thisCharacteristic))
print("\tValue: {0} ".format(value))
await client.disconnect()
await client.unpair()
return
except:
e = sys.exc_info()[0]
print(e)
async def ConnectUUT(MAC_ID):
global client
d = await BleakScanner.find_device_by_address(MAC_ID, timeout=20)
while True:
try:
if d.address == MAC_ID:
# async with BleakClient(d, timeout=10) as client:
client = await BleakClient(d, timeout=10)
if client is not None:
time.sleep(0.5)
res = await client.pair(protection_level=None)
print(res)
x = client.is_connected
print("Connected: {0}".format(x))
return
except:
e = sys.exc_info()[0]
print(e)
async def ReadFrames():
global client
try:
svc = client.services.get_service("Service ID")
thisCharacteristic = svc.get_characteristic("Char ID")
return
except:
e = sys.exc_info()[0]
print(e)
async def DisconnectUUT():
global client
try:
await client.disconnect()
await client.unpair()
except:
e = sys.exc_info()[0]
print(e)
return
async def main():
await ConnectAndReadChar("MAC ID goes here")
await ConnectUUT("MAC ID goes here")
await ReadFrames()
await DisconnectUUT()
if __name__ == "__main__":
asyncio.run(main())
Подробнее здесь: https://stackoverflow.com/questions/781 ... async-with
Python асинхронный с ⇐ Python
Программы на Python
1 сообщение
• Страница 1 из 1
Anonymous
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...