24H_du_code_2026/ble/mainRobotTestBLE.py
2026-03-22 00:26:24 +01:00

42 lines
1.2 KiB
Python

# to know COM port used when connected on PC:
# python -m serial.tools.list_ports
# in this example, robot will send back to PC the checksum of each message received
import binascii
import uasyncio as asyncio
import RobotBleServer
robotName = 'myTeamName'
toSend = []
def onMsgToRobot(data:str|bytes):
"""Function to call when a message sent by PC is received
:param data: message received"""
checksum = binascii.crc32(data)
print('received', data, '=>', checksum)
toSend.append(str(checksum))
async def robotMainTask(bleConnection):
"""Main function for robot activities
:param bleConnection: object to check BLE connection and send messages"""
while True:
await asyncio.sleep(0.1)
#print('connection', bleConnection.connection)
if not bleConnection.connection: continue
if toSend == []: continue
while not toSend == []:
data = toSend.pop(0)
bleConnection.sendMessage(data)
print('sent', data)
# Run tasks
async def main():
print('Start main')
bleConnection = RobotBleServer.RobotBleServer(robotName=robotName, onMsgReceived=onMsgToRobot)
asyncio.create_task(robotMainTask(bleConnection))
await bleConnection.communicationTask()
asyncio.run(main())