2012-07-13 63 views
9

Estoy buscando una biblioteca de C++ que pueda conectarse y comunicarse con dispositivos de puerto serie. Necesito uno que pueda usarse en Windows y Linux. Ya he encontrado "serialib" pero esto no tiene ninguna función para enumerar los puertos disponibles.¿Existe una biblioteca multiplataforma de puertos serie C++ que pueda enumerar puertos?

Por lo tanto, o bien necesito una biblioteca multiplataforma "enumerador de puerto" o una biblioteca de puerto serie multiplataforma completamente nueva.

¿Alguien sabe de uno bueno?

Gracias, Dan.

+0

Está tratando de resolver un problema. Los días en que podría enchufar un cable serie en un conector claramente etiquetado en la parte posterior de la máquina han terminado. Puede obtener una lista de puertos disponibles con una llamada nativa, pero eso aún no le dice cuál de esos puertos está realmente conectado al dispositivo. El usuario tendrá que resolver esto. Proporcionarle un archivo de configuración que le permita ingresar el nombre del puerto. Ahora ya no importa qué formato específico para el nombre del puerto se utiliza. –

+3

Tener que escribir un nombre de puerto en un archivo de configuración es un inconveniente. He visto aplicaciones multiplataforma que enumeran puertos utilizables/conectados y proporcionan una lista para el usuario. Esto es lo que quiero. (un buen ejemplo es el IDE de Arduino, sin embargo, está escrito en java). – DanJAB

+0

¿Encontraste una biblioteca multiplataforma para Arduino? Por supuesto, es un inconveniente para el usuario. Los puertos serie datan de los años setenta, un hardware de hace cuarenta años que no admite plug y pray. El error aquí es confiar en un estándar de hardware de cuarenta años. Y sí, probablemente no es su culpa, algunos proveedores de hardware eligieron la ruta fácil. Encuentra otro proveedor. –

Respuesta

2

El proyecto QextSerialPort es una biblioteca de puerto serie multiplataforma que incluye la enumeración de puertos. Here es su ejemplo de hacer una simple enumeración de todos los puertos serie.

+1

Gracias por la sugerencia, no estoy seguro de que esto sea exactamente lo que estoy buscando, ya que no estoy usando Qt. – DanJAB

+1

Bastante, pero tenga en cuenta que no necesita usar ninguna de las instalaciones de GUI de Qt. La biblioteca QtCore (todo lo que se necesita para usar QextSerialPort) solo depende de Glib y PCRE. – wjl

+0

Tuve errores sobre errores al intentar integrar QextSerialPort en, por ejemplo, Eclipse en lugar de QtCreator – user3085931

7

http://wjwwood.io/serial/

https://github.com/wjwwood/serial

Esta es una biblioteca puerto serie multi-plataforma, que es el MIT licencia y no tiene dependencias externas de tiempo de ejecución.

+1

Gracias por eso, parece el tipo de cosa que estaba buscando. Ya he empezado a usar el de aquí: http://www.teuniz.net/RS-232/ y eso funciona bien para mí. – DanJAB

+0

Acerca de [http://www.teuniz.net/RS-232](http://www.teuniz.net/RS-232):
_ "Utiliza sondeo para recibir caracteres del puerto serie. basado en eventos no es compatible. "_
¿Alguna otra opción sin las restricciones antes mencionadas? –

+0

Desafortunadamente, la biblioteca es bastante descuidada con respecto a las asignaciones de memoria, las fugas, las excepciones arrojadas, el bloqueo y, por lo que puedo ver, no admite async IO. – Trass3r

Cuestiones relacionadas