Crear un puerto serie virtual

11

Estoy tratando de crear un par de puertos seriales virtuales en mi mac. Esto es bastante fácil de hacer con muchos programas shareware en una PC. Pensé que habría un comando de shell súper poderoso para hacer esto en una línea, pero no puedo encontrarlo.

Quiero enviar datos NMEA a un puerto y hacer que Google Earth lea los datos del otro.

¿Algun consejo?

EDITAR

El /dev/ptypxcomentario del señor Daniel parecía ser interesante: puedo sacarlo de la /dev/ttypxmulta en la terminal.
Pero Google Earth parece estar leyendo cu. deviceName en lugar de los dispositivos / ttypx.

específicamente (Old Pro):

Al intentar importar la ubicación actual usando un GPS (o una secuencia NMEA canalizada a través de nuestro puerto serie virtual), vamos a: Herramientas> GPS> Tiempo real para llegar a la pantalla de importación.
Después de seleccionar la opción NMEA y habilitar el seguimiento en tiempo real, busca los dispositivos conectados y parece observar:

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

Incluso con nuestro puerto serie ttypx funcionando bien, no lo busca.
Me gustaría llevar los datos de ese dispositivo a Google Earth.

Día de defenestración
fuente
1
+1, ya que también me gustaría hacer esto para el desarrollo de dispositivos. También puede ser ServerFault, SuperUser o StackOverflow.
Max Ried el
¿Has considerado usar Google Latitude en su lugar? Si eso no es aceptable, proporcione más detalles sobre lo que está haciendo Google Earth.
Old Pro
¿Has tenido éxito en el control de Google Earth a través de una posición falsa proporcionada a través de un puerto NMEA? Me interesaría cómo funciona esto.
Max N
1
@MaxN - No. Me di por vencido :(
DefenestrationDay
Esto está cerca (AppleScript): laclefyoshi.blogspot.com/2011/01/…
Max N

Respuestas:

9

Google tiene una herramienta extremadamente útil para los desarrolladores de Arduino y simula muy bien los puertos seriales en OS X con fines de prueba. Solo funciona hasta 10.6

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

(anteriormente disponible en http://code.google.com/p/macosxvirtualserialport/ )

¿Te puede ayudar esto?

Raúl Pedroche
fuente
2
Perdóname por recuperar esto y editarlo. Prefiero que obtengas el crédito por sacar a la luz el increíble software de puerto serie virtual de Google. Por supuesto, puede eliminarlo nuevamente y lo dejaré solo si esa es su preferencia.
bmike
2
Ese sitio code.google.com para macosxvirtualserialport ahora devuelve un error 404.
hotpaw2
1
El proyecto de Google parece estar disponible en Github ahora: github.com/clokey/PublicCode/tree/master/… aunque solo funciona hasta 10.7
Max N
5

Creo que lo que está buscando es un Pseudo Terminal como se indica en Text-Terminal-HOWTO , parece que Mac OS X ha incorporado /devy parece que esto puede hacer lo que quiere hacer, por ejemplo, dos programas que se comunican juntos a través de un " virtual "puerto serie.

Los pseudo terminales son pares de dispositivos como / dev / ptyp3 y / dev / ttyp3. No hay ningún dispositivo físico directamente asociado con ninguno de ellos, ni siquiera un conector de puerto serie. Pero si un programa trata ttyp3 como si fuera un puerto serie, lo que se lee y escribe en ese puerto aparece en el otro miembro del par ptyp3 que otro programa usa para leer y escribir. Por lo tanto, dos programas se comunican entre sí a través de este método y un programa en ttyp3 cree que está hablando con un puerto serie. Es algo así como una "tubería" entre estos dos tty.

Además, el programa de pantalla también puede serle útil.

MrDaniel
fuente
1

Hay varios ángulos para su pregunta aquí:

  • ¿Desea convertir las pistas NMEA, etc. en algo que Google Earth pueda leer (y mostrar)? GPSBabel es la herramienta elegida para este tipo de cosas.
  • ¿Desea conectar su GPS y leer su contenido a través de un puerto serie? Las Mac no tienen puertos en serie, necesitará algo como Keyspan USA-19HS para conectar dispositivos en serie a través de USB.
  • ¿Quieres crear dispositivos seriales virtuales por curiosidad? Eso es definitivamente posible pero más allá de mi conocimiento ...
nohillside
fuente
1
Opción 3. Tengo los datos NMEA (en tiempo real) y quiero mostrarlos en tiempo real. Google Earth lee desde un puerto serie, por lo que solo necesito descubrir cómo configurar los puertos y conectarlos a uno de ellos.
DefenestrationDay
¿De dónde provienen los datos de NMEA? GPSBabel puede actuar como un convertidor en tiempo real, consulte gpsbabel.org/htmldoc-1.4.2/tracking.html
nohillside
Se transmite desde un iPhone. No necesito la conversión en nada (particularmente kml), solo necesito un puerto serie virtual para arrojar los datos nmea y succionarlos al otro extremo por Google Earth.
DefenestrationDay
Cada vez que uso mi Keyspan solo sonrío de oreja a oreja. Especialmente en mi nuevo Air de 11 pulgadas, tanto nuevo como viejo trabajando juntos ;-)
bmike
0

No está claro que pueda falsificar la detección de puerto serie incorporada, pero comenzaría con una tubería con nombre (mkfifo) /dev/cu.fake.ttypxy tendré algunos datos listos para leer cuando habilite el tiempo real.

Mi copia de Google Earth parece sondear cada fuente potencial en orden y continúa haciendo nada más que escanear ya que no tengo datos NMEA proporcionados.

Por supuesto, necesitará un pequeño script [shell | perl | python] para leer /dev/ttypxy escribir en su archivo "falso" fifo.

bmike
fuente
-1

He usado un pseudoterminal Posix para crear un puerto de comunicación virtual en un programa OSX C. Puede buscar la función de biblioteca posix_openpt ().

Tom Dowad
fuente