C: ¿Biblioteca serie de plataforma cruzada RS-232? [cerrado
-
24-10-2019 - |
Pregunta
Estoy buscando una biblioteca multiplataforma de código abierto para trabajar con el puerto serie en C, algo así como el impresionante Piserial Biblioteca (desafortunadamente tengo que usar C para esta aplicación).
Solo he encontrado este: http://www.teuniz.net/rs-232/, y eso no parece haber mencionado la compatibilidad de OS X.
Solución
Uno pensaría que una biblioteca C multiplataforma para puertos serie es algo que ya habría existido durante 20 años, pero a partir de 2013 todavía no había una, así que creé puerto libserial.
Se prueba en Windows, Mac OS X, Linux (incluidos Android), BSD y probablemente también se basará en otros sistemas UNIX. Admite:
- Enumeración de puertos (obteniendo una lista de puertos serie en el sistema)
- Puertos de apertura, cierre y consulta
- Configuración de parámetros del puerto (velocidad de baudio, paridad, etc.)
- Operaciones de señalización de puerto (líneas de control de módem, interrupciones, etc.)
- Lectura, escritura y descarga de datos
- Esperando eventos
- Obtener información de error
La liberación inicial de 0.1.0 está en uso activo por el Sigrok Proyecto para admitir hardware en serie y ya está empaquetado en varias distribuciones de Linux. La versión GIT también incluye nuevas llamadas API para obtener información sobre los adaptadores en serie USB (VID/PID, etc.).
Otros consejos
Me doy cuenta de que dijiste C y no C ++, pero tal vez podrías usar Impulsar los puertos serie de Asio y compilar eso en una biblioteca para estar vinculado con su aplicación C. Afirma ser compatible con POSIX, y OS X es POSIX.
Este es un enchufe descarado, pero tengo una biblioteca con licencia MIT para la comunicación RS-232 que es portátil a Windows y Linux y OS X aquí:
Lancé el mío bajo la licencia del MIT: https://github.com/marzac/rs232
Está programado en C y funciona bien para Windows, Mac y Linux.
OS X admite la API de serie POSIX estándar, de <termios.h>
y <unistd.h>
. Busque las funciones tcsetattr()
, cfsetspeed()
y así.
Obtenga algún código adicional específico de OS X Objective-C en la línea de Amserialport, Goserial, SerialConnect, Polkit, ... e implementa una compilación condicional de su archivo fuente C.