本来应该完成的是使用web服务修改屏幕的显示,但是没有找到合适的服务器去构架MQTT服务。所以就退而求其次,只是通过蓝牙修改屏幕数据。毕竟网络服务是建立在手机或者电脑上的,和套件没有关系。
参考我写的另外两个帖子,分别是蓝牙接收数据,已经电脑上构建蓝牙服务的帖子。
套件使用蓝牙接收数据
电脑端构建蓝牙服务
电脑端的代码为
- import asyncio
- from bleak import discover
- from bleak import BleakClient
- class My_Bluetooth():
- def __init__(self,name):
- self.devices = None
- self.loop = asyncio.get_event_loop()
- self.name = name
- async def find_devices(self):
- self.devices = await discover()
- def scan_devices(self):
- print("Find devices..")
- self.loop.run_until_complete(self.find_devices())
- def get_device_addr(self):
- for d in self.devices:
- if d.name == self.name:
- self.addr = d.address
- def connect_device(self):
- print("Try to connect "+self.addr+" ...")
- self.client = BleakClient(self.addr,self.loop)
- self.loop.run_until_complete(self.client.connect())
- async def get_services(self):
- self.svcs = await self.client.get_services()
-
- def print_services(self):
- self.loop.run_until_complete(self.get_services())
- async def write_data(self,show_string):
- STRING_UUID = "0ab5b693-c2ce-c4ab-e711-6ccbaa65c888"
- if len(show_string) != 0:
- await self.client.write_gatt_char(STRING_UUID,show_string)
-
- def write_something(self,show_string):
- loop = asyncio.get_event_loop()
- loop.run_until_complete(self.write_data(show_string))
-
- print("Start..")
- BT = My_Bluetooth("RPK-AF90")
- BT.scan_devices()
- BT.get_device_addr()
- BT.connect_device()
- BT.print_services()
- while True:
- buffer = input("Enter the string:")
- buffer = bytes(buffer,encoding='utf-8') + b'\x00'
- BT.write_something(buffer)
复制代码
在电脑端,仍然是python+bleak实现修改蓝牙特性值的操作。当套件接收到修改特性值的操作后,会触发事件,套件根据事件来实现相关的操作。更新屏幕的数据显示就是放在这个事件处理函数中的。
此内容由EEWORLD论坛网友manhuami2007原创,如需转载或用于商业用途需征得作者同意并注明出处