2020-12-12 23:23:21 +08:00
|
|
|
#!/usr/bin/env python3
|
|
|
|
|
2020-12-13 00:15:54 +08:00
|
|
|
import tornado.ioloop
|
|
|
|
import tornado.web
|
|
|
|
from tornado.web import RequestHandler, StaticFileHandler
|
2017-04-30 23:40:24 +08:00
|
|
|
import socket
|
|
|
|
import struct
|
|
|
|
import time
|
2020-12-12 23:23:21 +08:00
|
|
|
import os
|
|
|
|
|
|
|
|
HOST = 'localhost'
|
|
|
|
PORT = 5678
|
|
|
|
|
|
|
|
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
|
|
|
|
|
|
|
|
2020-12-13 00:15:54 +08:00
|
|
|
class IndexHandler(RequestHandler):
|
|
|
|
def get(self):
|
|
|
|
self.redirect('/static/baidumap.html')
|
|
|
|
|
|
|
|
|
|
|
|
class PostHandler(RequestHandler):
|
|
|
|
def post(self):
|
|
|
|
self.set_header('Content-Type', 'text/plain')
|
|
|
|
pos = [
|
2020-12-13 00:56:39 +08:00
|
|
|
float(self.get_body_argument(k)) for k in ['lat', 'lon', 'hgt']
|
2020-12-13 00:15:54 +08:00
|
|
|
]
|
|
|
|
data = struct.pack('ddd', *pos)
|
|
|
|
sock.sendto(data, (HOST, PORT))
|
|
|
|
print(*pos)
|
|
|
|
self.write('OK')
|
|
|
|
|
|
|
|
|
|
|
|
def make_app():
|
|
|
|
return tornado.web.Application([
|
|
|
|
(r'/', IndexHandler),
|
|
|
|
(r'/post', PostHandler),
|
|
|
|
(r'/static/(.*)', StaticFileHandler, {
|
|
|
|
'path': os.path.dirname(__file__)
|
|
|
|
})
|
|
|
|
])
|
2020-12-12 23:23:21 +08:00
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
from argparse import ArgumentParser
|
|
|
|
argp = ArgumentParser(description='GPS-SDR-SIM realtime map server.')
|
|
|
|
argp.add_argument('port',
|
|
|
|
type=int,
|
|
|
|
default=8080,
|
|
|
|
nargs='?',
|
|
|
|
help='specify port for map server [default: 8080]')
|
|
|
|
argp.add_argument(
|
|
|
|
'--host',
|
|
|
|
type=str,
|
|
|
|
default='0.0.0.0',
|
|
|
|
help='specify host map server to bind [default: 0.0.0.0]')
|
|
|
|
args = argp.parse_args()
|
|
|
|
|
2020-12-13 00:15:54 +08:00
|
|
|
app = make_app()
|
2020-12-12 23:23:21 +08:00
|
|
|
print('Serving at http://{}:{}'.format(args.host, args.port))
|
2020-12-13 00:15:54 +08:00
|
|
|
app.listen(args.port, args.host)
|
|
|
|
tornado.ioloop.IOLoop.current().start()
|