Создание виртуального последовательного порта

11

Я пытаюсь создать пару виртуальных последовательных портов на моем Mac. Это довольно легко сделать со многими условно-бесплатными программами на ПК. Я подумал, что будет какая-то сверхмощная команда оболочки, чтобы сделать это в одной строке, но я не могу ее найти.

Я хочу отправить данные NMEA в один порт, а Google Earth - считывать данные из другого.

Какие-нибудь советы?

РЕДАКТИРОВАТЬ

/dev/ptypxКомментарий мистера Даниэля показался мне интересным - я могу вытащить его из /dev/ttypxтерминала в терминале.
Но Google Earth, кажется, читает Cu. DEVICENAME вместо / ttypx deveices ..

конкретно (Old Pro):

При попытке импортировать текущее местоположение с помощью GPS (или потока NMEA, передаваемого через наш виртуальный последовательный порт), мы идем: Инструменты> GPS> Реальное время, чтобы перейти к экрану импорта.
После выбора опции NMEA и включения отслеживания в реальном времени, он ищет подключенные устройства и, кажется, смотрит на:

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

Даже если наш последовательный порт ttypx работает нормально, он не ищет его.
Я хотел бы получить данные с этого устройства в Google Планета Земля.

DefenestrationDay
источник
1
+1, как я также хотел бы сделать это для разработки устройства. Также может быть ServerFault, SuperUser или StackOverflow.
Макс Райд
Рассматривали ли вы вместо этого использование Google Локатор ? Если это неприемлемо, предоставьте более подробную информацию о том, что делает Google Планета Земля.
Старый Про
Удалось ли вам успешно управлять Google Планета Земля с помощью поддельной позиции, предоставленной через порт NMEA? Мне было бы интересно, как это работает.
Макс. N
1
@MaxN - Нет. Я сдался :(
DefenestrationDay
Это близко (AppleScript): laclefyoshi.blogspot.com/2011/01/…
Макс N

Ответы:

9

Google имеет чрезвычайно полезный инструмент для разработчиков Arduino и очень хорошо имитирует последовательные порты в OS X для тестирования. Работает только до 10.6

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

(ранее доступно по адресу http://code.google.com/p/macosxvirtualserialport/ )

Может ли это помочь вам?

Рауль Педроче
источник
2
Простите, что удалил это и отредактировал - я бы предпочел, чтобы вы получили признание за то, что вы обнаружили на свет потрясающее программное обеспечение виртуального последовательного порта от Google. Вы можете, конечно, удалить его снова, и я оставлю это в покое, если это ваше предпочтение.
bmike
2
Этот сайт code.google.com для macosxvirtualserialport теперь возвращает ошибку 404.
hotpaw2
1
Похоже, что проект Google теперь доступен на Github: github.com/clokey/PublicCode/tree/master/… хотя он работает только до 10.7
Макс. N
5

Я думаю, что вы ищете псевдо-терминал, как отмечалось в Text-Terminal-HOWTO , похоже, что Mac OS X встроен, /devи кажется, что он может делать то, что вы хотите делать, например, две программы, говорящие вместе через " виртуальный "последовательный порт".

Псевдо-терминалы - это пары устройств, таких как / dev / ptyp3 и / dev / ttyp3. Нет физического устройства, напрямую связанного с любым из них, даже разъема последовательного порта. Но если программа обрабатывает ttyp3 как последовательный порт, то, что считывается и записывается в этот порт, появляется на другом члене пары ptyp3, который другая программа использует для чтения и записи. Таким образом, две программы общаются друг с другом с помощью этого метода, а одна программа на ttyp3 считает, что она общается с последовательным портом. Это что-то вроде «трубы» между этими двумя tty.

Кроме того, экранная программа может быть полезна и вам.

MrDaniel
источник
1

Здесь есть несколько точек зрения на ваш вопрос:

  • Вы просто хотите конвертировать дорожки NMEA и т. Д. В то, что Google Планета Земля может читать (и отображать)? GPSBabel является инструментом выбора для такого рода вещей.
  • Вы хотите подключить свой GPS и прочитать его содержимое через последовательный порт? Mac не имеет последовательных портов, вам понадобится что-то вроде Keyspan USA-19HS для подключения последовательных устройств через USB.
  • Вы хотите создавать виртуальные последовательные устройства из любопытства? Это определенно возможно, но я не знаю ...
Nohillside
источник
1
Вариант 3. У меня есть данные NMEA (в реальном времени), и я хочу отображать их в реальном времени. Google Планета Земля читает из последовательного порта, поэтому мне просто нужно выяснить, как настроить порты, и направить его в один из них.
DefenestrationDay
Откуда поступают данные NMEA? GPSBabel может выступать в качестве конвертера в реальном времени, см. Gpsbabel.org/htmldoc-1.4.2/tracking.html
nohillside
Это транслируется с iPhone. Мне не нужно преобразовывать что-либо (в частности, kml), мне просто нужен виртуальный последовательный порт для передачи данных nmea и высасывания их на другом конце с помощью Google Планета Земля.
DefenestrationDay
Каждый раз, когда я использую свой Keyspan, я просто ухмыляюсь от уха до уха. Особенно на моем новом 11-дюймовом Air - так много нового и старого, работающего вместе ;-)
bmike
0

Не ясно, что вы можете подделать встроенное обнаружение последовательного порта, но я бы начал с именованного канала (mkfifo) /dev/cu.fake.ttypxи подготовил некоторые данные для чтения при включении в реальном времени.

Моя копия Google Планета Земля, по-видимому, опрашивает каждый потенциальный источник по порядку и продолжает выполнять только сканирование, поскольку у меня нет данных NMEA.

Вам, конечно, понадобится небольшой скрипт [shell | perl | python] для чтения /dev/ttypxи записи в ваш «фальшивый» файл fifo.

bmike
источник
-1

Существует инструмент Windows под названием GooPs http://goopstechnologies.com/?page_id=12, который обрабатывает некоторые подобные задачи.

Вы также можете сделать метку, которая считывает координаты из файла и обновляет каждую секунду.

/programming/7249565/how-to-properly-update-google-earth-kml-using-networklinkcontrol-and-the-java-ap

Макс N
источник
Как это решает проблему, описанную в вопросе?
холме
-1

Я использовал псевдотерминал Posix для создания виртуального коммуникационного порта в программе OSX C. Вы можете искать библиотечную функцию posix_openpt ().

Том Доуд
источник