Replace pyserial-asyncio with aioserial
mainIf you are currently using pyserial-asyncio with its Protocol-based approach, you can switch to aioserial for a higher-level, more direct API. Instead of implementing asyncio.Protocol, you can simply use await on read and write methods. This is particularly useful if you need Windows support, which pyserial-asyncio lacks.
import asyncio
import aioserial
async def read_and_print(aioserial_instance: aioserial.AioSerial):
while True:
data: bytes = await aioserial_instance.read_async()
print(data.decode(errors='ignore'), end='', flush=True)
if b'\n' in data:
aioserial_instance.close()
break
# Example: Concurrent read and write
aioserial_instance: aioserial.AioSerial = aioserial.AioSerial(port='/dev/ttyUSB0', baudrate=115200)
asyncio.run(asyncio.gather(
read_and_print(aioserial_instance),
aioserial_instance.write_async(b'Hello, World!\n')
))