diff --git a/measurement_main.py b/measurement_main.py index 45a9e28..db10c83 100755 --- a/measurement_main.py +++ b/measurement_main.py @@ -237,6 +237,26 @@ def monitor_serial(ser, output_file): return +def monitor_gps(ser, output_file): + ser.flushInput() + ser.flushOutput() + # skip first maybe uncompleted line + ser.readline() + try: + while ser.is_open: + nmea_sentence = ser.readline() + write_to_file(output_file, nmea_sentence + "\n") + sleep(1) + except: + if not ser.is_open: + print_message("GPS serial port is closed. Exit monitoring thread.") + else: + print_message( + "Something went wrong while monitoring GPS serial interface. Exit monitoring thread." + ) + return + + class Server: def __init__(self, config): self.config = config @@ -503,6 +523,24 @@ class Client: ) ser_thread.start() + if self.config["gps"] is not None: + gps_ser = serial.Serial( + port=self.config["gps"], + baudrate=self.config["gps_baudrate"], + ) + gps_ser.isOpen() + gps_ser_filepath = "{}{}_gps_serial_monitor_output.txt".format( + self.config["folder"], self.config["prefix"] + ) + gps_ser_thread = Thread( + target=monitor_gps, + args=( + gps_ser, + gps_ser_filepath, + ), + ) + gps_ser_thread.start() + if self.config["bandwidth"]: self.bandwidth() elif self.config["drx"]: @@ -1076,6 +1114,17 @@ if __name__ == "__main__": type=int, help="Serial device baudrate", ) + parser.add_argument( + "--gps", + default=None, + help="GPS serial device e.g. /dev/serial/by-id/usb-u-blox_AG_-_www.u-blox.com_u-blox_5_-_GPS_Receiver-if00", + ) + parser.add_argument( + "--gps_baudrate", + default=38400, + type=int, + help="GPS serial device baudrate", + ) args = parser.parse_args()