Open
@maxwangwyf

Description

import aioble
import asyncio
import bluetooth

async def scan_bluetooth():
print("Starting BLE scan...")
async with aioble.scan(
duration_ms=10000, # 扫描 10 秒
interval_us=300000, # 间隔 300 毫秒
window_us=300000, # 窗口 300 毫秒
active=True # 主动请求额外数据
) as scanner:
async for result in scanner:
name = result.name() or "Unknown"
addr = result.device.addr_hex()
rssi = result.rssi
services = result.services()

        if "0d:f9:6d:6a:75:c9" in addr:
            print("找到此设备")
            print(result.services)
            return result.device
return None

async def main():
device = await scan_bluetooth()
if not device:
print("未找到设备")
return

try:
    print(f"正在连接 {device.addr_hex()}...")
    connection = await device.connect(timeout_ms=2000)  # 设置连接超时
    print("连接成功",connection)


except asyncio.TimeoutError:
    print("连接超时")
except Exception as e:
    print(f"连接失败: {e}")
async with connection:
    try:
        hid_service=0x1812
        key_input=0x2A4D
        mouse_input=0x2A33
        
        ser=bluetooth.UUID(hid_service)
        char=bluetooth.UUID(key_input)
        hid_service = await connection.service(ser)
        print(hid_service)
        hid_characteristic = await hid_service.characteristic(char)
        print(hid_characteristic)
    except asyncio.TimeoutError:
        print("Timeout discovering services/characteristics")
        return
    while True:
            # 尝试读取特征的值
        data = await hid_characteristic.read()
        print("Received key input data:", data)

运行主程序

asyncio.run(main())