La Taberna del Puerto Svb
"Se navega por los astros, por la mar, por la tierra, por las gentes, por los sentimientos...Se navega." Altair
VHF: Canal 77   
Regresar   La Taberna del Puerto > Foro > Foros Náuticos > Foro Náutico Deportivo

Avisos

 
 
Herramientas Estilo
  #11  
Antiguo 24-12-2015, 23:51
Avatar de gypsylyon
gypsylyon gypsylyon esta desconectado
Hermano de la costa
 
Registrado: 19-07-2012
Edad: 67
Mensajes: 2,307
Agradecimientos que ha otorgado: 289
Recibió 1,345 Agradecimientos en 816 Mensajes
Sexo:
Predeterminado Re: Proyecto OpenPlotter

Cita:
Originalmente publicado por sailoog.com Ver mensaje
Añade al principio de tu script:

Código:
import socket, pynmea2
El primero es la libreria para enviar/recibir datos TCP/UDP y el segundo es el parser NMEA

A continuación abres una instancia del socket para poder enviar la sentencia generada:

Código:
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
Y generas la sentencia con el parser. Te pongo el ejemplo de como creo la sentencia NMEA del rumbo mahnetico que capto del sensor IMU:

Código:
hdg = pynmea2.HDG('OS', 'HDG', (str(heading_m),'','','',''))
Te explico que es cada parte para que puedas adaptarlo a la sentencia de viento correspondiente:

pynmea2.HDG es el tipo de talker que quieres generar. Busca en este código si el talker que se corresponde a la dirección y velocidad del viento está soportado. Seguro que si. Escoges solo talkers que no estén obsoletos.
'OS' dejalo como está porque eso indica que es una sentencia generada por openplotter y corresponde a un sensor.
'HDG' será el talker que elijas.
(str(heading_m) heading_m es la variable que contiene el valor en grados del rumbo magnetico. Usa tu tus variables que contengan los datos de velocidad y direccion. El comando str lo convierte de valor numérico a texto y es necesario para que el parser lo entienda.
,'','','','' esto son el resto de valores que tiene que contener esta sentencia y que pueden estar vacios si no dispones de esa información o no es relevante. Asegurate que campos tiene que llevar tu talker escogido y rellenalo con variables o espacios vacios.

Una vez tenemos la varible que contiene la sentencia NMEA generada la enviamos a openplotter:

Código:
hdg1=str(hdg)
hdg2=hdg1+"\r\n"
sock.sendto(hdg2, ('localhost', 10110))
con str(hdg) convertimos la sentencia en texto ya que el parser nos devuekve un objeto. Con hdg2=hdg1+"\r\n" le añadimos el final de linea a la sentencia para que luego pueda sert interpretada por los clientes. Con la última linea la enviamos a donde se envián todo el NMEA generado por openplotter ya sea a traves de sus calculos o sus sensores: UDP localhost 10110 consiguiendo que se expanda por todo el sistema.

Cualquier problema ya sabes. Por cierto tienes el código publicado en algún sitio? Porque no abres un github y así podremos clonarlo y añadirle cambios fácilmente?

Excelente muchisimas gracias.
Lo pondria encantado en un github, pero tengo que reconocer que no se comohacerlo. Te lo puedo enviar al email de tu pagina.
Se me van hacer los dias eternos hasta que este en casa para probarlo ( el 6 de enero). Sabes que sentencia de NMEA es para la intensidad del viento y su direccion en grados en funcion de la crugia del barco?
Gracias otra vez
 

Svb


Reglas del foro
No puedes crear discusiones
No puedes responder a mensajes
No puedes editar tus adjuntos
No puedes editar tus mensajes

BB code está activado
Emoticonos está activado
El código [IMG] está activado
El código HTML está desactivado
Ir a


Todas las horas son GMT +1. La hora es 14:41.


Powered by vBulletin® Version 3.7.0
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© La Taberna del Puerto