Browsing Tag
linux

Lectoras QR Honeywell, nuestro dispositivo USB serial a conectar.

Recientemente estoy trabajando en un proyecto en el que necesito conectar dos lectoras QR Honeywell modelos YJ HF600 a través de una comunicación usb serial a una Raspberry Pi y obtener de manera programada los valores que ellas regresan tras escanear un código QR.

Haré un primer ejercicio de lectura haciendo uso de Python por la facilidad y rapidez con la que podemos programar en este lenguaje para realizar pruebas y prototipos.

comunicación usb serial con Python y Raspberry PI

Lectoras QR Honeywell – Raspberry Pi

¿Cómo se comunican las lectoras QR Honeywell por usb?

Así como la mayoría de las lectoras de códigos de barra, las lectoras QR suelen emular un teclado y transmitir la información escaneada como si hubiese sido tecleada. Es decir, nuestros equipos a los que conectamos las lectoras suelen ver a estas como si fuesen un teclado teclado qwerty.

Hay lectoras que permiten configurarse para generar una comunicación usb serial que en el caso de las Honeywell basta con escanear su código de configuración que vienen en el manual y de manera automática quedan configuradas para generar una comunicación usb serial con el equipo al que las conectamos que en este caso es nuestra Raspberry Pi.

Detectando comunicación usb serial de nuestra Lectora QR en la Raspberry Pi

Ya que tenemos configurado y conectado nuestro dispositivo usb serial en la Raspberry Pi, ejecutamos el comando

Go en Raspberry Pi

Instalando la versión de Go por defecto con APT INSTALL

Instalar Go en Raspberry Pi usualmente es una labor muy sencilla si usamos el sistema de paquetes APT de la Raspberry PI, simplemente ejecutamos:

sudo apt update
sudo apt install golang

Sin embargo la versión de Golang que se nos instala a través del sistema de paquetes APT es una versión bastante rezagada contra la última lanzada en el sitio oficial del lenguaje Golang, por lo que procederemos a desinstalar está versión en caso de que la hubiésemos instalado y vamos a instalar la versión más reciente desde el sitio oficial.

sudo apt remove golang
sudo apt-get autoremove
source .profile

Instalando la versión más reciente de Go en Raspberry pi desde código fuente

Con la secuencia anterior ya hemos eliminado la versión cargada de Golang desde APT. Procedemos a descargar e instalar la versión mas reciente de Go desde el sitio oficial de Golang.

Así como Node.js tiene NPM o Ruby tiene Bundler, en PHP tenemos PHP Composer. Un manejador de paquetes que nos facilita administrar las dependencias de las librerías con las que trabajamos en nuestros proyectos en PHP.

Instalando PHP Composer

Si eres usuario de windows, basta con descargar el instalador siempre desde su sitio oficial: https://getcomposer.org/Composer-Setup.exe

En mi caso, me encuentro trabajando en un Debian Linux, pero los pasos que voy a ejecutar funcionan de manera similar en Ubuntu.

Descargamos el instalador de PHP Composer

curl -sS https://getcomposer.org/installer -o composer-setup.php

Ejecutamos su instalación

sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer

Ejecutado lo anterior nos arrojara lo siguiente en la linea de comando.

composer php setup

Me ha tocado revisar un servidor que presenta un mysql error al iniciar su motor de bases de datos, más precisamente un bloqueo en el archivo tc.log en el proceso de arranque del motor mariadb / mysql.

[Note] Recovering after a crash using tc.log
[ERROR] Can't init tc log
[ERROR] Aborting
¿El porqué de esté MySql Error?
  • Espacio de disco saturado.
  • Archivo de log tc.log corrupto al no tener espacio para generarse el archivo correctamente.
  • Falta de prevención al no tener un sistema de monitoreo de recursos activado

Como sysadmin lo primero que realizamos siempre es analizar los logs del sistema, en el 90% de los casos nos indicaran el camino para resolver el problema, en este caso nos indica que el problema se presenta al intentar iniciarlizar el sistema de logs del motor Mysql, por un posible bloqueo en el archivo de log tc.log

¿Solución al mysql error tras revisar el servidor?
  • Liberar espacio en disco.
  • Eliminar el archivo tc.log sudo mv /var/lib/mysql/tc.log /var/lib/mysql/tc_bk.log para que mysql lo pueda generar nuevamente en el siguiente arranque.
  • Como prevención para futuros casos, programar alarmas para que se notifique al cliente cuando el servidor se encuentre en situación critica en cuanto a sus servicios.