Tworzenie wirtualnego portu szeregowego

11

Próbuję utworzyć parę wirtualnych portów szeregowych na moim komputerze Mac. Jest to dość łatwe w przypadku wielu programów shareware na PC. Pomyślałem, że będzie jedna potężna komenda powłoki, aby zrobić to w jednej linii, ale nie mogę jej znaleźć.

Chcę wysłać dane NMEA do jednego portu i pozwolić Google Earth odczytać dane z drugiego.

Jakieś wskazówki?

EDYTOWAĆ

Komentarz pana Daniela /dev/ptypxwydawał się interesujący - mogę go wyciągnąć z /dev/ttypxterminalu w porządku.
Ale Google Earth wydaje się czytać cu. deviceName zamiast urządzeń / ttypx.

konkretnie (Old Pro):

Próbując zaimportować bieżącą lokalizację za pomocą strumienia GPS (lub strumienia NMEA poprowadzonego przez nasz wirtualny port szeregowy), przechodzimy do: Narzędzia> GPS> Czas rzeczywisty, aby przejść do ekranu importu.
Po wybraniu opcji NMEA i włączeniu śledzenia w czasie rzeczywistym szuka podłączonych urządzeń i wygląda na:

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

Nawet jeśli nasz port szeregowy ttypx działa poprawnie, nie szuka go.
Chciałbym pobrać dane z tego urządzenia do Google Earth.

DefenestrationDay
źródło
1
+1, ponieważ chciałbym to zrobić w celu opracowania urządzenia. Może to być także ServerFault, SuperUser lub StackOverflow.
Max Ried
Czy zamiast tego rozważałeś skorzystanie ze Współrzędnych Google ? Jeśli nie jest to możliwe, podaj więcej szczegółów na temat tego, co robi Google Earth.
Old Pro
Czy udało Ci się kontrolować Google Earth za pomocą fałszywej pozycji zapewnianej przez port NMEA? Byłbym zainteresowany, jak to działa.
Max N
1
@MaxN - Nie. Zrezygnowałem :(
DefenestrationDay
To jest blisko (AppleScript): laclefyoshi.blogspot.com/2011/01/…
Max N

Odpowiedzi:

9

Google ma niezwykle przydatne narzędzie dla programistów Arduino i bardzo dobrze symuluje porty szeregowe w OS X do celów testowych. Działa tylko do 10.6

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

(wcześniej dostępne na stronie http://code.google.com/p/macosxvirtualserialport/ )

Czy to może ci pomóc?

Raúl Pedroche
źródło
2
Wybacz, że to cofnąłem usunięcie i edycję - wolę, żebyś dostał zasługę za udostępnienie niesamowitego oprogramowania wirtualnego portu szeregowego Google. Możesz oczywiście usunąć go ponownie, a jeśli tak, to zostawię go w spokoju.
bmike
2
Ta witryna code.google.com dla macosxvirtualserialport zwraca teraz błąd 404.
hotpaw2
1
Wygląda na to, że projekt Google jest dostępny na Githubie : github.com/clokey/PublicCode/tree/master/… działa tylko do 10.7
Max N
5

Myślę, że to, czego szukasz, to pseudo terminal, jak zauważono w Text-Terminal-HOWTO , wygląda na to, że Mac OS X ma wbudowany /devi wygląda na to, że może to zrobić, co chcesz, np. Dwa programy rozmawiające razem przez „ wirtualny port szeregowy.

Pseudo terminale to pary urządzeń, takich jak / dev / ptyp3 i / dev / ttyp3. Nie ma fizycznego urządzenia bezpośrednio związanego z żadnym z nich, nawet złącza portu szeregowego. Ale jeśli program traktuje ttyp3 jak port szeregowy, to, co jest odczytywane i zapisywane na tym porcie, pojawia się na drugim elemencie pary ptyp3, którego inny program używa do odczytu i zapisu. Tak więc dwa programy rozmawiają ze sobą za pomocą tej metody, a jeden program na ttyp3 uważa, że ​​rozmawia z portem szeregowym. To coś w rodzaju „fajki” między tymi dwoma tty.

Dodatkowo program ekranowy może być dla Ciebie przydatny.

MrDaniel
źródło
1

Istnieje kilka punktów widzenia na twoje pytanie tutaj:

  • Czy chcesz po prostu przekonwertować ścieżki NMEA itp. Na coś, co Google Earth może odczytać (i wyświetlić)? GPSBabel jest narzędziem z wyboru do tego rodzaju rzeczy.
  • Czy chcesz podłączyć GPS i czytać jego zawartość przez port szeregowy? Komputery Mac nie mają portów szeregowych, będziesz potrzebować czegoś takiego jak Keyspan USA-19HS, aby podłączyć urządzenia szeregowe przez USB.
  • Czy chcesz tworzyć wirtualne urządzenia szeregowe z ciekawości? To zdecydowanie możliwe, ale poza moją wiedzą ...
nohillside
źródło
1
Opcja 3. Mam dane NMEA (w czasie rzeczywistym) i chcę je wyświetlić w czasie rzeczywistym. Google Earth czyta z portu szeregowego, więc muszę tylko wymyślić, jak skonfigurować porty i podłączyć je do jednego z nich.
DefenestrationDay
Skąd pochodzą dane NMEA? GPSBabel może działać jako konwerter w czasie rzeczywistym, patrz gpsbabel.org/htmldoc-1.4.2/tracking.html
nohillside
Jest przesyłany strumieniowo z iPhone'a. Nie potrzebuję konwersji na nic (szczególnie kml), potrzebuję tylko wirtualnego portu szeregowego, aby wrzucić dane nmea i wyssać je z drugiego końca przez Google Earth.
DefenestrationDay
Za każdym razem, gdy używam klucza , uśmiecham się od ucha do ucha. Zwłaszcza na moim nowym 11-calowym Air - tyle nowego i starego, współpracującego ;-)
bmike
0

Nie jest jasne, czy można podrobić wbudowane wykrywanie portu szeregowego, ale zacznę od nazwanego potoku (mkfifo) /dev/cu.fake.ttypxi mam pewne dane gotowe do odczytania po włączeniu w czasie rzeczywistym.

Wydaje się, że moja kopia programu Google Earth sonduje kolejno każde potencjalne źródło i nadal nie robi nic poza skanowaniem, ponieważ nie mam danych NMEA.

Będziesz oczywiście potrzebował małego skryptu [shell | perl | python], aby czytać /dev/ttypxi zapisywać w swoim „fałszywym” pliku fifo.

bmike
źródło
-1

Użyłem pseudoterminalu Posix do stworzenia wirtualnego portu komunikacyjnego w programie OSX C. Możesz wyszukać funkcję biblioteki posix_openpt ().

Tom Dowad
źródło