2009-07-29 39 views
5

¿Cómo leo los datos del puerto serie usando C? y luego otra vez transferir los datos al módem? Estoy utilizando el cable RS 232 para la comunicación en serie ...Leer datos del puerto serie

+2

¿Qué sistema operativo? –

+2

¿Qué hardware/plataforma? – DaveR

+1

Definitivamente necesita agregar más información a esta pregunta. – Johan

Respuesta

2

En primer lugar, esto es muy dependiente del sistema operativo que utilice.

Para el tipo * nix normalmente se abre el dispositivo de puerto serie como archivo normal (/ dev/ttyS0, por ejemplo), y se empieza a leer o escribir desde él. En cuanto a Windows, puedo aconsejarle que busque una biblioteca confiable, porque la comunicación serial de Windows puede ser una verdadera pesadilla. Aún más, puede haber algunas diferencias entre versiones de Windows antiguas y nunca.

Personalmente, porque soy el usuario de wxWidgets, uso wxCTB. Debe buscar la biblioteca que se adapte a IDE que está utilizando.

algunos gratuitos de enlaces de carga;) www.robbayer.com/files/serial-win.pdf www.lookrs232.com/com_port_programming/

+0

No es aplicable para incrustado (está etiquetado como 'incrustado'). –

+0

No es cierto. Incrustado * generalmente * significa Linux o WinCE. –

6

Una gran cantidad de información útil sobre cómo tratar con los puertos serie, tanto en PC y en el extremo del cable del dispositivo se pueden encontrar en el sitio de Jan Axelson para el libro Serial Port Complete.

La interacción real con el puerto será altamente específica de la plataforma. En * nix de la mayoría de los sabores abre un dispositivo llamado algo como /dev/ttya y usa read(), write() y ioctl() para leer, escribir y configurar el puerto.

En Windows, se abre un archivo llamado COM1 (o \\.\COM1 en algunos sabores) con la función CreateFile(), y luego lograr que se configura y feliz con funciones como SetCommState() y la estructura DCB. Los detalles son similares en líneas generales a las cosas que debe hacer en * nix, pero organizado de manera completamente diferente. Puede encontrar toda la discusión sobre la configuración y el uso de puertos COM en MSDN.

En el dispositivo incorporado, accederá directamente a los registros de hardware de UART o interactuará con un RTOS. De cualquier manera, esencialmente no hay forma de hacer que el código en el dispositivo sea ampliamente portátil.

0

En el terreno de Windows, es mejor que encuentre una biblioteca que haga realidad toda la magia.

Personalmente estoy usando Borland C++ para armar pequeñas utilidades para hablar con mi hardware (cargadores de arranque, configuración y pruebas) y estoy muy contento con el TurboPower Async Professional Library que funciona tanto en Delphi como en BCC y es de código abierto (Mozilla Licencia pública 1.1).

2

En el mundo integrado, su compilador tendrá algún mecanismo (generalmente específico del compilador) que le permita acceder a los registros de hardware que se utilizan para implementar la función de puerto serie dentro del dispositivo o en una memoria externa o dispositivo asignado IO. Estas definiciones de registro a menudo son provistas por la herramienta o el fabricante del procesador y es solo el caso de escribir los valores de control de configuración en los registros del puerto en serie para establecer su modo operativo y luego leer los datos del registro de búfer de recepción.

Suena simple pero, en la lista de correo MSP-430, las preguntas de programación de USART son el tema más común.

1

Para ampliar la respuesta de Ian, un compilador c incorporado típico tendrá una directiva de compilación o una declaración cuyos parámetros controlan configuraciones como la velocidad en baudios y asocian el UART (u otro hardware de E/S) con una transmisión. Puede especificar un nombre de secuencia (si tiene más de un puerto serie) o usar los valores predeterminados. Luego puede acceder al puerto serie con las rutinas habituales de caracteres c, y habrá una interrupción cuando reciba cada carácter. Entonces su rutina de interrupción lee cada carácter y lo pone en un búfer.

Cuestiones relacionadas