O protocolo UART do Smart Display é um protocolo de comunicação proprietário desenvolvido pela WINSTAR para permitir a comunicação e o controle entre um controlador host e os Smart Displays WINSTAR por meio da interface UART. Em conjunto com o WINSTAR GUI Builder, ele proporciona um fluxo de desenvolvimento HMI mais eficiente, desde o projeto da interface do usuário até a comunicação e o controle do dispositivo.
Com o GUI Builder, os desenvolvedores podem criar interfaces HMI utilizando diferentes Widgets, desde elementos básicos, como Button e Text, até Gauge e Keypad, de acordo com os requisitos de cada aplicação. Essa abordagem de desenvolvimento visual simplifica o design da UI e oferece maior flexibilidade para a criação de interfaces específicas para diferentes aplicações.
Após a criação da interface do usuário, o controlador host pode se comunicar com o Smart Display via UART e controlá-lo utilizando o protocolo de comunicação proprietário e os comandos da WINSTAR. A integração entre o design da UI e a comunicação UART ajuda a simplificar o desenvolvimento HMI e a integração de sistemas.
A WINSTAR aprimora continuamente o GUI Builder para oferecer uma experiência de desenvolvimento mais eficiente e flexível para aplicações com Smart Display.
Smart Display GUI Builder – Configuração de Projeto UART
O Smart Display GUI Builder oferece uma interface intuitiva e fácil de usar para a criação eficiente de projetos HMI. Basta arrastar e soltar os diferentes Widgets na página para exibi-los no Smart Display e interagir com eles. A facilidade de operação e a flexibilidade dos recursos permitem atender a diferentes requisitos de aplicação e tornar o desenvolvimento mais eficiente.
As etapas a seguir mostram como criar um projeto UART usando o Smart Display GUI Builder e como controlar objetos via UART.
■ Criar um Projeto com Protocolo UART
Para criar um projeto UART, insira o nome do projeto, selecione o tipo de Smart Display adequado à aplicação e escolha "SmartDisplay protocol (UART)" na opção Protocol.

■ Adicionar um Gauge e um Horizontal Slider Widget à Página Principal
Após adicionar um Widget, cada objeto possui um Index ID exclusivo, além das configurações correspondentes de Page Index e Object ID. Com essas duas configurações, o Host pode controlar o objeto por meio de comandos UART.

■ Simular a Interação entre UART e o Widget
Clique no ícone "Simulator With GUI" para iniciar o simulador.

Após iniciar o simulador, mova o controle deslizante identificado como GAUGE_0 na parte inferior para simular o envio de dados do Host para GAUGE_0. Observe as alterações do Gauge no simulador e consulte o registro dos comandos UART no Message Log à direita. Também é possível utilizar o Horizontal Slider no simulador para simular o envio de dados pelo Device.

■ Atualizar as Configurações do Smart Display
Após verificar o funcionamento por meio do simulador, se tudo estiver funcionando corretamente, conecte o dispositivo e transfira as configurações do projeto para o Smart Display.

Aguarde a conclusão do upload e da atualização.

■ Verificar a Interação entre o Device e o Widget
Após transferir o projeto para o dispositivo, é possível verificar o funcionamento diretamente no Smart Display. Conecte o dispositivo usando o GUI Builder, clique em "Test Device" e teste a interação entre o Host e o Device.

■ Janela Test Device
Nesta interface de teste, é possível simular a alteração do valor de um objeto pelo Host. Mova o controle deslizante GAUGE_0 na parte inferior para simular o envio do valor de Object 0 pelo Host e observe as alterações do Gauge no dispositivo. No Message Log localizado na parte inferior, também é possível visualizar Send command e Response command. Além disso, utilize o Horizontal Slider no dispositivo para verificar o Event command enviado pelo Device.

Por meio da janela Test Device descrita acima, é possível simular o envio de comandos UART pelo Host para controlar o Smart Display. Observe o resultado no Smart Display e opere o equipamento pelo Touch Panel para confirmar se o Host recebe o Event command correspondente.

Smart Display GUI Builder – Widgets Personalizados
Quando os Widgets padrão do Smart Display GUI Builder não atendem aos requisitos de design, é possível personalizar seus ícones substituindo as imagens correspondentes e, assim, adaptar a interface às necessidades da aplicação. Para botões simples ou botões do tipo toggle, basta substituir as imagens On/Off. No caso de Widgets mais complexos, além da substituição das imagens, pode ser necessário configurar parâmetros adicionais para garantir que o Widget seja exibido corretamente.
■ Exemplo de Personalização de um Gauge
É possível criar um Gauge personalizado substituindo as imagens e ajustando os parâmetros correspondentes do Gauge.

■ Texto Multilíngue
O Text Widget do Smart Display oferece suporte a Unicode, permitindo a exibição de textos em diferentes idiomas. Siga as etapas abaixo para configurar os textos nos idiomas desejados.
1. Adicione um Custom Font, selecione a fonte e o tamanho desejados e defina o intervalo de caracteres Unicode que será exibido. Para consultar o intervalo Unicode correspondente, acesse Unicode Character Blocks. Se o intervalo de caracteres necessário for muito amplo, como no caso de caracteres chineses, e o espaço disponível na memória Flash não for suficiente, é possível incluir em Custom Characters somente os caracteres que serão efetivamente utilizados, reduzindo o espaço de armazenamento necessário para a fonte.

2. Defina a fonte do Text Widget: selecione o Text Widget cujas configurações de fonte deseja alterar.

3. Adicione um Text Widget e verifique no simulador se o texto é exibido corretamente.

Introdução aos Comandos UART Personalizados
A seguir, apresentamos o protocolo de comandos utilizado na comunicação UART. Esses comandos permitem que o Host controle diferentes funções do Smart Display, como alternar entre páginas, ajustar o brilho da retroiluminação e acionar o buzzer.
Abaixo estão as configurações padrão de UART:
Default baud rate: 115200 (Pode ser modificado através do GUI Builder.)
Parity Bit: None
Data Bit: 8
Stop Bit: 1
O formato principal de dados para UART é o seguinte:
| 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) |
O protocolo UART possui principalmente três tipos principais de comandos: comando de envio, comando de resposta e comando de evento, com os seguintes formatos na ordem.
1. Formato do Comando de Envio
O comando de envio é usado pelo lado Host para enviar comandos para o lado 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 do Comando de Resposta
O comando de resposta é usado pelo lado SmartDisplay para responder ao lado Host com os resultados do comando de envio.
| 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
Quando o lado SmartDisplay precisa relatar dados proativamente, ele usará este comando, por exemplo, quando um botão for acionado.
| 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 detalhes sobre o código do Comando de Envio e o código do Comando de Evento, consulte o documento do Guia do Usuário do SmartDisplay UART.
■ Explicação e exemplos do protocolo de comando de Envio/Resposta
A seguir, apresentamos, de forma sequencial, o formato de dados e exemplos 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 trocar de páginas, você precisa primeiro definir o Estado do Dispositivo como ConfigMode. Em seguida, envie o comando de mudança de página. Após completar o comando de mudança de página, defina o Modo do Estado do Dispositivo como Display Mode para finalizar a operação de troca de página. A sequência de comandos relacionados é a seguinte:

● 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
■ xplicação e exemplos do 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.

Com o GUI Builder, é possível criar interfaces de usuário arrastando e soltando Widgets. A abordagem WYSIWYG (What You See Is What You Get) torna o desenvolvimento da interface mais intuitivo e eficiente. O simulador integrado também permite visualizar a interface e avaliar o design da UI antes de utilizar o display físico.
Após a conclusão da UI, o controlador host pode se comunicar com o Smart Display via UART utilizando o protocolo de comunicação proprietário da WINSTAR, permitindo o controle do dispositivo e a troca de dados. Esse fluxo de trabalho integra o design da UI, a simulação e a comunicação com o dispositivo, simplificando o desenvolvimento de HMI e a integração de sistemas.
Antes de adquirir um UART Smart Display, você pode utilizar o GUI Builder e o simulador integrado para avaliar se o design da interface e as funcionalidades atendem aos requisitos da sua aplicação.
Solicitar o download do GUI Builder — preencha o formulário online para receber o link de download.