70 lines
2.2 KiB
Python
70 lines
2.2 KiB
Python
|
|
import asyncio
|
|||
|
|
import bleak
|
|||
|
|
import device_model
|
|||
|
|
|
|||
|
|
# 扫描到的设备 Scanned devices
|
|||
|
|
devices = []
|
|||
|
|
# 蓝牙设备 BLEDevice
|
|||
|
|
BLEDevice = None
|
|||
|
|
|
|||
|
|
|
|||
|
|
# 扫描蓝牙设备并过滤名称
|
|||
|
|
# Scan Bluetooth devices and filter names
|
|||
|
|
async def scan():
|
|||
|
|
global devices
|
|||
|
|
global BLEDevice
|
|||
|
|
find = []
|
|||
|
|
print("Searching for Bluetooth devices......")
|
|||
|
|
try:
|
|||
|
|
devices = await bleak.BleakScanner.discover(timeout=20.0)
|
|||
|
|
print("Search ended")
|
|||
|
|
for d in devices:
|
|||
|
|
if d.name is not None and "WT" in d.name:
|
|||
|
|
find.append(d)
|
|||
|
|
print(d)
|
|||
|
|
if len(find) == 0:
|
|||
|
|
print("No devices found in this search!")
|
|||
|
|
else:
|
|||
|
|
user_input = input("Please enter the Mac address you want to connect to (e.g. DF:E9:1F:2C:BD:59):")
|
|||
|
|
for d in devices:
|
|||
|
|
if d.address == user_input:
|
|||
|
|
BLEDevice = d
|
|||
|
|
break
|
|||
|
|
except Exception as ex:
|
|||
|
|
print("Bluetooth search failed to start")
|
|||
|
|
print(ex)
|
|||
|
|
|
|||
|
|
|
|||
|
|
# 指定MAC地址搜索并连接设备
|
|||
|
|
# Specify MAC address to search and connect devices
|
|||
|
|
async def scanByMac(device_mac):
|
|||
|
|
global BLEDevice
|
|||
|
|
print("Searching for Bluetooth devices......")
|
|||
|
|
BLEDevice = await bleak.BleakScanner.find_device_by_address(device_mac, timeout=20)
|
|||
|
|
|
|||
|
|
|
|||
|
|
# 数据更新时会调用此方法 This method will be called when data is updated
|
|||
|
|
def updateData(DeviceModel):
|
|||
|
|
# 直接打印出设备数据字典 Directly print out the device data dictionary
|
|||
|
|
print(DeviceModel.deviceData)
|
|||
|
|
# 获得X轴加速度 Obtain X-axis acceleration
|
|||
|
|
# print(DeviceModel.get("AccX"))
|
|||
|
|
|
|||
|
|
|
|||
|
|
if __name__ == '__main__':
|
|||
|
|
# 方式一:广播搜索和连接蓝牙设备
|
|||
|
|
# # Method 1:Broadcast search and connect Bluetooth devices
|
|||
|
|
# asyncio.run(scan())
|
|||
|
|
|
|||
|
|
# # 方式二:指定MAC地址搜索并连接设备
|
|||
|
|
# # Method 2: Specify MAC address to search and connect devices
|
|||
|
|
asyncio.run(scanByMac("FA:E8:88:06:FE:F3"))
|
|||
|
|
|
|||
|
|
if BLEDevice is not None:
|
|||
|
|
# 创建设备 Create device
|
|||
|
|
device = device_model.DeviceModel("MyBle5.0", BLEDevice, updateData)
|
|||
|
|
# 开始连接设备 Start connecting devices
|
|||
|
|
asyncio.run(device.openDevice())
|
|||
|
|
else:
|
|||
|
|
print("This BLEDevice was not found!!")
|