import asyncio from bleak import BleakClient import struct from time import sleep devaddr = "4C:EB:D6:4D:61:FA" leduuid = "19b10001-e8f2-537e-4f6c-d104768a1214" rssiuuid = "19b10002-e8f2-537e-4f6c-d104768a1214" accxuuid = "19b10011-e8f2-537e-4f6c-d104768a1214" accyuuid = "19b10012-e8f2-537e-4f6c-d104768a1214" acczuuid = "19b10013-e8f2-537e-4f6c-d104768a1214" gyrxuuid = "19b10021-e8f2-537e-4f6c-d104768a1214" gyryuuid = "19b10022-e8f2-537e-4f6c-d104768a1214" gyrzuuid = "19b10023-e8f2-537e-4f6c-d104768a1214" async def run(): print("Get BLE device value") async with BleakClient(devaddr) as client: if client.is_connected: while True: # 取得 RSSI rssi_get = await client.read_gatt_char(rssiuuid) rssivalue = struct.unpack('i', rssi_get)[0] print( 'rssivalue: ', rssivalue ) # 取得三軸加速器 accx_get = await client.read_gatt_char(accxuuid) accy_get = await client.read_gatt_char(accyuuid) accz_get = await client.read_gatt_char(acczuuid) accxvalue = struct.unpack('f', accx_get)[0] accyvalue = struct.unpack('f', accy_get)[0] acczvalue = struct.unpack('f', accz_get)[0] print( "%s, %10.2f, %10.2f, %10.2f" % ("Accel X, Y, Z", accxvalue, accyvalue, acczvalue) ) gyrx_get = await client.read_gatt_char(gyrxuuid) gyry_get = await client.read_gatt_char(gyryuuid) gyrz_get = await client.read_gatt_char(gyrzuuid) gyrxvalue = struct.unpack('f', gyrx_get)[0] gyryvalue = struct.unpack('f', gyry_get)[0] gyrzvalue = struct.unpack('f', gyrz_get)[0] print( "%s, %10.2f, %10.2f, %10.2f" % ("Gyr X, Y, Z", gyrxvalue, gyryvalue, gyrzvalue) ) sleep(1) client.disconnet() loop = asyncio.get_event_loop() try: loop.run_until_complete(run()) except KeyboardInterrupt: print('\nReceived Keyboard Interrupt') finally: print('Program finished')