"Si tú no trabajas por tus sueños, alguien te contratará para que trabajes por los suyos”

Steve Jobs

Afiliado
Dominios3Euros

Introducción

Durante los últimos meses hemos estado trabajando en mejorar la compatibilidad de TPVFox con las balanzas Dina de la gama 500. Estas balanzas almacenan los datos de artículos y tickets en su memoria interna, y permiten la comunicación con un PC o servidor mediante software, lo que facilita una gestión más robusta y centralizada.

Esta arquitectura simplificada convierte a las balanzas Dina en excelentes candidatas para integrarse con TPVFox. Esta vinculación permite sincronizar la base de datos de productos y tickets de la tienda de forma automática, mejorando así la eficiencia en la gestión y mantenimiento de los datos.

Actualmente ya hemos completado los primeros pasos para garantizar que esta integración sea viable y estable a largo plazo. Por eso, en esta entrada vamos a comenzar explicando los aspectos básicos de la comunicación entre una balanza Dina y un PC en un entorno Unix/Linux.

Requisitos Previos

  • Balanza Dina (en nuestro caso, gama 500, modelo S-545)

  • PC con sistema Unix (se ha probado en dos versiones de Linux):

    • Linux host-01 6.14.4-1-liquorix-amd64 x86_64
    • Linux host-02 6.8.6-1-liquorix-amd64 x86_64
  • Cable de red RJ45

  • Driver Dibal para Linux/Unix (Baltty v6.01H)

  • Acceso a usuario con permisos de instalación # Proceso de Instalación

1. Instalación del Plugin/Software

El driver que proporciona Dibal para la vinculación de la balanza es sencillo de instalar en sistemas Unix/Linux. Aunque la configuración y la comunicación entre la balanza y el PC pueden presentar algunos inconvenientes, este primer paso de instalación resulta bastante directo.

Tal y como nos llegó, el paquete del driver incluía un total de cinco archivos:

  • El ejecutable del driver (baltty)
  • Un archivo de configuración (balctrol)
  • Tres archivos de documentación (un archivo README, y dos documentos técnicos en formato .doc y .pdf)

Para proceder a su instalación y ejecución desde terminal, optamos por crear un directorio específico en /opt, donde alojamos el driver. Luego, le asignamos permisos de ejecución y añadimos su ruta al PATH del sistema para facilitar su uso desde cualquier ubicación:

# Crear el directorio donde se almacenará el plugin
sudo mkdir -p /opt/dibal
# Copiar los archivos del plugin a la nueva ubicación
sudo cp Baltty\ v6.01H/* /opt/dibal/
# Dar permisos de ejecución al binario
sudo chmod +x /opt/dibal/baltty
# Verificar que el archivo es ejecutable
file /opt/dibal/baltty
# Añadir la ruta del plugin al PATH del sistema (para el usuario actual)
echo 'export PATH=$PATH:/opt/dibal' >> ~/.bashrc
source ~/.bashrc
# Comprobar que el comando baltty está disponible
which baltty

Si el comando baltty devuelve una ruta (por ejemplo, /opt/dibal/baltty), la instalación básica ha sido exitosa.

Importante:

Para que baltty se ejecute correctamente, debe ejecutarse desde un directorio que contenga un archivo llamado balctrol con una configuración válida.

El ejecutable no valida si los datos dentro de balctrol son correctos o están bien formateados; simplemente comprueba si el archivo existe. La única retroalimentación útil en caso de error es la salida por consola o los mensajes del sistema de logs, especialmente los relacionados con el estado de la conexión con la balanza.

2. Configuración Inicial

Una vez instalado el driver, el siguiente paso es configurar los distintos elementos que permiten la comunicación entre la balanza y el PC. En este proceso intervienen tres componentes principales:

  • La balanza Dina
  • El archivo de configuración balctrol
  • El PC o servidor que actúa como receptor

Configuración de la balanza

La configuración de red de la balanza debe realizarse desde su menú interno. Aunque lo ideal sería consultar el manual específico del modelo de balanza Dina que tengáis, tras trabajar con varios modelos similares, podemos confirmar que la mayoría incluyen las opciones de conectividad en el menú 5.1. A continuación, se muestran los códigos más relevantes para configurar la red:

CódigoConfiguraciónDescripción
511 Dirección IP IP estática asignada a la balanza
512 Dirección IP del PC IP del ordenador al que se conectará
513 Número de equipo Identificador único de la balanza en la red
514 Puerto Tx Siempre 3001 (puerto de envío desde la balanza)
515 Puerto Rx Siempre 3000 (puerto de recepción en la balanza)

Es fundamental asignar una IP estática a la balanza y especificar la IP del PC con el que se va a comunicar. Además de estos parámetros básicos, hay otros dos valores clave para establecer correctamente la comunicación:

  • Grupo de balanza (menú 711)
  • Dirección de balanza (menú 5412)
  • Estos valores serán necesarios para configurar adecuadamente el archivo balctrol.

Si ya tenéis una red de balanzas Dina interconectadas, es importante respetar la configuración existente. Si solo estáis realizando pruebas con una única balanza, podéis asignar grupo = 0 y dirección = 0, que son los valores que usaremos en nuestros ejemplos.

Consideraciones adicionales

Además de los valores anteriores, algunos menús adicionales dentro de la balanza permiten activar el envío de tickets o la comunicación de otros datos hacia el PC. Estos aspectos dependen de la funcionalidad que se quiera implementar y pueden variar según el modelo. Para pruebas básicas, basta con:

  • Configurar correctamente la IP de la balanza
  • Establecer la IP del PC destino
  • Asignar el grupo y dirección de la balanza

Con esto, deberías poder establecer una comunicación funcional entre la balanza Dina y tu sistema Unix/Linux.

Balctrol

El archivo balctrol, junto con la documentación proporcionada en el paquete del driver, es relativamente sencillo de configurar. Este archivo define los parámetros de comunicación entre la balanza y el PC. El driver permite comunicación vía RS-232, TCP-IP (modo TCP) o TCP-IP (modo UDP). En nuestro caso, nos centraremos en la configuración mediante TCP-IP en modo TCP, que es la que estamos utilizando.

En el archivo deben definirse los valores que ya mencionamos previamente: IP de la balanza, IP del PC, puertos, grupo, dirección, etc. Además, hay algunos campos adicionales que requieren atención, como el tipo de balanza (serie H, por ejemplo) o si necesita traducción de mensajes según el modelo específico.

Este punto puede resultar complejo, ya que no hay demasiada documentación pública detallada. Es posible que algunos de estos datos puedan obtenerse desde el menú de test y ajustes de la balanza. De no ser así, una alternativa es ir probando combinaciones, ya que algunas opciones solo presentan unas pocas variantes posibles.

A continuación, se muestra un ejemplo de archivo balctrol configurado para una balanza Dina S-545, en un entorno de prueba funcional:

DT = /home/usuario/Directorio/de/trabajo/        # Directorio de trabajo
TC = 1                                            # Tipo de comunicación (1 = TCP/IP TCP)
DI = 192.168.253.100                              # Dirección IP del PC
PR = 3001                                         # Puerto de recepción en el PC
BD = 00 192.168.253.254 3000                      # Grupo Balanza | IP Balanza | Puerto de transmisión
TX = /home/usuario/Directorio/de/trabajo/filetx 141  # Archivo de envío y longitud
RX = /home/usuario/Directorio/de/trabajo/filerx 151  # Archivo de recepción y longitud
BL = 00 0                                         # Dirección Balanza | Traducción de mensajes
BH = 00 1                                         # Dirección Balanza | Tipo de Balanza
PM = 3                                            # Posición de marca de envío
EB = 0                                            # Envío en Bytes (0 = desactivado)
SL = 0                                            # Salto de línea
SI = 0                                            # Captura de señal SIGINT (Ctrl+C)

Recuerda: el archivo balctrol debe estar ubicado en el mismo directorio desde el que ejecutes el comando baltty.

Aunque su sintaxis es simple, en la práctica pueden surgir errores sutiles si algún valor no está bien definido. Más adelante, comentaremos los problemas más comunes y cómo diagnosticarlos.

PC

Si ya tenemos correctamente configurada la balanza y el archivo balctrol, el último paso es establecer la comunicación de red entre la balanza y el PC.

Cuando conectamos directamente un equipo con Unix/Linux a la balanza mediante cable Ethernet, no se asignará automáticamente una dirección IP, ni al PC ni a la balanza. Por lo tanto, es necesario configurar manualmente la IP en el PC para habilitar la comunicación.

A continuación, se muestra cómo hacerlo:

# Ver interfaces de red disponibles
ip a
# Añadir una IP estática al adaptador de red (ajusta 'eth0' según tu sistema)
sudo ip addr add 192.168.253.100/24 dev eth0
# Levantar la interfaz de red, en caso de que esté inactiva
sudo ip link set dev eth0 up
# Verificar conectividad con la balanza
ping 192.168.253.254

Puedes sustituir eth0 por el nombre correcto de tu interfaz de red, que se muestra con el comando ip a. En equipos modernos, puede llamarse enp0s3, enp2s0, etc.

Si el comando ping responde correctamente, eso significa que la red está operativa y hay comunicación física con la balanza.

A partir de este punto, ya puedes lanzar el driver baltty desde el directorio donde tengas el archivo balctrol. Si todo está configurado correctamente, la comunicación debería establecerse sin errores.

cd /home/usuario/Directorio/de/trabajo/
baltty

¿Qué hacer si baltty da errores?

Si ping funciona pero baltty muestra errores o no responde correctamente, las causas más probables son:

  • Error en la configuración de la balanza (IP, puertos, grupo, dirección, etc.)
  • Campos incorrectos o mal formateados en el archivo balctrol
  • Problemas de permisos o ubicación incorrecta del archivo de configuración

Más adelante detallaremos cómo interpretar los mensajes de error y cómo usar los archivos de log para diagnosticar estos casos.

Problemas Comunes y Soluciones

Bash no es el componente base de ejecución en tu sistema

Si al verificar el comando baltty con which no aparece, puede deberse a que tu sistema no está utilizando Bash por defecto o está cargando un perfil personalizado.

  1. Verifica tu shell actual:

    echo $SHELL

    Si obtienes /bin/profile u otro shell alternativo, añade la ruta al PATH de ese entorno:

    echo 'export PATH=$PATH:/opt/dibal' >> ~/.profilerc
  2. Luego recarga el perfil o reinicia la terminal.

Tu sistema es de 64 bits y el driver es de 32 bits

Si al ejecutar baltty obtienes errores como:

  • “No existe el fichero o el directorio”
  • “No se puede ejecutar el fichero binario”

Es posible que el driver no sea compatible con arquitecturas de 64 bits.

  1. Verifica tu arquitectura:

    uname -a

    Deberías ver algo como:

    Linux host-01 6.14.4-1-liquorix-amd64 x86_64 GNU/Linux
  2. Verifica la arquitectura del ejecutable:

    file /opt/dibal/baltty

    Salida esperada:

    ELF 32-bit LSB executable, Intel 80386 [...]
  3. Solución: instala las bibliotecas necesarias para ejecutar binarios de 32 bits:

    sudo dpkg --add-architecture i386
    sudo apt update
    sudo apt install libc6:i386 libncurses5:i386 libstdc++6:i386

La balanza no guarda la IP configurada

Si al introducir una IP en la balanza no queda registrada, probablemente no la has validado correctamente.

  • Pulsa la tecla * después de introducir la IP para confirmarla.
  • Reinicia la balanza tras cambios de red para asegurar que se apliquen correctamente.

Archivo balctrol mal indentado

El archivo balctrol es muy sensible al formato. Espacios adicionales o una indentación incorrecta pueden impedir su interpretación.

  • Usa el archivo de ejemplo del paquete oficial como plantilla pero no respetes su inentación.
  • Asegúrate de no añadir espacios innecesarios al principio o al final de las líneas.

Problema al definir IP con dígitos simples

Las balanzas requieren que las IP se introduzcan con tripletes completos (ej. 192.168.006.023), pero en el archivo balctrol deben escribirse sin ceros a la izquierda:

  • En la balanza: 192.168.006.023
  • En balctrol: 192.168.6.23

Un error aquí puede impedir la comunicación, y se verá reflejado en los logs que intentan la conectividad con la balanza con ip’s que no son las que indicaste y en definitiva como ausencia de conexión.

Error al definir el directorio de trabajo en balctrol

La variable DT (directorio de trabajo) debe terminar con una barra /. Si no lo hace, los archivos internos (fin.dat, ingbal.dat, signalids) se crearán fuera del directorio, lo que puede romper la comunicación:

Correcto:

DT = /home/usuario/dibal/

Incorrecto:

DT = /home/usuario/dibal

Error al crear IP para la interfaz Ethernet

Si al añadir una IP haces algo como:

sudo ip addr add 192.168.253.100/32 dev eth0

o sin especificar el prefijo (/24), no se establecerá comunicación con otras direcciones IP del mismo rango.

  • Usa siempre /24 para permitir comunicación dentro de la red local:

    sudo ip addr add 192.168.253.100/24 dev eth0

Verificación de la Instalación

Aunque ya hemos ido mencionando varios pasos de verificación a lo largo del artículo, en esta sección reunimos todos los puntos clave para asegurarnos de que la instalación ha sido exitosa. También se incluyen ejemplos de salida esperada y errores comunes que pueden aparecer si algo falla.

1. Verificar instalación del driver baltty

Para comprobar que el driver está correctamente instalado y disponible en el sistema, utiliza el comando which:

which baltty
/opt/dibal/baltty

Este comando debe devolver la ruta al ejecutable baltty, confirmando que el sistema lo reconoce.

Si el comando no devuelve nada, revisa si añadiste correctamente la ruta /opt/dibal al PATH de tu shell. Consulta la sección de problemas comunes para más detalles.

2. Verificar la conectividad de red con la balanza

Antes de ejecutar baltty, es fundamental comprobar que la interfaz de red está configurada y activa. Puedes verificar la conexión con la balanza mediante el comando ping:

ping 192.168.253.254

Salida esperada si todo está correcto:

PING 192.168.253.254 (192.168.253.254) 56(84) bytes of data.
64 bytes from 192.168.253.254: icmp_seq=1 ttl=63 time=34.2 ms
64 bytes from 192.168.253.254: icmp_seq=2 ttl=63 time=35.4 ms
64 bytes from 192.168.253.254: icmp_seq=3 ttl=63 time=32.6 ms
^C
--- 192.168.253.254 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 3002ms

Si no hay respuesta, el ping mostrará algo como:

PING 192.168.253.254 (192.168.253.254) 56(84) bytes of data.
^C
--- 192.168.253.254 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2072ms

En este caso, revisa:

  • La IP asignada al PC
  • La IP configurada en la balanza
  • El estado de la interfaz de red (ip a)
  • El cableado y conexión física

3. Ejecutar baltty y verificar el log

Una vez verificada la conectividad, navega al directorio de trabajo que contiene el archivo balctrol y ejecuta el driver:

cd /home/usuario/Directorio/de/trabajo/
baltty

El driver generará un archivo de log, normalmente llamado BalttyEstadoBalanzas.log, en el que se pueden revisar los resultados de la comunicación.

Ejemplos de mensajes en el log:

00;192.168.253.254;3000;29/06/2025;00:26:32;1;Balanza OK
00;192.168.253.254;3000;29/06/2025;00:26:32;1;La balanza rechaza la comunicación
  • “Balanza OK”: comunicación establecida correctamente.
  • “La balanza rechaza la comunicación”: error en la configuración de la balanza o del archivo balctrol.

Si deseas una trazabilidad más detallada, puedes ejecutar el comando con salida extendida a fichero:

baltty log 2> fichero.log

Esto creará un archivo fichero.log con todos los pasos y posibles errores durante la ejecución de baltty.

Con estos pasos puedes confirmar si la instalación, configuración y comunicación han sido exitosas antes de continuar con una integración más profunda o el uso en producción.

Conclusión

En este artículo hemos recorrido todos los pasos necesarios para instalar y configurar la balanza Dina S-545 en un entorno Unix/Linux, desde la preparación del sistema hasta la verificación de la comunicación entre el PC y la balanza.

Hemos abordado desde la instalación del driver y la configuración de red, hasta la edición del archivo balctrol y la solución de los problemas más comunes, permitiendo así una integración funcional y estable con TPVFox u otras aplicaciones de gestión.

Resumen de los pasos realizados

  • Instalación del driver Baltty y asignación de permisos.
  • Configuración de la balanza Dina con IP, puertos, grupo y dirección.
  • Creación y ajuste del archivo de configuración balctrol.
  • Asignación de IP manual al PC y activación de la interfaz Ethernet.
  • Verificación de conectividad con ping y ejecución de baltty.
  • Revisión de logs y diagnóstico de errores comunes de comunicación o compatibilidad.

Consejos finales

  • Consulta siempre el manual específico de tu modelo Dina, ya que pueden existir ligeras diferencias entre versiones.
  • Revisa cuidadosamente la sintaxis del archivo balctrol, incluyendo la indentación y la ausencia de espacios adicionales.
  • Si tienes errores al ejecutar baltty, verifica si necesitas instalar bibliotecas de compatibilidad para 32 bits en tu sistema.
  • Utiliza los logs generados (BalttyEstadoBalanzas.log) o ejecuta baltty log 2> debug.log para obtener trazabilidad y detectar errores en tiempo real.

Con estos recursos y pasos bien aplicados, deberías poder integrar y gestionar una balanza Dina S-545 de forma eficiente y estable en tu entorno Unix/Linux.
Si tienes dudas, errores específicos o nuevas experiencias con otros modelos de balanza, no dudes en compartirlas en los comentarios.