![]() |
|
|
|
| VHF: Canal 77 |    | ![]() |
![]() |
![]() |
![]() |
![]() |
|
#11
|
||||
|
||||
|
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))
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? ![]() ![]() |
| Herramientas | |
| Estilo | |
|
|