45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
|
|
import glob
|
||
|
|
import argparse
|
||
|
|
import serial
|
||
|
|
|
||
|
|
|
||
|
|
def main():
|
||
|
|
parser = argparse.ArgumentParser()
|
||
|
|
parser.add_argument("--port")
|
||
|
|
args = parser.parse_args()
|
||
|
|
|
||
|
|
# Get all the valid serial ports available.
|
||
|
|
available_ports = glob.glob("/dev/cu.*")
|
||
|
|
|
||
|
|
# Only do this if the user did not specify a port.
|
||
|
|
if args.port is None:
|
||
|
|
# Make the user select a port to start a listening session.
|
||
|
|
print("Available ports:")
|
||
|
|
for i, port in enumerate(available_ports):
|
||
|
|
print(f"{i} - {port}")
|
||
|
|
|
||
|
|
selected_port_index = None
|
||
|
|
while selected_port_index is None and args.port is None:
|
||
|
|
try:
|
||
|
|
selected_port_index = input(
|
||
|
|
"\nType port number to start listening section: "
|
||
|
|
)
|
||
|
|
selected_port_index = int(selected_port_index)
|
||
|
|
if selected_port_index < 0 or selected_port_index >= len(available_ports):
|
||
|
|
print("The port number you provided does not exist.")
|
||
|
|
selected_port_index = None
|
||
|
|
except:
|
||
|
|
print("The typed input is not valid, please enter a valid number.")
|
||
|
|
selected_port_index = None
|
||
|
|
|
||
|
|
port = args.port if args.port is not None else available_ports[selected_port_index]
|
||
|
|
# TODO: Allow selecting baud raute, 115200 by default for now.
|
||
|
|
with serial.Serial(port, 115200) as ser:
|
||
|
|
while True:
|
||
|
|
byte = ser.read()
|
||
|
|
print(byte.decode("utf-8"), end="")
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
main()
|