Ver mensaje
  #302  
Antiguo 27-11-2014, 11:32
Avatar de sailoog.com
sailoog.com sailoog.com esta desconectado
Expulsado
 
Registrado: 24-05-2011
Mensajes: 1,237
Agradecimientos que ha otorgado: 413
Recibió 1,358 Agradecimientos en 485 Mensajes
Sexo:
Predeterminado Re: SailPi Navegando con Raspberry Pi

Cita:
Originalmente publicado por sailoog.com Ver mensaje
Gilinas he adaptado tu script a openplotter y he notado que en tu script el calculo del cheksum no se hace correctamente, a ti te sale *67 y a mi *43 y el tuyo no pasa la validación checksum de OpenCPN.

Te pego mi script por si quieres usar algo de el. Veras que pynmea2 se encarga de calcular el cheksum y que envio la sentencia a una UDP en 10110 que es donde envío tambien el SDR-AIS y que viene por defecto activado en openplotter.

Código:
#!/usr/bin/env python

import socket, pynmea2

sock_in = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock_in.connect(('127.0.0.1', 10110))
sock_in.settimeout(10)

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

while True:
    frase_nmea = sock_in.recv(512)
    if frase_nmea[1:3]=='GP':
        msg = pynmea2.parse(frase_nmea)
        if msg.sentence_type == 'RMC':
            sog = msg.spd_over_grnd
            if not sog: sog=0.00
            vbw = pynmea2.VBW('II', 'VBW', (str(sog), '', 'A', str(sog), '', 'A'))
            vbw1=str(vbw)
            vbw2=repr(vbw1)+"\r\n"
            sock.sendto(str(vbw2), ('127.0.0.1', 10110))
Otra cosa que he notado pero esta vez en OpenCPN es que recibe las sentencias correctamente pero no las muestra si creas un panel con STW.

Es un error de OpenCPN?
OpenCPN no coge la speed over water de la sentencia $IIVBW? en ese caso de que otra sentencia la puede coger?
STW es Speed Through Water no?
A ti te pasa lo mismo?

Vaya, lo que me temia... analizando el codigo de OpenCPN he visto que no maneja sentencias VBW. La STW la coge de la sentencia VHW:

VHW - Water speed and heading

$--VHW,x.x,T,x.x,M,x.x,N,x.x,K*hh<CR><LF>

Field Number:

  1. Degress True
  2. T = True
  3. Degrees Magnetic
  4. M = Magnetic
  5. Knots (speed of vessel relative to the water)
  6. N = Knots
  7. Kilometers (speed of vessel relative to the water)
  8. K = Kilometers
  9. Checksum
Así que estaría bien que el script generara tambien esta sentencia. Tendría claro como calcular todos los datos menos el "Degrees Magnetic" que supongo que se tendría de coger de alguna sentencia que contenga información del compás, pero si no tenemos compás se podría calcular de alguna forma? jodido no?
Citar y responder