import socket import csv # Logger listens here (new port) FG_PORT = 5502 # Forward to dashboard on its original port DASHBOARD_PORT = 5500 def start_logger(): receiver = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) receiver.bind(('127.0.0.1', FG_PORT)) forwarder = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) with open('flightgear_phm_log.csv', 'w', newline='') as f: writer = csv.writer(f) writer.writerow(['frame', 'EGT', 'N2', 'N1', 'Thrust']) print(f"Logger listening on {FG_PORT}, forwarding to {DASHBOARD_PORT}...") pkt_count = 0 try: while True: data, _ = receiver.recvfrom(4096) # Forward to dashboard forwarder.sendto(data, ('127.0.0.1', DASHBOARD_PORT)) # Log locally line = data.decode('ascii', errors='ignore').strip() parts = [p.strip() for p in line.split(',')] if len(parts) >= 11: pkt_count += 1 writer.writerow([pkt_count, parts[0], parts[7], parts[8], parts[10]]) if pkt_count % 100 == 0: f.flush() print(f"Logged {pkt_count} frames...") except KeyboardInterrupt: print("Logger stopped.") if __name__ == '__main__': start_logger()