![]() |
|
|
|
| VHF: Canal 77 |    | ![]() |
![]() |
![]() |
![]() |
![]() |
|
#11
|
||||
|
||||
|
Por contribuir con algo a este hilo, he hecho un pequeño programita en Python (así voy aprendiendo
)El programa es de lo más simple, crea una corredera virtual basándose en los datos obtenidos por el GPS. El programa es útil cuando se requieren datos de corredera para determinadas tareas como el cálculo de la intensidad o dirección del viento real y no tenemos corredera o está llena de caracolillo. Está pensado para ser utilizado junto con kplex, ya que usa como medio de comunicación conexiones TCP. Necesita una de entrada (para recibir datos del GPS) y otra de salida (para enviar los datos de "corredera") El código del programa es el siguiente: Código:
#!/usr/bin/python
import re
import sys
import socket
import argparse
def check_nmea(sentence):
cksum = re.sub("(\n|\r\n)","", sentence[sentence.find("*")+1:])
chksumdata = re.sub("(\n|\r\n)","", sentence[sentence.find("$")+1:sentence.find("*")])
csum = 0
for c in chksumdata:
csum ^= ord(c)
if hex(csum) == hex(int(cksum, 16)):
return True
return False
def get_checksum(sentence):
chksumdata = re.sub("(\n|\r\n)","", sentence[sentence.find("$")+1:])
csum = 0
for c in chksumdata:
csum ^= ord(c)
return csum
def main():
parser = argparse.ArgumentParser(description='Simulador de corredera')
parser.add_argument('--INhost', default='localhost',
help='host origen del GPRMC (localhost por defecto)')
parser.add_argument('--INport', type=int, default=10110,
help='puerto origen (10110 por defecto)')
parser.add_argument('--OUThost', default='localhost',
help='host destino del IIVEW (localhost por defecto)')
parser.add_argument('--OUTport', type=int, default=10111,
help='puerto destino (10111 por defecto)')
args = parser.parse_args()
insocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
insocket.connect((args.INhost, args.INport))
gpsin=insocket.makefile("rb")
outsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
outsocket.connect((args.OUThost, args.OUTport))
correderaout=outsocket.makefile("wb")
while 1:
lineaNMEA=gpsin.readline()
speedN=""
magvar=""
vbw="$IIVBW,"
command = lineaNMEA.split(",")
if command[0] == "$GPRMC":
if check_nmea(lineaNMEA):
speedN = command[7]
vbw+=speedN+",,A,"+speedN+",,A"
vbw+="*"+repr(get_checksum(vbw))+"\r\n"
correderaout.write(vbw)
correderaout.flush()
if __name__ == '__main__':
main()
Código:
usage: corredera.py [-h] [--INhost INHOST] [--INport INPORT]
[--OUThost OUTHOST] [--OUTport OUTPORT]
Simulador de corredera
optional arguments:
-h, --help show this help message and exit
--INhost INHOST host origen del GPRMC (localhost por defecto)
--INport INPORT puerto origen (10110 por defecto)
--OUThost OUTHOST host destino del IIVEW (localhost por defecto)
--OUTport OUTPORT puerto destino (10111 por defecto)
Código:
#Output TCP [tcp] mode=server port=10110 direction=out #Input TCP [tcp] mode=server port=10111 direction=in Para probarlo se puede utilizar el AIS de Diavolo por ejemplo ![]() ![]() ![]() python corredera.py --INhost bme.ole32.com --INport 10111 Introducirá la velocidad del GPS de Diavolo en nuestro sistema como si fuera nuestra corredera. ![]() ![]() ![]() ![]() ![]()
__________________
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ El mar es de TODOS. Lo que es de TODOS, NO ES MÍO. "No hay nada como el MAR"![]() Tinico N'Hielo
|
| Los siguientes cofrades agradecieron este mensaje a gilinas | ||
| Herramientas | |
| Estilo | |
|
|