Il protocollo UART di Smart Display è un protocollo di comunicazione proprietario sviluppato da WINSTAR per consentire la comunicazione e il controllo tra un controller host e gli Smart Display WINSTAR tramite interfaccia UART. In combinazione con WINSTAR GUI Builder, offre un flusso di sviluppo HMI efficiente, dalla progettazione dell’interfaccia utente alla comunicazione e al controllo del dispositivo.
Con GUI Builder, gli sviluppatori possono creare interfacce HMI utilizzando diversi Widget, dai più semplici, come Button e Text, fino a Gauge e Keypad, in base ai requisiti delle diverse applicazioni. Questo approccio visuale semplifica la progettazione dell’UI e offre maggiore flessibilità nello sviluppo di interfacce specifiche per ogni applicazione.
Una volta realizzata l’interfaccia utente, il controller host può comunicare con lo Smart Display tramite UART e controllarlo utilizzando il protocollo di comunicazione proprietario e i comandi WINSTAR. L’integrazione tra progettazione dell’UI e comunicazione UART contribuisce a semplificare lo sviluppo HMI e l’integrazione di sistema.
WINSTAR continua a migliorare GUI Builder per offrire un ambiente di sviluppo sempre più efficiente e flessibile per le applicazioni Smart Display.
Smart Display GUI Builder – Configurazione di un progetto UART
Smart Display GUI Builder offre un’interfaccia intuitiva e semplice da utilizzare per creare progetti HMI in modo efficiente. È sufficiente trascinare e rilasciare i diversi Widget sulla pagina per visualizzare gli oggetti sullo Smart Display e interagire con essi. La semplicità di utilizzo e la flessibilità delle funzioni consentono di rispondere alle esigenze di diverse applicazioni e di rendere più efficiente lo sviluppo.
Di seguito viene illustrato come creare un progetto UART con Smart Display GUI Builder e come controllare gli oggetti tramite UART.
■ Creare un progetto con protocollo UART
Per creare un progetto UART, inserire il nome del progetto, selezionare il tipo di Smart Display in base alle proprie esigenze e scegliere "SmartDisplay protocol (UART)" nell’opzione Protocol.

■ Aggiungere un Gauge e un Horizontal Slider Widget alla pagina principale
Dopo aver aggiunto un Widget, a ogni oggetto viene assegnato un Index ID univoco e sono disponibili le impostazioni Page Index e Object ID. Utilizzando queste due impostazioni, l’Host può controllare l’oggetto tramite comandi UART.

■ Simulare l’interazione tra UART e Widget
Fare clic sull’icona "Simulator With GUI" per avviare il simulatore.

Dopo aver avviato il simulatore, spostare il cursore GAUGE_0 nella parte inferiore per simulare l’invio di dati dall’Host a GAUGE_0. È possibile osservare le variazioni del Gauge nel simulatore e consultare il registro dei comandi UART nel Message Log sulla destra. È inoltre possibile utilizzare l’Horizontal Slider nel simulatore per simulare l’invio di dati dal lato Device.

■ Aggiornare le impostazioni dello Smart Display
Dopo aver verificato il corretto funzionamento tramite il simulatore, collegare il dispositivo e caricare le impostazioni del progetto sullo Smart Display.

Attendere il completamento del caricamento e dell’aggiornamento.

■ Verificare l’interazione tra Device e Widget
Dopo aver caricato il progetto sul dispositivo, è possibile verificarne ulteriormente il funzionamento sullo Smart Display. Collegare il dispositivo tramite GUI Builder, fare clic su "Test Device" e verificare l’interazione tra Host e Device.

■ Finestra Test Device
Questa interfaccia di test consente di simulare la modifica del valore di un oggetto da parte dell’Host. Spostare il cursore GAUGE_0 nella parte inferiore per simulare l’invio del valore di Object 0 dall’Host e osservare le variazioni del Gauge sul dispositivo. Nel Message Log in basso è inoltre possibile visualizzare Send command e Response command. Utilizzando l’Horizontal Slider sul dispositivo, è possibile verificare anche l’Event command inviato dal lato Device.

La finestra Test Device consente di simulare l’invio di comandi UART dall’Host per controllare lo Smart Display. È possibile osservare il risultato sullo Smart Display e utilizzare il Touch Panel per verificare che l’Host riceva il relativo Event command.

Smart Display GUI Builder – Widget personalizzati
Quando i Widget predefiniti di Smart Display GUI Builder non soddisfano i requisiti di progettazione, è possibile personalizzare le relative icone sostituendo le immagini corrispondenti e realizzare così un’interfaccia adatta all’applicazione. Per pulsanti semplici o pulsanti di tipo toggle, è sufficiente modificare le immagini On/Off. Per Widget più complessi, oltre alla sostituzione delle immagini, può essere necessario configurare ulteriori parametri per garantire una corretta visualizzazione.
■ Esempio di configurazione di un Gauge personalizzato
È possibile creare un Gauge personalizzato sostituendo le immagini e regolando i relativi parametri Gauge.

■ Testo multilingue
Il Text Widget dello Smart Display supporta Unicode e consente quindi di visualizzare testi in più lingue. Per configurare i testi nelle lingue desiderate, seguire i passaggi riportati di seguito.
1. Aggiungere un Custom Font, selezionare il font e la dimensione desiderati, quindi specificare l’intervallo di caratteri Unicode da visualizzare. Per verificare l’intervallo Unicode è possibile consultare Unicode Character Blocks. Se l’intervallo di caratteri richiesto è molto ampio, ad esempio nel caso dei caratteri cinesi, e lo spazio Flash disponibile non è sufficiente, è possibile includere nella sezione Custom Characters solo i caratteri effettivamente necessari, riducendo così lo spazio di memoria richiesto dal font.

2. Impostare il font del Text Widget: selezionare il Text Widget di cui si desidera modificare le impostazioni del font.

3. Aggiungere un Text Widget e verificare nel simulatore che il testo venga visualizzato correttamente.

Introduzione ai comandi UART personalizzati
Di seguito viene introdotto il protocollo dei comandi UART. Questi comandi consentono all’Host di controllare diverse funzioni dello Smart Display, tra cui il cambio di pagina, la regolazione della luminosità della retroilluminazione e l’attivazione del buzzer.
Le seguenti sono le impostazioni UART predefinite:
Default baud rate: 115200 (può essere modificato tramite GUI Builder)
Parity Bit: None
Data Bit: 8
Stop Bit: 1
Il formato principale dei dati per UART è il seguente:
| 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) |
Il protocollo UART ha principalmente tre tipi di comandi: comando di invio, comando di risposta e comando evento, con i seguenti formati in ordine.
1. Formato del comando di invio
Il comando di invio è utilizzato dal lato Host per inviare comandi al lato 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 di risposta
Il comando di risposta è utilizzato dal lato SmartDisplay per rispondere al lato Host con i risultati del comando di invio.
| 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 evento
Quando il lato SmartDisplay ha bisogno di segnalare attivamente dei dati, utilizzerà questo comando, ad esempio, quando viene attivato un pulsante.
| 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 |
* Per dettagli sul codice del comando di invio e sul codice del comando evento, si prega di fare riferimento al documento della Guida dell'Utente SmartDisplay UART.
■ Spiegazione ed esempi del protocollo di comando di invio/riposta
Di seguito viene descritto in sequenza il formato dei dati e gli esempi per ciascun payload di 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 |
Esempio: 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 |
Esempio: Set Object Text: test

Esempio: 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 |
Esempio: 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 |
Esempio: 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 |
Esempio: Switching Page Index to 1.
Per cambiare pagina, è necessario prima impostare lo stato del dispositivo su ConfigMode. Successivamente, inviare il comando di cambio pagina. Dopo aver completato il comando di cambio pagina, impostare la modalità dello stato del dispositivo su Display Mode per completare l'operazione di cambio pagina. La sequenza dei comandi correlati è la seguente:

● 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 |
Esempio: Refer to the example of switching pages
■ Spiegazione ed esempi del protocollo di comando evento
● Page change event: 0x1
Event Command
| Event Code |
1 Byte |
0x01 |
| Parameter data |
2 Byte |
Uint16 PageIndex |
Esempio: 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 |
Esempio: 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 |
Esempio: Object value change event.

Con GUI Builder è possibile creare l’interfaccia utente trascinando e rilasciando i Widget, con un approccio WYSIWYG (What You See Is What You Get) che rende lo sviluppo dell’UI più intuitivo ed efficiente. Il simulatore integrato consente inoltre di visualizzare in anteprima l’interfaccia e valutare il design dell’UI prima di utilizzare il display fisico.
Una volta completata l’UI, il controller host può comunicare con lo Smart Display tramite UART utilizzando il protocollo di comunicazione proprietario di WINSTAR, consentendo il controllo del dispositivo e lo scambio di dati. Questo flusso di lavoro integra progettazione dell’UI, simulazione e comunicazione con il dispositivo, semplificando lo sviluppo HMI e l’integrazione di sistema.
Prima di acquistare uno UART Smart Display, è possibile provare GUI Builder e il simulatore integrato per valutare se il design dell’interfaccia e le funzionalità sono adatti ai requisiti dell’applicazione.
Richiedi il download di GUI Builder — compila il modulo online per ricevere il link per il download.