wu_xinjun
2022-02-28 f79b30a55db543bd1c7dd494a8c896df8841aa28
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
import sys
import time
import os
from socketserver import BaseRequestHandler, UDPServer
 
# add python path of microwave to sys.path
microwave_path = os.path.join(__file__, *(['..'] * 3))
microwave_path = os.path.abspath(microwave_path)
sys.path.insert(0, microwave_path)
 
from microwave.servers import MicroWaveReceiver
 
 
class MicroWaveRequestHandlertest(BaseRequestHandler):
    def handle(self):
        # Get message and client socket
        buf, _ = self.request
        receiver = self.server.Receiver
        receiver.AddBuf(buf)
        if receiver.DataFrameReady:
            # data frame ready
            frame_number = receiver.Header.FrameNumber
            bin_name = os.path.join(self.server.OutputFolder, "{}.bin".format(frame_number))
            print("Frame {} ready".format(frame_number))
            with open(bin_name, "wb") as bin_file:
                bin_file.write(receiver.DataFrame)
 
 
class MicroWaveUDPServertest(UDPServer):
    def __init__(self, server_address, output_folder):
        super().__init__(server_address, MicroWaveRequestHandlertest)
        # create receiver instance
        self.Receiver = MicroWaveReceiver()
        self.OutputFolder = output_folder
 
if __name__ == '__main__':
    if len(sys.argv) == 2:
        output_folder = sys.argv[1]
    else:
        output_folder = '.'
 
    # host = '192.168.2.65'
    host = ''
    port = 9911
    server = MicroWaveUDPServertest((host, port), output_folder)
    server.packed_count = 0
    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")