El protocolo UART de Smart Display es un protocolo de comunicación propietario desarrollado por WINSTAR para permitir la comunicación y el control entre un controlador host y los Smart Displays WINSTAR a través de la interfaz UART. Junto con WINSTAR GUI Builder, ofrece un flujo de desarrollo HMI eficiente, desde el diseño de la interfaz de usuario hasta la comunicación y el control del dispositivo.
Con GUI Builder, los desarrolladores pueden crear interfaces HMI utilizando diferentes Widgets, desde elementos básicos como Button y Text hasta Gauge y Keypad, para adaptarse a los requisitos de cada aplicación. Este enfoque de desarrollo visual simplifica el diseño de la UI y aporta mayor flexibilidad a la hora de crear interfaces específicas para cada aplicación.
Una vez creada la interfaz de usuario, el controlador host puede comunicarse con el Smart Display a través de UART y controlarlo mediante el protocolo de comunicación propietario y los comandos de WINSTAR. La integración del diseño de la UI con la comunicación UART ayuda a simplificar el desarrollo HMI y la integración de sistemas.
WINSTAR continúa mejorando GUI Builder para ofrecer un entorno de desarrollo más eficiente y flexible para aplicaciones con Smart Display.
Smart Display GUI Builder – Configuración de un proyecto UART
Smart Display GUI Builder ofrece una interfaz intuitiva y fácil de utilizar para crear proyectos HMI de forma eficiente. Basta con arrastrar y soltar los distintos Widgets en la página para mostrarlos en el Smart Display e interactuar con ellos. Su facilidad de uso y la flexibilidad de sus funciones permiten adaptarse a diferentes requisitos de aplicación y agilizar el proceso de desarrollo.
A continuación, se explica cómo crear un proyecto UART con Smart Display GUI Builder y cómo controlar objetos a través de UART.
■ Crear un proyecto con protocolo UART
Para crear un proyecto UART, introduzca el nombre del proyecto, seleccione el tipo de Smart Display adecuado para la aplicación y elija "SmartDisplay protocol (UART)" en la opción Protocol.

■ Añadir un Gauge y un Horizontal Slider Widget a la página principal
Después de añadir un Widget, cada objeto dispone de un Index ID único, además de los ajustes correspondientes de Page Index y Object ID. Mediante estos dos ajustes, el Host puede controlar el objeto a través de comandos UART.

■ Simular la interacción entre UART y el Widget
Haga clic en el icono "Simulator With GUI" para iniciar el simulador.

Una vez iniciado el simulador, mueva el control deslizante identificado como GAUGE_0 en la parte inferior para simular el envío de datos desde el Host a GAUGE_0. Observe los cambios del Gauge en el simulador y consulte el registro de comandos UART en el Message Log situado a la derecha. También puede utilizar el Horizontal Slider del simulador para simular el envío de datos desde el Device.

■ Actualizar la configuración del Smart Display
Después de comprobar el funcionamiento mediante el simulador, si todo funciona correctamente, conecte el dispositivo y cargue la configuración del proyecto en el Smart Display.

Espere hasta que finalicen la carga y la actualización.

■ Verificar la interacción entre el Device y el Widget
Después de cargar el proyecto en el dispositivo, puede comprobar su funcionamiento directamente en el Smart Display. Conecte el dispositivo mediante GUI Builder, haga clic en "Test Device" y compruebe la interacción entre el Host y el Device.

■ Ventana Test Device
Esta interfaz de prueba permite simular la modificación del valor de un objeto desde el Host. Mueva el control deslizante GAUGE_0 situado en la parte inferior para simular el envío del valor de Object 0 desde el Host y observe los cambios del Gauge en el dispositivo. En el Message Log de la parte inferior también puede consultar Send command y Response command. Además, puede utilizar el Horizontal Slider del dispositivo para comprobar el Event command enviado desde el Device.

Mediante la ventana Test Device descrita anteriormente, puede simular el envío de comandos UART desde el Host para controlar el Smart Display. Observe el resultado en el Smart Display y utilice el Touch Panel para comprobar que el Host recibe el Event command correspondiente.

Smart Display GUI Builder – Widgets personalizados
Cuando los Widgets predeterminados de Smart Display GUI Builder no se ajustan a los requisitos de diseño, es posible personalizar sus iconos sustituyendo las imágenes correspondientes y adaptar así la interfaz a las necesidades de cada aplicación. En el caso de botones simples o botones de tipo toggle, basta con sustituir las imágenes On/Off. Para Widgets más complejos, además de sustituir las imágenes, puede ser necesario configurar parámetros adicionales para garantizar que el Widget se muestre correctamente.
■ Ejemplo de personalización de un Gauge
Puede crear un Gauge personalizado sustituyendo las imágenes y ajustando los parámetros correspondientes del Gauge.

■ Texto multilingüe
El Text Widget del Smart Display es compatible con Unicode, lo que permite mostrar texto en distintos idiomas. Siga los pasos que se indican a continuación para configurar los textos en los idiomas necesarios.
1. Añada un Custom Font, seleccione la fuente y el tamaño deseados y defina el rango de caracteres Unicode que desea mostrar. Puede consultar Unicode Character Blocks para identificar el rango Unicode correspondiente. Si el rango de caracteres necesario es demasiado amplio, como puede ocurrir con los caracteres chinos, y el espacio disponible en la memoria Flash no es suficiente, puede incluir únicamente los caracteres que vaya a utilizar en la sección Custom Characters para reducir el espacio de almacenamiento necesario para la fuente.

2. Configure la fuente del Text Widget: seleccione el Text Widget cuyos ajustes de fuente desea modificar.

3. Añada un Text Widget y compruebe en el simulador que el texto se muestra correctamente.

Introducción a los comandos UART personalizados
A continuación, se presenta el protocolo de comandos utilizado para la comunicación UART. Estos comandos permiten al Host controlar distintas funciones del Smart Display, como cambiar de página, ajustar el brillo de la retroiluminación y activar el buzzer.
A continuación se presentan la configuración predeterminada de UART:
Default baud rate: 115200 (Puede ser modificado a través del GUI Builder)
Parity Bit: None
Data Bit: 8
Stop Bit: 1
El formato principal de datos para UART es el siguiente:
| Header Byte(1 Byte) |
Length(1 Byte) |
Payload(N Byte) |
CRC(2 Byte) |
| Command Header |
Value: 4 + Payload length
Payload max size: 250 |
Payload data max size: 250 |
Modbus CRC16
(Calculate Modbus CRC16
https://www.modbustools.com/modbus_crc16.html) |
El protocolo UART tiene principalmente tres tipos de comandos: Comando de Envío, Comando de Respuesta y Comando de Evento, con los siguientes formatos en orden.
1. Formato del comando de envío
El comando de envío se utiliza para que el lado del Host envíe comandos al lado del SmartDisplay.
| Header Byte(1 Byte) |
Length(1 Byte) |
Payload(N byte) |
CRC(2 Byte) |
| Start with 0x53 (S) |
Value: 4 + Payload length
Payload max size: 250 |
Command code: 1 byte
Command parameter: 0 ~ N bytes |
Modbus CRC16 |
2.Formato del comando de respuesta
El comando de respuesta se utiliza para que el lado del SmartDisplay responda al lado del Host con los resultados del comando de envío.
| Header Byte(1 Byte) |
Length(1 Byte) |
Payload(N byte) |
CRC(2 Byte) |
| Start with 0x52 (R) |
Value: 4 + Payload length
Payload max size: 250 |
Command Code: 1 byte
Error Code: 1 byte
Response Data: 0 ~ N bytes |
Modbus CRC16 |
3. Comando de evento
Cuando el lado del SmartDisplay necesita informar datos de manera proactiva, utilizará este comando, por ejemplo, cuando se activa un botón.
| Header Byte(1 Byte) |
Length(1 Byte) |
Payload(N byte) |
CRC(2 Byte) |
| Start with 0x45 (E) |
Value: 4 + Payload length
Payload max size: 250 |
Event Command Code: 1 byte
Event Data: 0 ~ N bytes |
Modbus CRC16 |
* Para obtener el código detallado del comando de envío y del comando de evento, consulte el documento de la Guía del usuario de UART de SmartDisplay.
■ Explicación y ejemplos del protocolo de comando de envío/respuesta
A continuación, se describe secuencialmente el formato de datos y ejemplos para cada carga útil de comando.
● Set Object Value: 0x3
Send Command
| Command Code |
1 Byte |
0x3 |
| Parameter data |
8 Byte |
uint16 PageIndex;
uint16 ObjectId;
int32 value; |
Response command
| Command Code |
1 Byte |
0x3 |
| Error Code |
1 Byte |
0: Success
1: Failed |
Example: Set Object value

● Set Object Buffer Data: 0x5
Send Command
| Command Code |
1 Byte |
0x5 |
| Parameter data |
N Byte |
uint16 PageIndex;
uint16 ObjectId;
uint8 [] data (max 100 bytes)
// Unicode String for Text
// Clock setting for Digital Clock |
Response command
| Command Code |
1 Byte |
0x5 |
| Error Code |
1 Byte |
0: Success
1: Failed |
Example: Set Object Text: test

Example: Set Clock Widget date time: 2024/09/01 04:05:06

● Set Brightness: 0x6
Send Command
| Command Code |
1 Byte |
0x6 |
| Brightness |
1 Byte |
Brightness value |
Response command
| Command Code |
1 Byte |
0x6 |
| Error Code |
1 Byte |
0: Success
1: Failed |
Example: Set brightness to 90.

● Set Buzzer: 0x7
Send Command
| Command Code |
1 Byte |
0x7 |
| Cycle |
1 Byte |
Cycle value |
| High |
1 Byte |
High value (Unit: 10 ms) |
| Low |
1 Byte |
Low value (Unit: 10 ms) |
Response command
| Command Code |
1 Byte |
0x7 |
| Error Code |
1 Byte |
0: Success
1: Failed |
Example: Emitting buzzer: Cycle:1, High: 200 ms, Low: 0 ms

● Set Page Index: 0x8
Send Command
| Command Code |
1 Byte |
0x8 |
| Page Index |
1 Byte |
Page Index value |
Response command
| Command Code |
1 Byte |
0x8 |
| Error Code |
1 Byte |
0: Success
1: Failed |
Example: Switching Page Index to 1.
Para cambiar de página, primero debes configurar el Estado del Dispositivo en Modo de Configuración (ConfigMode). Luego, envía el comando para cambiar de página. Después de completar el comando de cambio de página, establece el Estado del Dispositivo en Modo de Visualización (Display Mode) para finalizar la operación de cambio de página. La secuencia de comandos relacionados es la siguiente:

● Set Device State: 0x20
Send Command
| Command Code |
1 Byte |
0x20 |
| Device State |
1 Byte |
0: ConfigMode
1: DisplayMode |
Response command
| Command Code |
1 Byte |
0x20 |
| Error Code |
1 Byte |
0: Success
1: Failed |
Example: Refer to the example of switching pages
■ Explicación y ejemplos del protocolo de comando de evento.
● Page change event: 0x1
Event Command
| Event Code |
1 Byte |
0x01 |
| Parameter data |
2 Byte |
Uint16 PageIndex |
Example: SmartDisplay switches to Page 1.

● Object Text change event: 0x2
Event Command
| Event Code |
1 Byte |
0x02 |
| Parameter data |
N +2 Byte |
Uint16 ObjectId
N byte Unicode Text |
Example: Keypad widget sends the text "1234"

● Object Value change event: 0x3
Event Command
| Event Code |
1 Byte |
0x03 |
| Parameter data |
6 Byte |
Uint16 ObjectId
int32 value |
Example: Object value change event.

Con GUI Builder es posible crear interfaces de usuario arrastrando y soltando Widgets. El enfoque WYSIWYG (What You See Is What You Get) permite desarrollar la interfaz de forma más intuitiva y eficiente. El simulador integrado también permite previsualizar la interfaz y evaluar el diseño de la UI antes de utilizar el display físico.
Una vez finalizada la UI, el controlador host puede comunicarse con el Smart Display a través de UART utilizando el protocolo de comunicación propietario de WINSTAR, lo que permite controlar el dispositivo e intercambiar datos. Este flujo de trabajo integra el diseño de la UI, la simulación y la comunicación con el dispositivo, simplificando el desarrollo de HMI y la integración de sistemas.
Antes de adquirir un UART Smart Display, puede utilizar GUI Builder y el simulador integrado para evaluar si el diseño de la interfaz y las funcionalidades se adaptan a los requisitos de su aplicación.
Solicitar la descarga de GUI Builder — complete el formulario online para recibir el enlace de descarga.