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.


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?


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.


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ą ...

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.



-1

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.