Puerto serial Qt

Introducción

puerto serial Qt

En este ejemplo de puerto serial Qt, vamos a analizar como es que podemos configurar el puerto serial de nuestra computadora para que interactué con Qt en C++. En este caso estamos haciendo uso de linux, pero funciona igual para MAC o Window. Además, es importante mencionar que vamos a ver si se estableció conexión con una tarjeta de desarrollo, en este caso Arduino.

El ejemplo lo puedes descargar de: https://www.dropbox.com/sh/k4hr3tu49sinhqc/AADpVi2Cpw1eO6Nm_vCz7ZQKa?dl=0

Crear proyecto puerto serial Qt

En primer lugar, vamos a crear un nuevo proyecto en Qt con file, new project. Podemos llamarlo, puerto serial Qt o similar. Vamos a seleccionar una Qt Widget Application. Seleccionamos las clases y archivos mainWindow o como se quiera llamar y la configuración del kit adecuado para tu equipo.

A continuación, analizamos los archivos creados por la plantilla Qt Widget Application para nuestro proyecto de puerto serial Qt.

Congfiguración de puerto serial archivo «.pro»

Lo primero, es modificar dicha platilla para configurar los parámetros requeridos para nuestro proyecto. Primero nos posicionamos en el archivo «.pro» en donde tenemos que agregar otro módulo de Qt despues de «core» y «gui» que vienen por defecto en esta plantilla. Agregamos, el «serialport«.

Configuración de puerto serial archivo «.h»

Ya tenemos el módulo agregado, ahora, tenemos que definir la clase de nuestro puerto serial qt. En este caso vamos a usar la clase QSerialPort. Esta la vamos a agregar al inicio de el archivo biblioteca mainWindow.h, posterior a los include. «class QSerialPort;«.

Ya que tenemos definida la clase, tenemos que crear el objeto. En este caso, el objeto puede tener el nombre que nosotros queramos. Por lo que necesitamos escribir QSerialPort *hw; en donde «hw» hace referencia a hardware, que es el nombre que le damos al objeto. Favor de tomar en cuenta que va con apuntador. Como referencia, es igual al de la ventana MainWindow. Solo que esta usa el namespace Ui.

QSerialPort *hw; //Creamos el objeto
QString hw_port_name;
bool hw_is_available;

En el ejemplo, se tienen la inicialización de dos variables, un tipo QString hw_port_name y otra bool hw_is_available. Estas no son necesarias declararlas aqui, solo se dejaron ya que se usan siempre que configuramos el puerto serial Qt.

Configuración de puerto serial archivo «.cpp»

Primeramente, en l archivo de ventana principal vamos a inicializar el módulo serial. Para esto, vamos a incluir las bibliotecas QSerialPort y QSerialPortInfo.

Posteriormente, de la instrucción ui->setuUi(this); podemos poner los comandos de inicialización para que se corran o ejecuten junto con la ventana principal.

Las funciones de interes en el código de puerto serial Qt, son las siguientes:

QSerialPortInfo::availablePorts().length() la cual nos retorna en entero la cantidad de puertos disponibles en nuestro sistema.

QSerialPortInfo::AvailablePorts() retorna la lista de los parámetros disponibles, esto con todas las propiedades, que en el código lo asignamos a una lista con nombre de serialPortInfo, con tipo de dato QSerialPortInfo. La dejamos con const indicando que es solo lectura.

Parámetro serialPortInfo.vendorIdentifier() y serialPortInfo.productIdentifier(), nos dan en formato de QSerialPortInfo la información del fabricante y del comerciante del dispositivo que estamos conectando al sistema.

En el código, se puede observar que usamos estos parámetros para configurar algunos de los elementos de la ventana de la interfaz.

Configurar el puerto seleccionado

Suponiendo que tenemos configurado, un puerto, uno de los parámetros a seleccionar es el de la velocidad, este lo podemos declarar con la instrucción de el obeto hw, setBaudRate(QSerialPort::Baud9600);.

Validación del programa puerto serial Qt

Para validar nuestro programa, solo corremos la ventana procurando tener algún dispositivo serial conectado a nuestro puerto USB. Un Arduino por ejemplo, puede funcionar bien. Se puede probar con más de un componente serial/USB para que se valide y se revise que funcione la función foreach.

Escríbenos tus dudas o comentarios

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Usamos Cookies en nuestro sitio WEB

Por favor confirma, si aceptas nuestras cookies de rastreo. También puedes negar el uso de cookies de rastreo y seguir navegando sin que ninguna información sea enviada a servicios de terceros.