Erstellen einer virtuellen seriellen Schnittstelle


11

Ich versuche, ein Paar virtueller serieller Ports auf meinem Mac zu erstellen. Dies ist mit vielen Shareware-Programmen auf einem PC ziemlich einfach. Ich dachte, es würde einen übermächtigen Shell-Befehl geben, um dies in einer Zeile zu tun, aber ich kann ihn nicht finden.

Ich möchte NMEA-Daten an einen Port senden und Google Earth die Daten aus dem anderen auslesen lassen.

Irgendwelche Tipps?

BEARBEITEN

MrDaniels /dev/ptypxKommentar schien interessant zu sein - ich kann ihn /dev/ttypxim Terminal ganz gut herausholen .
Aber Google Earth scheint cu zu lesen. Gerätename anstelle der / ttypx- Geräte.

speziell (Old Pro):

Wenn Sie versuchen, den aktuellen Standort mithilfe eines GPS (oder eines NMEA-Streams, der über unsere virtuelle serielle Schnittstelle geleitet wird) zu importieren, gehen Sie zu: Extras> GPS> Echtzeit, um zum Importbildschirm zu gelangen.
Nachdem Sie die NMEA-Option ausgewählt und die Echtzeitverfolgung aktiviert haben, sucht sie nach verbundenen Geräten und scheint Folgendes zu sehen:

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

Selbst wenn unsere serielle ttypx-Schnittstelle in Ordnung ist, sucht sie nicht danach.
Ich möchte die Daten von diesem Gerät in Google Earth übertragen.


1
+1, da ich dies auch für die Geräteentwicklung tun möchte. Könnte auch ServerFault, SuperUser oder StackOverflow sein.
Max Ried

Haben Sie darüber nachgedacht, stattdessen Google Latitude zu verwenden? Wenn dies nicht akzeptabel ist, geben Sie bitte weitere Informationen zu den Aktivitäten von Google Earth an.
Old Pro

War es Ihnen gelungen, Google Earth über eine gefälschte Position zu steuern, die über einen NMEA-Port bereitgestellt wurde? Mich würde interessieren, wie das funktioniert.
Max N

1
@ MaxN - Nein. Ich gab auf :(
DefenestrationDay

Dies ist nah (AppleScript): laclefyoshi.blogspot.com/2011/01/…
Max N

Antworten:


9

Google hat ein äußerst nützliches Tool für Arduino-Entwickler und simuliert zu Testzwecken sehr gut serielle Schnittstellen unter OS X. Es funktioniert nur bis 10.6

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

(zuvor verfügbar unter http://code.google.com/p/macosxvirtualserialport/ )

Könnte Ihnen das helfen?


2
Verzeihen Sie, dass ich dies nicht lösche und bearbeite - ich möchte lieber, dass Sie die Anerkennung dafür erhalten, dass Sie Googles großartige Software für die virtuelle serielle Schnittstelle ans Licht gebracht haben. Sie können es natürlich wieder löschen und ich lasse es in Ruhe, wenn Sie dies bevorzugen.
bmike

2
Diese code.google.com-Site für macosxvirtualserialport gibt jetzt einen 404-Fehler zurück.
hotpaw2

1
Das Google-Projekt scheint jetzt auf Github verfügbar zu sein: github.com/clokey/PublicCode/tree/master/… es funktioniert jedoch nur bis 10.7
Max N

5

Ich denke, was Sie suchen, ist ein Pseudo-Terminal, wie in Text-Terminal-HOWTO angegeben . Es sieht so aus, als ob Mac OS X eingebaut ist, /devund es scheint, dass dies das tun kann, was Sie wollen, z. B. zwei Programme, die über ein " virtuelle "serielle Schnittstelle.

Pseudo-Terminals sind Gerätepaare wie / dev / ptyp3 und / dev / ttyp3. Es gibt kein direktes physisches Gerät, nicht einmal einen seriellen Anschluss. Wenn ein Programm ttyp3 jedoch wie eine serielle Schnittstelle behandelt, wird das, was an dieser Schnittstelle gelesen und geschrieben wird, auf dem anderen Mitglied des Paares ptyp3 angezeigt, das ein anderes Programm zum Lesen und Schreiben verwendet. Somit sprechen zwei Programme über diese Methode miteinander und ein Programm auf ttyp3 glaubt, dass es mit einer seriellen Schnittstelle spricht. Es ist so etwas wie eine "Pfeife" zwischen diesen beiden Tty.

Zusätzlich ist das Bildschirmprogramm auch für Sie nützlich.


1

Hier gibt es verschiedene Aspekte Ihrer Frage:

  • Möchten Sie nur NMEA-Tracks usw. in etwas konvertieren, das Google Earth lesen (und anzeigen) kann? GPSBabel ist das Werkzeug der Wahl für diese Art von Dingen.
  • Möchten Sie Ihr GPS anschließen und dessen Inhalt über eine serielle Schnittstelle lesen? Macs haben keine seriellen Anschlüsse. Sie benötigen beispielsweise Keyspan USA-19HS , um serielle Geräte über USB anzuschließen.
  • Möchten Sie aus Neugier virtuelle serielle Geräte erstellen? Das ist definitiv möglich, aber über mein Wissen hinaus ...

1
Option 3. Ich habe die NMEA-Daten (in Echtzeit) und möchte sie in Echtzeit anzeigen. Google Earth liest von einer seriellen Schnittstelle, daher muss ich nur herausfinden, wie die Ports eingerichtet und in eine von ihnen geleitet werden.
DefenestrationDay

Woher kommen die NMEA-Daten? GPSBabel kann als Echtzeitkonverter fungieren, siehe gpsbabel.org/htmldoc-1.4.2/tracking.html
nohillside

Es wird von einem iPhone gestreamt. Ich brauche keine Konvertierung in irgendetwas (insbesondere kml), ich brauche nur eine virtuelle serielle Schnittstelle, um die nmea-Daten hineinzuwerfen und sie am anderen Ende von Google Earth abzusaugen.
DefenestrationDay

Jedes Mal, wenn ich meinen Keyspan benutzen darf, grinse ich nur Ohr an Ohr. Besonders auf meiner neuen 11 Zoll Air - so viel Neues und Altes arbeiten zusammen ;-)
bmike

0

Es ist nicht klar, ob Sie die integrierte Erkennung der seriellen Schnittstelle vortäuschen können, aber ich würde mit einer Named Pipe (mkfifo) beginnen /dev/cu.fake.ttypxund einige Daten zum Lesen bereithalten , wenn Sie die Echtzeit aktivieren.

Meine Kopie von Google Earth scheint jede potenzielle Quelle der Reihe nach abzufragen und führt weiterhin nur Scannen durch, da keine NMEA-Daten bereitgestellt werden.

Sie benötigen natürlich ein kleines [shell | perl | python] /dev/ttypx-Skript , um aus Ihrer "gefälschten" FIFO-Datei zu lesen und in diese zu schreiben.



-1

Ich habe ein Posix-Pseudoterminal verwendet, um einen virtuellen Kommunikationsport in ein OSX C-Programm zu erstellen. Sie können nach der Bibliotheksfunktion posix_openpt () suchen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.