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.