我正在尝试将事件从我的Raspberry Pi发送到我的Python代码中的微:位,以控制Kitronik Servo:Lite板。
我已经证明了用Kitronik示例代码和Kitronik android游戏垫应用程序可以控制Servo:Lite板。在我的python代码中,我可以成功地将Pi连接到微: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发布的安卓应用程序让MES事件控制Servo:Lite板。如何从我的python代码中发送这些?
发布于 2021-02-09 07:55:21
Bluezero库不支持microbit模块中的消息事件服务(MES)。
Bluezero的目标是简单易用,作为BLE的介绍。我不需要使用MES服务,所以没有花时间使用来自微:位蓝牙配置文件的信息来构建一个初学者友好的API。
我的理解是,在您的应用程序中,在连接时,Python代码应该读取MicroBit Requirements特性(UUID:E95DB84C-251D-470A-A062-FA1922DFA9A8)
然后通过Client Event特性发送命令(UUID:E95D5404-251D-470A-A062-FA1922DFA9A8)
正如您将在微:位蓝牙配置文件文档中看到的那样,事件是数字。其中一些数字可以从:https://lancaster-university.github.io/microbit-docs/ble/event-service/#microbit-code-for-the-buggy-controller获得。
为了获得尽可能少的代码行,下面是一个使用布尔-关贸总协定库的示例。
from time import sleep
import BLE_GATT
ubit_address = 'yy:yy:yy:yy:yy:yy'
ubit_req = 'E95DB84C-251D-470A-A062-FA1922DFA9A8'
client_event = 'E95D5404-251D-470A-A062-FA1922DFA9A8'
MES_DPAD_CONTROLLER = 1104
MES_DPAD_1_BUTTON_UP_ON = 1
MES_DPAD_1_BUTTON_UP_OFF = 2
MES_DPAD_1_BUTTON_DOWN_ON = 3
MES_DPAD_1_BUTTON_DOWN_OFF = 4
MES_DPAD_1_BUTTON_LEFT_ON = 5
MES_DPAD_1_BUTTON_LEFT_OFF = 6
MES_DPAD_1_BUTTON_RIGHT_ON = 7
MES_DPAD_1_BUTTON_RIGHT_OFF = 8
MES_DPAD_2_BUTTON_UP_ON = 9
MES_DPAD_2_BUTTON_UP_OFF = 10
MES_DPAD_2_BUTTON_DOWN_ON = 11
MES_DPAD_2_BUTTON_DOWN_OFF = 12
MES_DPAD_2_BUTTON_LEFT_ON = 13
MES_DPAD_2_BUTTON_LEFT_OFF = 14
MES_DPAD_2_BUTTON_RIGHT_ON = 15
MES_DPAD_2_BUTTON_RIGHT_OFF = 16
ubit = BLE_GATT.Central(ubit_address)
ubit.connect()
# Print what micro:bit is interested in
print(ubit.char_read(ubit_req))
# Send left D-Pad pressed
ubit.char_write(client_event, MES_DPAD_CONTROLLER.to_bytes(2, byteorder='little') + MES_DPAD_1_BUTTON_UP_ON.to_bytes(2, byteorder='little'))
# Wait 3 seconds
sleep(3)
# Release the button
ubit.char_write(client_event, MES_DPAD_CONTROLLER.to_bytes(2, byteorder='little') + MES_DPAD_1_BUTTON_UP_OFF.to_bytes(2, byteorder='little'))
ubit.disconnect()我没有办法测试,如果这是需要的Kitronik Servo:Lite板,这只是我最好的猜测。如果你有更多的信息,我可以更新答案。
https://stackoverflow.com/questions/66109546
复制相似问题