В списке рассылки Python есть очень похожий поток , в котором упоминаются виртуальные COM-порты Windows и обсуждаются возможности псевдо-tty в Unix. Если приложения, которые вы хотите использовать, позволяют вводить определенный файл устройства tty, это может быть самый простой маршрут. (Если не попросить авторов предоставить API плагина для того, что вы пытаетесь сделать, или купить себе Bluetooth-мышь $ 20 .)
Вы используете OS X?
В коде Google есть проект macosxvirtualserialport , который предоставляет графическую оболочку для некоторых функций утилиты socat . Я бы посоветовал взглянуть на socat, если вы видите потенциал в псевдо-tty маршруте. Я полагаю, что вы могли бы использовать socat для связи канала из программы Python с псевдо-tty.
Большинство родных приложений Mac будут запрашивать IOServiceMatching для устройства с kIOSerialBSDRS232Type, и я сомневаюсь, что псевдо-tty будет отображаться как служба IOKit.
В этом случае, если вы не можете найти проект, в котором уже реализована такая вещь, вам потребуется реализовать драйвер, как описано в этом Как создать виртуальный COM-порт поток. Если вы собираетесь создать драйвер устройства, вы можете использовать IOKit из-за этого вероятного запроса IOServiceMatching. Вы можете найти проект Apple16X50Serial, упомянутый в этом посте, в верхней части списка открытых исходных кодов Apple (перейдите на главную страницу и выберите более старую версию ОС, если вы хотите нацелиться на что-то предварительно. -10,6).
Если ваше приложение наиболее полезно с данными в реальном времени (например, приложение RouteBuddy, упомянутое в ветке списка рассылки Python , может регистрировать текущие позиции ), тогда вам нужно будет получать обновления из ваших веб-источников (надеюсь, они поддерживают длинные (опрос) и преобразовать их в базовые NMEA RMC предложения. Вы не хотите делать это из своего кода драйвера. Вместо этого разделите вашу работу на части ядра и пользователя, которые могут взаимодействовать, и поместите как можно меньше кода в часть ядра.
Если вы хотите, чтобы приложения читали и записывали в эти веб-службы, лучше всего имитировать устройство Garmin. Garmin более или менее задокументировал свой протокол в файле IntfSpec.pdf, включенном в их Device Interface SDK . Опять же, вы хотели бы разбить как можно больше на код пользовательского пространства.
Мне не удалось найти проект или утилиту, которая реализует сторону ядра виртуального последовательного интерфейса на основе IOKit, но я был бы удивлен, если бы где-нибудь там не было ни одного сокрытия. К сожалению, большинство ответов, которые я нашел на этот вопрос, были такими: разработчик велел заняться написанием текста .