Newsgroup: it.comp.os.linux.development
Titolo: seriale e gps

salve a tutti,
volevo sapere se e' possibile intercettare i dati in arrivo su una porta
seriale e poi rimandarli INALTERATI ad un programma che dovrebbe intercettarli
direttamente da seriale .... mi spiego meglio
GPS sul rimorchiatore =
		      | => ricevitore => seriale => computer => programma mappe
io mi dovrei inserire tra il computer e il programma mappe, leggere le
stringhe, salvarle in postgresql e poi mandare al programma (proprietario)
i dati per farglieli visualizzare sulla mappa ...
grazie anticipate ...
PS ... tutto questo, per il momento, gira su un winzozz 2003 server, ma se mi 
date qualche dritta, attacco l'antenna che riceve sul freebsd/linux, leggo
i dati e li reinvio "raw" attraverso un altro sistema al winzozz ...
-- 
#include <stdio.h>
int main(void){char c[]={10,65,110,116,111,110,105,111,32,98,97,114,98,111,110,
101,32,60,104,105,110,100,101,109,105,116,64,116,105,115,99,97,108,105,110,101,
116,46,105,116,62,10,10,0};printf("%s",c);return 0;}

 i dati e li reinvio "raw" attraverso un altro sistema al winzozz ...
sě č possibile, ma a che pro?
cosě a naso la consifgurazione che vorresti te si fa (magari sbaglio eh):
antennagps-> seriale su linux (in)-> seconda seriale su linux (out)->
null modem cable -> seriale su windows -> programma propietario
insomma aggiungi tre anelli alla catena, ma non riesco a capirne il motivo.

 motivo.
Mi intrometto: esiste un comando gia' fatto per fare quello che dici? Mi
pareva ci fosse qualcosa. Servirebbe anche a me per intercettare i comandi
verso una telecamera dome della Panasonic.
Nicola.
-- 
chi va pian va san e va lontan

   
Si è possibile e senza neppure modificare il flusso GPS-> computer.
Se devi solo ricevere dati senza modificarli (in RS232), basta che ti
attacchi al solo pin di TX del GPS
GPS RX <------------------- TX[ mappe]     Trasmissione dati
GPS TX----+---------------> RX [mappe]    Ricezione dati
                    |
                    +---------------> RX [monitor]  Solo ricezione dati!!!
                    non connesso---   TX[ monitor]
I dati GPS , se sono standard, sono trasmessi con protocollo NMEA,
che e' piuttosto semplice (sono stringhe ASCII), trovi documentazione
in rete.
brix

 insomma aggiungi tre anelli alla catena, ma non riesco a capirne il motivo.
il discorso e' questo: i dati arrivano dal rimorchiatore e il programma
proprietario ne visualizza la posizione in tempo reale sulla carta nautica ...
MA ... le stringhe che gli arrivano (ora, latitudine, longitudine ecc ecc.)
che fine fanno ?? a me servirebbe memorizzarle in un database postgresql per
poi eventualmente rispondere a domande del tipo "il giorno tot alle ore tot
il rimorchiatore tizio dove stava ?" 
ciao ...


 verso una telecamera dome della Panasonic.
aspetta che non ti ho capito, un comando per fare cosa?
per leggere/scrivere da/verso una seriale?
afaik, la seriale se la puo' leggere un programma alla volta , in quanto
quando la leggi ne svuoti il buffer. Quindi se il tuo obiettivo č avere
una sorta di sniffer credo di no (smetitemi se sbaglio).
Ad esempio se ti attacchi con minicom ad una ttySX quella se la orende
minicom, gli altri programmi la trovano occupata e non funzionano.
Pero' potresti fare un programma che si mette a metą tra seriale e
dispositivo che la usa, per essere piu' dettagliati ci vorrebbero le
specifiche del dispositivo 
ciao

 il rimorchiatore tizio dove stava ?" 
capito, allora prima di tutto ddevi capire quale protocollo utilizza il
ricevitore gps (nmea, garmin, etc), poi al tuo programma fai fare:
lettura da ttySIN e scrittura  (magari dei soli dati validi, vedi un po'
te) su ttySOUT, con ogni stringa letta puoi farci:
memorizzarla bovinamente nel db, insieme alla data
interpretare la/le stringhe nmea (parlo di quelle perchè non conosco gli
altri formati) e memorizzare nel db dei dati leggibili anche da un essere
umano/altro programma di visualizzazione.
le specifiche nmea le trovi in rete, la lettura della stringa è semplice,
in quanto questa inizia con $identificativo e finisce con  \r\n (o \n
adesso non ricordo bene)
da quello che ho capito a te serve interpretatre solo la stringa con
identificativo GPGGA es:
$GPGGA,161508.000,4356.8766,N,01054.2825,E,1,08,0.9,165.5,M,0.0,M,,0000*67
il significato dei campi è:
Name  	Example Data  	Description
Sentence Identifier 	$GPGGA 	Global Positioning System Fix Data
Time 	170834 	17:08:34 Z
Latitude 	4124.8963, N 	41d 24.8963' N or 41d 24' 54" N
Longitude 	08151.6838, W 	81d 51.6838' W or 81d 51' 41" W
Fix Quality:
- 0 = Invalid
- 1 = GPS fix
- 2 = DGPS fix 	1 	Data is from a GPS fix
Number of Satellites 	05 	5 Satellites are in view
Horizontal Dilution of Precision (HDOP) 	1.5 	Relative accuracy of horizontal position
Altitude 	280.2, M 	280.2 meters above mean sea level
Height of geoid above WGS84 ellipsoid 	-34.0, M 	-34.0 meters
Time since last DGPS update 	blank 	No last update
DGPS reference station id 	blank 	No station id
Checksum 	*75 	Used by program to check for transmission errors
quindi interectti ed elabori solo queste stringhe , il resto lo rimandi
paro paro alla seconda seriale.
spero di essere stato d'aiuto (sempre che tu abbia nmea)
ciao

 spero di essere stato d'aiuto (sempre che tu abbia nmea)
non hai idea quanto ;-)) grazie milllllle per l'aiuto ...
ciao



Architecture: i386
Version: 1.2.3-1
Depends: libc6 (>= 2.3.6-6)
Filename: pool/main/j/jpnevulator/jpnevulator_1.2.3-1_i386.deb
Size: 17420
MD5sum: 2c9701ebf8a32de2e9332c0071e594a9
SHA1: d881e7787cb1f60e48ef4ac4bff28d2c92e2aa90
SHA256: 1f5ceb3327a8ce998a26aaf1cfa18c6dcda3043f63bc7779bf1059cb87810bc4
Description: Serial sniffer
 jpnevulator is a handy serial sniffer. You can use it to send data on a
 serial device too. You can read or write from/to one or more serial
 devices at the same time.
 .
 In write mode data to be sent on the serial device(s) is read from a
 file or stdin in hexadecimal notation. Data is sent on the serial
 device(s) line by line.
 .
 In read mode data to be read from the serial device(s) is written to a
 file or stdout in hexadecimal notation. Several options enhance the
 way the data is displayed.
bott@pcimg12:~$
altrimenti cerca serial sniffer, ci sono già dei programmi opensource.

 una sorta di sniffer credo di no (smetitemi se sbaglio).
No, pensavo di usare 2 porte seriali e mettere nel mezzo qualcosa che passa
i dati come gli arrivano e in piu' li salva.


 Nicola.
allora credo che il programma consigliato da ottavio faccia quello che
chiedi (almeno dalla descrizione che ha  postato)

RedWiz wrote:

Ho letto la man page di jpnevulator: mi sembra che legga da n seriali e che
mostri l'output a video o su file; ma non mi pare che spedisca i dati da
una all'altra.


 una all'altra.
guarda non so che dirti, mai usato un proggramma del genere.
Ma dalla descrzione sembra poterlo fare:


RedWiz wrote:

Ok, caso mai chiedo ad Ottavio :)
Grazie, Nicola.


 null modem cable -> seriale su windows -> programma propietario
molto più semplice (visto che a quanto dice linux leggerà solo dalla
seriale) 
              +---> linux 
              |
antennagps ---+
              |
              +<--> windows 
dove le frecce indicano il senso in cui possono andare i bit
Insomma ti costruisci un cavo ad Y in cui da una parte attacchi linux e
dall'altra windows, se poi vuoi anche ascoltare cosa dice windows basta
fare un'altra Y da attaccare a windows, esistono in giro già fatti (o
almeno lo schema) cavi "spia", un mio collega ne usava uno per capire
come un programma proprietario comunicasse con un braccio robotico e
cosa questo restituisse al computer, ora quel braccio è comandato dal
software scritto dal collega.
Ciao, Micky
-- 
What's this hash prompt on my terminal mean?
Micky Del Favero  -  System Manager  &  BOFH

 in rete.
E' la soluzione migliore...