如何通过蓝牙从python向micro:bit发送MES事件

如何通过蓝牙从python向micro:bit发送MES事件,python,bluetooth,bbc-microbit,Python,Bluetooth,Bbc Microbit,我试图用Python代码将Raspberry Pi Zero W中的事件发送到micro:bit,以控制Kitronik伺服:Lite板 我已经用Kitronik示例代码和Kitronik android gamepad应用程序证明了micro:bit可以控制伺服:Lite板。在我的python代码中,我可以成功地将Pi连接到micro:bit,如下所示: from bluezero import microbit ubit = microbit.Microbit(adapter_addr='x

我试图用Python代码将Raspberry Pi Zero W中的事件发送到micro:bit,以控制Kitronik伺服:Lite板

我已经用Kitronik示例代码和Kitronik android gamepad应用程序证明了micro:bit可以控制伺服:Lite板。在我的python代码中,我可以成功地将Pi连接到micro:bit,如下所示:

from bluezero import microbit
ubit = microbit.Microbit(adapter_addr='xx:xx:xx:xx:xx:xx',
                     device_addr='yy:yy:yy:yy:yy:yy')
my_text = 'Hello, world'
ubit.connect()

Kitronik发布的android应用程序发送来控制伺服:Lite板。如何从python代码中发送这些消息?

Bluezero库不支持
microbit
模块中的消息事件服务(MES)

Bluezero的目标是易于作为BLE的介绍使用。我没有必要使用MES服务,因此没有花时间使用来自的信息构建一个初学者友好的API

我的理解是,在您的应用程序中,在连接时,Python代码应该阅读
微比特要求
特征(UUID:
E95DB84C-251D-470A-A062-FA1922DFA9A8

然后通过
客户端事件
特征发送命令(UUID:
E95D5404-251D-470A-A062-FA1922DFA9A8

正如您将在文档中看到的,事件是数字。其中一些数字可以从以下位置获得:

为了让您获得尽可能少的代码行,下面是一个使用该库的示例

从时间导入睡眠
进口关税及贸易总协定
ubit_地址='yy:yy:yy:yy:yy'
ubit_需求='E95DB84C-251D-470A-A062-FA1922DFA9A8'
客户端事件='E95D5404-251D-470A-A062-FA1922DFA9A8'
MES\U DPAD\U控制器=1104
MES\U DPAD\U 1\U按钮\U UP\U ON=1
MES\U DPAD\U 1\U按钮\U UP\U OFF=2
MES\u DPAD\u 1\u按钮\u按下\u打开=3
MES\u DPAD\u 1\u按钮\u关闭\u关闭=4
MES_DPAD_1_按钮_左_开=5
MES\u DPAD\u 1\u按钮\u左侧\u关闭=6
MES\u DPAD\u 1\u按钮\u右侧\u打开=7
MES\u DPAD\u 1\u按钮\u右侧\u关闭=8
MES\U DPAD\U 2\U按钮\U UP\U ON=9
MES\U DPAD\U 2\U按钮\U UP\U OFF=10
MES\u DPAD\u 2\u按钮\u按下\u打开=11
MES\u DPAD\u 2\u按钮\u按下\u关闭=12
MES_DPAD_2_按钮_左_开=13
MES_DPAD_2_按钮_左侧_关闭=14
MES\u DPAD\u 2\u按钮\u右侧\u打开=15
MES\u DPAD\u 2\u按钮\u右侧\u关闭=16
ubit=BLE\U GATT.Central(ubit\U地址)
ubit.connect()
#打印micro:bit感兴趣的内容
打印(ubit.char\u读取(ubit\u请求))
#按下发送左D-Pad
ubit.char_write(客户端事件,MES_DPAD_控制器。到字节(2,字节顺序='little')+MES_DPAD_1_按钮打开到字节(2,字节顺序='little'))
#等3秒钟
睡眠(3)
#松开按钮
ubit.char_write(客户端事件,MES_DPAD_控制器。至字节(2,字节顺序='little')+MES_DPAD_1_按钮,至字节(2,字节顺序='little'))
ubit.disconnect()
我没有办法测试这是否是Kitronik Servo:Lite板所需的,这只是我的最佳猜测。如果你有更多的信息,我可以更新答案