import datetime from pickle import GLOBAL from socketserver import BaseRequestHandler, UDPServer import time import os, sys # cudir,_ = os.path.split(__file__) # file_folder = os.path.join(cudir,"saveUDPData") # if not os.path.exists(file_folder): # os.makedirs(file_folder) # print(f"make a new folder: {file_folder}") packed_count = 0 class PointCloudUDPRequestHandler(BaseRequestHandler): def handle(self): global packed_count global path if packed_count == 0: start = datetime.datetime.now() if not os.path.exists(save_folder): os.mkdir(save_folder) if sub_folder is not None: path = os.path.join(save_folder,sub_folder) else: path = os.path.join(save_folder,f"{device_id}-{start.strftime('%Y-%m-%d-%H-%M-%S')}") if not os.path.exists(path): os.mkdir(path) path = os.path.abspath(path) print(time.asctime(),' Got connection from {}, {}'.format(self.client_address, packed_count)) # Get message and client socket msg, sock = self.request time_tag = datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S') f = open('{}/{}_packet{}.udp'.format(path,time_tag,packed_count), 'wb') f.write(msg) f.close() packed_count += 1 if packed_count >= packet_threshold: UDPServer.server_close(server) def udp_get_tool(microwaveHost,packetThreshold,deviceName,saveFolder,subFolder): global packet_threshold packet_threshold = packetThreshold, global device_id device_id = deviceName global save_folder save_folder = saveFolder global sub_folder sub_folder = subFolder global server # host = '' # host = '192.168.2.65' # use this host to get the udp data from microwave device port = 9911 server =UDPServer((microwaveHost, port), PointCloudUDPRequestHandler) print(time.asctime(),'Server started on port', port) print('....') print('ctrl-c to quit server.') try: server.serve_forever() except KeyboardInterrupt: server.server_close() print(time.asctime(),"Server Stopped") except: server.server_close() print(time.asctime(),"Server Stopped") if __name__ == '__main__': def help(): print("**************************ERROR**************************") print("Usage: udp_get.py [MICROWAVEhost] [PACKETthreshold] [DEVICEname] [SAVEfolder] [SUBfolder") print("EXAMPLE: udp_get.py 192.168.2.65 1000 pod1 ./manual_ply 60 \n") exit(1) if len(sys.argv) != 6: help() try: MICROWAVEhost = str(sys.argv[1]) PACKETthreshold = int(sys.argv[2]) DEVICEname = str(sys.argv[3]) SAVEfolder = str(sys.argv[4]) SUBfolder = str(sys.argv[5]) except Exception as e: print(e) help() udp_get_tool(MICROWAVEhost,PACKETthreshold,DEVICEname,SAVEfolder,SUBfolder)