import time import socket import os import argparse from pathlib import Path import json def parse_args(): parser = argparse.ArgumentParser() parser.add_argument('--root', type=str, default='results') parser.add_argument('--save_root', type=str, default='exp1') parser.add_argument('--plot_live', type=bool, default=False) parser.add_argument('--freq', type=float, default=0.1, help='Access data for every x sec.') args = parser.parse_args() return args def NMEAtoDecimal(latitude, longitude, West=1, South=0): temp_lat = int(latitude / 100) newlat = temp_lat + (latitude - 100 * temp_lat) / 60 temp_long = int(longitude / 100) newlong = temp_long + (longitude - 100 * temp_long) / 60 if West: newlong = newlong * (-1) if South: newlat = newlat * (-1) return newlat, newlong def livePlotMap_main(args): exp_fd = os.path.join(args.root, args.save_root) Path(exp_fd).mkdir(parents=True, exist_ok=True) with open(os.path.join(exp_fd, 'args.txt'), 'w') as f: json.dump(args.__dict__, f, indent=2) tcp_socket = socket.create_connection(('169.254.1.0', 5017)) data_list = [] raw_txt = open(os.path.join(exp_fd, 'rawGPSdata.txt'), 'w') try: while True: data = tcp_socket.recv(1024) data_list.append(data) raw_txt.write(str(data)) raw_txt.write('\n') temp = str(data).split(",") latitude = float(temp[2]) longitude = float(temp[4]) newlat, newlong = NMEAtoDecimal(latitude, longitude, West=1, South=0) p = [newlat, newlong] time.sleep(0.1 * args.freq) except KeyboardInterrupt: print('Stop Recording...') raw_txt.close() if __name__ == '__main__': args = parse_args() if args.plot_live: print('Start ploting live...') livePlotMap_main(args) print('End of the code.')