Creazione di una porta seriale virtuale


11

Sto cercando di creare un paio di porte seriali virtuali sul mio mac. Questo è abbastanza facile da fare con molti programmi shareware su un PC. Ho pensato che ci sarebbe stato un comando shell estremamente potente per farlo in una riga, ma non riesco a trovarlo.

Voglio inviare i dati NMEA in una porta e fare in modo che Google Earth legga i dati dall'altra.

Qualche consiglio?

MODIFICARE

Il /dev/ptypxcommento di MrDaniel è sembrato interessante - posso tirarlo fuori /dev/ttypxdal terminale bene.
Ma Google Earth sembra leggere cu. deviceName invece dei deveices / ttypx ..

in particolare (Old Pro):

Quando proviamo a importare la posizione corrente usando un GPS (o flusso NMEA convogliato attraverso la nostra porta seriale virtuale), andiamo: Strumenti> GPS> In tempo reale per arrivare alla schermata di importazione.
Dopo aver selezionato l'opzione NMEA e abilitato il tracciamento in tempo reale, cerca i dispositivi collegati e sembra guardare:

  • USB:
  • /dev/cu.Bluetooth-PDA-Sync
  • /dev/cu.Bluetooth-Modem
  • /dev/cu.iPhone-WirelessAP

Anche con la nostra porta seriale ttypx che funziona bene, non la cerca.
Vorrei ottenere i dati da quel dispositivo in Google Earth.


1
+1, poiché anch'io vorrei farlo per lo sviluppo del dispositivo. Potrebbe anche essere ServerFault, SuperUser o StackOverflow.
Max Ried

Hai preso in considerazione l'utilizzo di Google Latitude invece? Se ciò non è accettabile, fornisci maggiori dettagli su ciò che Google Earth sta facendo.
Old Pro

Hai avuto successo nel controllo di Google Earth attraverso una posizione falsa fornita attraverso una porta NMEA? Sarei interessato a come funziona.
Max N,

1
@MaxN - No. Ho rinunciato :(
Defenestration,

Questo è vicino (AppleScript): laclefyoshi.blogspot.com/2011/01/…
Max N

Risposte:


9

Google ha uno strumento estremamente utile per gli sviluppatori di Arduino e simula molto bene le porte seriali su OS X a scopo di test. Funziona solo fino al 10.6

https://github.com/clokey/PublicCode/tree/master/MacOSXVirtualSerialPort

(precedentemente disponibile da http://code.google.com/p/macosxvirtualserialport/ )

Questo potrebbe aiutarti?


2
Scusate se deseleziono questa opzione e la modifico: preferirei che aveste il merito di aver messo in luce il fantastico software per porta seriale virtuale di Google. Puoi ovviamente cancellarlo di nuovo e lo lascerò solo se questa è la tua preferenza.
bmike

2
Quel sito code.google.com per macosxvirtualserialport ora restituisce un errore 404.
hotpaw2,

1
Il progetto Google sembra essere disponibile su Github ora: github.com/clokey/PublicCode/tree/master/… funziona solo fino al 10.7
Max N

5

Penso che quello che stai cercando sia uno Pseudo Terminal come osservato in Text-Terminal-HOWTO , sembra che Mac OS X sia integrato /deve sembra che questo possa fare quello che vuoi fare, ad esempio due programmi che parlano insieme tramite un " porta seriale "virtuale".

I pseudo terminali sono coppie di dispositivi come / dev / ptyp3 e / dev / ttyp3. Non esiste alcun dispositivo fisico direttamente associato a nessuno dei due, nemmeno un connettore della porta seriale. Ma se un programma tratta ttyp3 come se fosse una porta seriale, ciò che viene letto e scritto su quella porta appare sull'altro membro della coppia ptyp3 che un altro programma usa per leggere e scrivere. Quindi due programmi parlano tra loro tramite questo metodo e un programma su ttyp3 pensa che stia parlando con una porta seriale. È qualcosa come una "pipa" tra questi due tty.

Inoltre, il programma dello schermo può essere utile anche a te.


1

Ci sono diversi angoli della tua domanda qui:

  • Vuoi solo convertire tracce NMEA ecc. In qualcosa che Google Earth può leggere (e visualizzare)? GPSBabel è lo strumento preferito per questo tipo di cose.
  • Vuoi collegare il tuo GPS e leggere il suo contenuto tramite una porta seriale? I Mac non hanno porte seriali, avrai bisogno di qualcosa come Keyspan USA-19HS per connettere dispositivi seriali tramite USB.
  • Vuoi creare dispositivi seriali virtuali per curiosità? Questo è definitivamente possibile ma al di là delle mie conoscenze ...

1
Opzione 3. Ho i dati NMEA (in tempo reale) e voglio visualizzarli in tempo reale. Google Earth legge da una porta seriale, quindi devo solo capire come impostare le porte e collegarle a una di esse.
Defenestrazione:

Da dove provengono i dati NMEA? GPSBabel è in grado di fungere da convertitore in tempo reale, vedi gpsbabel.org/htmldoc-1.4.2/tracking.html
nohillside

È trasmesso in streaming da un iPhone. Non ho bisogno di conversione in nulla (in particolare kml), ho solo bisogno di una porta seriale virtuale per inserire i dati di nmea e risucchiarli dall'altra parte da Google Earth.
Defenestrazione:

Ogni volta che riesco a usare la mia tastiera, sorrido solo da un orecchio all'altro. Soprattutto sulla mia nuova Air da 11 pollici - tanto nuovo e vecchio lavoro insieme ;-)
bmike

0

Non è chiaro che puoi falsificare il rilevamento della porta seriale integrata, ma vorrei iniziare con una pipe denominata (mkfifo) /dev/cu.fake.ttypxe avere alcuni dati pronti per la lettura quando abiliti il ​​tempo reale.

La mia copia di Google Earth sembra sondare ogni potenziale fonte in ordine e continua a non fare altro che scansionare poiché non ho dati NMEA forniti.

Avrai ovviamente bisogno di un piccolo script [shell | perl | python] per leggere /dev/ttypxe scrivere nel tuo file "fake" FIFO.



-1

Ho usato uno pseudoterminale Posix per creare una porta di comunicazione virtuale in un programma OSX C. È possibile cercare la funzione di libreria posix_openpt ().

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.