wu_xinjun
2022-03-09 7e23498bb27c683b74b62f1495bc610ccc04bad2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
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")