diff options
Diffstat (limited to 'tools/monitor.py')
-rw-r--r-- | tools/monitor.py | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/tools/monitor.py b/tools/monitor.py new file mode 100644 index 0000000..f909efb --- /dev/null +++ b/tools/monitor.py @@ -0,0 +1,44 @@ +"""Serial monitor.""" +import argparse +import sys +import asyncio +import os + +if os.name == "nt": # NT-based operating systems (Windows) + from serial.serialwin32 import Serial +elif os.name == "posix": + from serial.serialposix import Serial +else: + raise NotImplementedError( + "Sorry no implementation for your platform ({}) available." + .format(sys.platform) + ) + + +async def read(port: str, baud_rate: int): + """Reads a serial port.""" + with Serial(port, baud_rate) as serial_port: + while(serial_port.is_open): + sys.stdout.buffer.write(serial_port.read()) + sys.stdout.flush() + + +async def main(): + """Monitors serial output.""" + parser = argparse.ArgumentParser( + description="A tool for monitoring a Arduino") + + parser.add_argument( + "port", help="A serial device port e.g. /dev/ttyACM0 or com3") + parser.add_argument("baud_rate", help="The serial device baud rate") + + args = parser.parse_args() + + await read(args.port, args.baud_rate) + +if __name__ == "__main__": + try: + asyncio.run(main()) + except KeyboardInterrupt: + print("\nReceived keyboard interrupt. Exiting...") + exit(0) |