¿Cómo conecto dos puertos seriales en GNU / Linux?

6

Necesito que un puerto serie reciba datos y otro para transmitir los mismos datos. ¿Cómo hago tal configuración en GNU / Linux? Uno será un puerto creado por bluetooth y otro será un adaptador USB a serie.

Lo más probable es que esté usando la versión más reciente de 64 bit Mint (12, si no recuerdo mal).

AndrejaKo
fuente

Respuestas:

8

Socat puede manejar puertos serie.

Normalmente se usa con interfaces de red y puede retransmitir datos, pero también maneja dispositivos seriales TTY. Los ejemplos en el enlace anterior no incluyen la transmisión serie-serie, pero a partir de esos ejemplos, probablemente pueda resolver los parámetros de comando que deberían lograrlo.


Actualizar:

Para vincular el puerto serie ttyS0 a otro puerto serie:

 socat /dev/ttyS0,raw,echo=0,crnl /dev/ttyS1,raw,echo=0,crnl

de http://technostuff.blogspot.co.uk/2008/10/some-useful-socat-commands.html

socat también tiene opciones para que pueda, si lo desea, registrar los datos que se transmiten.

RedGrittyBrick
fuente
2

Para un procedimiento rápido y sucio, configure un programa emulador de terminal , como minicom , para cada puerto serie. Eso le dará una interfaz interactiva full-duplex para transferir texto entre puertos. Varios protocolos de transferencia de módem están integrados para transferencias de archivos y datos binarios.

Para una transferencia de datos más compleja, por ejemplo, manejando una especie de formato / protocolo de datos personalizado, tendrá que escribir un programa para acceder al puerto serie para manejar los datos.

ACTUALIZAR

Proporcione más detalles sobre lo que está tratando de hacer. ¿Se deben conectar ambos puertos seriales a la misma PC o cada puerto a una PC? ¿Hay alguna razón por la cual los dos puertos seriales no podrían conectarse entre sí si ese es el propósito de esta "pregunta de enlace"?

Dado que uno de los "puertos serie" es un adaptador USB-RS232, no hay razón para conectar cada puerto serie a través de una PC. Conecte los dos puertos seriales entre sí (puede que sea necesario conectar un adaptador de conexión) y luego conecte el USB a una PC. Use un programa emulador de terminal para lidiar con el único puerto serie ahora conectado a la PC.

Bluetooth <---->  USB adapter  <--->  PC
serrín
fuente
Parece interesante. ¿Hay alguna forma (relativamente fácil) de decir un archivo de captura de tubería para que un proceso minicom transmita lo que otro recibe? En el peor de los casos, incluso pegar un archivo de captura en otra ventana podría ser suficiente.
AndrejaKo
Puede registrar (grabar) todo lo que se envía y recibe en cada programa minicom. El registro se puede apagar / pausar y volver a encender usando las teclas. Tendría que detener el registro por completo para comenzar a grabar en un archivo de registro diferente.
aserrín
Bluetooth tiene soporte para la emulación en serie donde los adaptadores bluetooth de ambos dispositivos crean puertos en serie virtuales que al software aparecen como puertos en serie reales. La pila Bluetooth del sistema operativo generalmente se usa para hacer eso y los adaptadores Bluetooth que tienen puertos seriales de hardware real son caros y (al menos para mí) difíciles de obtener. Mi teléfono móvil tiene receptor GPS y software que puede enviar oraciones NMEA a través del puerto serie bluetooth que puedo recibir en el emulador de terminal de mi PC y quiero redirigirlo a un microcontrolador que luego procesará esos datos.
AndrejaKo
El microcontrolador se usará más tarde con un receptor GPS que tiene un puerto serie real que no tengo en este momento y quiero usar el teléfono móvil para desarrollar software en el microcontrolador porque ambos módulos emiten el tipo de oración NMEA I necesitar.
AndrejaKo
Gracias por la aclaración. Espero que encuentres una solución.
aserrín