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)
|
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)
|
|
|
if __name__ == '__main__':
|
|
def help():
|
print("Usage: udp_get.py [MICROWAVEhost] [PACKETthreshold] [DEVICEname] [SAVEfolder]")
|
print("EXAMPLE: udp_get.py 192.168.2.65 1000 pod1 ./manual_ply")
|
exit(1)
|
|
if len(sys.argv) != 5:
|
help()
|
try:
|
MICROWAVEhost = str(sys.argv[1])
|
PACKETthreshold = int(sys.argv[2])
|
DEVICEname = str(sys.argv[3])
|
SAVEfolder = str(sys.argv[4])
|
|
global packet_threshold
|
packet_threshold = PACKETthreshold
|
global device_id
|
device_id = DEVICEname
|
global save_folder
|
save_folder = SAVEfolder
|
|
except Exception as e:
|
print(e)
|
help()
|
|
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")
|