2015-01-26 4 views
0

У меня есть куча устройств, отправляющих предложения NMEA на URL/ip. , которые выглядят как этот, работающий с данными NMEA, отправленными по URL/IP

"$ GPGGA, 200130.0,3447.854659, N, 11014.636735, W, 1,11,0.8,41.4, M, -24.0, М ,, * 53"

я хочу прочитать эти данные, проанализировать его и загрузить ключевые части в базу данных. я знаю, как его разобрать и загрузить в БД, но я полностью потеряю, как «читать»/принимать/получать данные в программу python, чтобы я мог анализировать и загружать.

Моя первая мысль состояла в том, чтобы указать его на страницу Django, а затем Djanog разобрать его и загрузить в базу данных (данные будут доступны с сайта Django), но это предложение NMEA не HTTP-запрос, поэтому Django отклоняет его как " сообщение Синтаксис синтаксического запроса "

Какой лучший (питон) способ читать предложения NMEA, отправленные на URL-адрес/IP?

благодаря

+0

Что? .... какой url он собирается? конечно, вы должны соответствовать хотя бы (NMEA действительно легко разобрать и работать с ... Я просто не уверен, что вопрос на самом деле здесь) ... Я могу сделать некоторые предположения и опубликовать решение ниже ... если мои предположения ошибочны, тогда ясно, что мое решение будет ошибочным, а также –

ответ

1

Я предполагаю, что у вас есть некоторое оборудование, которое имеет соединение локальных сетей, и это трубы из строковой NMEA через его соединение локальных сетей. Это, вероятно, по умолчанию имеет некоторые случайные 192.168.0.X IP-адрес и выплевывая данных через порт 12002 или что-то

вы обычно создают сокет для прослушивания этого Incomming данных

server.py

import socket 
host = "" #Localhost 
port = 12002 
PACKET_SIZE=1024 # how many characters to read at a time 
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
sock.bind((host,port)) 
sock.listen(5) # we should never have more than one client 
def work_thread(client): 
    while True: #continuously read and handle data 
     data = client.recv(PACKET_SIZE) 
     if not data: 
      break # done with this client 
     processData(data) 

while True: 
    client,addr = sock.accept() # your script will block here waiting for a connection 
    t = threading.Thread(target=work_thread,args=(client,)) 
    t.start() 

иногда однако вы должны пинговать устройство, чтобы получить данные

client.py

import socket 
host = "192.168.0.204" #Device IP 
port = 12002 
PACKET_SIZE=1024 # how many characters to read at a time 
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
sock.connect((host,port)) #connect to the device 
while True: #continuously read and handle data 
    data = sock.recv(PACKET_SIZE) 
    processData(data) 
+0

вы качаете эти работы. данные поступают от сотового маршрутизатора с микросхемой GPS. маршрутизатор отправляет данные GPS в качестве предложения NMEA для указания url/port (через соединение соты). – Jay42

+0

ahhh Я вижу сейчас ... Я был полностью озадачен ... Я не видел, чтобы это перешло через веб-сервис до –

+0

. ВОПРОС будет обрабатывать одновременно несколько устройств? или эта программа будет работать только для одного устройства. – Jay42

 Смежные вопросы

  • Нет связанных вопросов^_^