Création d'un port série virtuel


11

J'essaie de créer une paire de ports série virtuels sur mon Mac. C'est assez facile à faire avec de nombreux programmes de shareware sur un PC. Je pensais qu'il y aurait une commande shell ultra-puissante pour faire cela en une seule ligne, mais je ne la trouve pas.

Je souhaite envoyer des données NMEA dans un port et demander à Google Earth de lire les données de l'autre.

Des conseils?

ÉDITER

Le /dev/ptypxcommentaire de MrDaniel a semblé intéressant - je peux le retirer /dev/ttypxtrès bien dans le terminal.
Mais Google Earth semble lire cu. deviceName au lieu des périphériques / ttypx.

spécifiquement (Old Pro):

Lorsque vous essayez d'importer l'emplacement actuel à l'aide d'un GPS (ou d'un flux NMEA acheminé via notre port série virtuel), nous allons: Outils> GPS> Temps réel pour accéder à l'écran d'importation.
Après avoir sélectionné l'option NMEA et activé le suivi en temps réel, il recherche les appareils connectés et semble regarder:

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

Même si notre port série ttypx fonctionne correctement, il ne le recherche pas.
Je souhaite importer les données de cet appareil dans Google Earth.


1
+1, car je voudrais également le faire pour le développement de périphériques. Peut également être ServerFault, SuperUser ou StackOverflow.
Max Ried

Avez-vous envisagé d'utiliser Google Latitude à la place? Si cela n'est pas acceptable, veuillez fournir plus de détails sur ce que fait Google Earth.
Old Pro

Avez-vous réussi à contrôler Google Earth via une fausse position fournie via un port NMEA? J'aimerais savoir comment cela fonctionne.
Max N

1
@MaxN - Non. J'ai abandonné :(
DefenestrationDay

C'est proche (AppleScript): laclefyoshi.blogspot.com/2011/01/…
Max N

Réponses:


9

Google a un outil extrêmement utile pour les développeurs Arduino et il simule très bien les ports série sur OS X à des fins de test. Cela ne fonctionne que jusqu'à 10,6

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

(précédemment disponible sur http://code.google.com/p/macosxvirtualserialport/ )

Cela pourrait-il vous aider?


2
Pardonnez-moi de le restaurer et de le modifier - je préfère que vous ayez le mérite d'avoir mis au jour le formidable logiciel de port série virtuel de Google. Vous pouvez bien sûr le supprimer à nouveau et je le laisserai tranquille si tel est votre préférence.
bmike

2
Ce site code.google.com pour macosxvirtualserialport renvoie désormais une erreur 404.
hotpaw2

1
Le projet Google semble être disponible sur Github maintenant: github.com/clokey/PublicCode/tree/master/… il ne fonctionne que jusqu'à 10.7
Max N

5

Je pense que ce que vous recherchez est un pseudo-terminal comme indiqué dans Text-Terminal-HOWTO , il semble que Mac OS X soit intégré /devet il semble que cela puisse faire ce que vous voulez, par exemple, deux programmes parlant ensemble via un " port série virtuel.

Les pseudo-terminaux sont des paires de périphériques tels que / dev / ptyp3 et / dev / ttyp3. Aucun périphérique physique n'est directement associé à l'un d'eux, pas même un connecteur de port série. Mais si un programme traite ttyp3 comme s'il s'agissait d'un port série, ce qui est lu et écrit sur ce port apparaît sur l'autre membre de la paire ptyp3 qu'un autre programme utilise pour lire et écrire. Ainsi, deux programmes se parlent via cette méthode et un programme sur ttyp3 pense qu'il parle à un port série. C'est quelque chose comme un "tuyau" entre ces deux tty.

De plus, le programme d' écran peut également vous être utile.


1

Il y a plusieurs angles à votre question ici:

  • Voulez-vous simplement convertir les pistes NMEA, etc. en quelque chose que Google Earth peut lire (et afficher)? GPSBabel est l'outil de choix pour ce genre de choses.
  • Voulez-vous connecter votre GPS et lire son contenu via un port série? Les Mac n'ont pas de ports série, vous aurez besoin de quelque chose comme Keyspan USA-19HS pour connecter des périphériques série via USB.
  • Voulez-vous créer des périphériques série virtuels par curiosité? C'est définitivement possible mais au-delà de mes connaissances ...

1
Option 3. J'ai les données NMEA (en temps réel) et je souhaite les afficher en temps réel. Google Earth lit à partir d'un port série, il me suffit donc de comprendre comment configurer les ports et les diriger vers l'un d'eux.
DefenestrationDay

D'où proviennent les données NMEA? GPSBabel est capable de faire office de convertisseur en temps réel, voir gpsbabel.org/htmldoc-1.4.2/tracking.html
nohillside

Il est diffusé depuis un iPhone. Je n'ai besoin de conversion en rien (en particulier kml), j'ai juste besoin d'un port série virtuel pour y jeter les données nmea et les aspirer à l'autre extrémité par Google Earth.
DefenestrationDay

Chaque fois que j'utilise mon Keyspan, je souris simplement d'oreille à oreille. Surtout sur mon nouvel Air 11 pouces - tellement de nouveaux et d'anciens fonctionnant ensemble ;-)
bmike

0

Il n'est pas clair que vous puissiez simuler la détection de port série intégrée, mais je commencerais par un canal nommé (mkfifo) /dev/cu.fake.ttypxet j'aurais des données prêtes à être lues lorsque vous activez le temps réel.

Ma copie de Google Earth semble interroger chaque source potentielle dans l'ordre et continue de ne faire que scanner car je n'ai aucune donnée NMEA fournie.

Vous aurez bien sûr besoin d'un petit script [shell | perl | python] pour lire /dev/ttypxet écrire dans votre "faux" fichier fifo.



-1

J'ai utilisé un pseudoterminal Posix pour créer un port de communication virtuel dans un programme OSX C. Vous pouvez rechercher la fonction de bibliothèque posix_openpt ().

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.