fix: drainer pymavlink dans le thread principal sans run_in_executor
run_in_executor + blocking=False retournait None dans un thread séparé sans rien peupler dans mav.messages. Drain direct dans la boucle asyncio avec while recv_match() pour vider tout le buffer à chaque tick de 50ms. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@ -84,9 +84,9 @@ async def monitor_armed(drone):
|
|||||||
|
|
||||||
async def drain_pymavlink():
|
async def drain_pymavlink():
|
||||||
"""Draine pymavlink en boucle pour peupler mav.messages (dernier msg par type)."""
|
"""Draine pymavlink en boucle pour peupler mav.messages (dernier msg par type)."""
|
||||||
loop = asyncio.get_running_loop()
|
|
||||||
while True:
|
while True:
|
||||||
await loop.run_in_executor(None, lambda: mav.recv_match(blocking=False))
|
while mav.recv_match(blocking=False) is not None:
|
||||||
|
pass
|
||||||
await asyncio.sleep(0.05)
|
await asyncio.sleep(0.05)
|
||||||
|
|
||||||
async def monitor_telemetry(drone):
|
async def monitor_telemetry(drone):
|
||||||
|
|||||||
Reference in New Issue
Block a user