9 appendic e 9.1 protocollo macro: descrizione, 1 procedura di calcolo del checksum, 2 esempio di programma di test – Videotec SM164B User Manual

Page 36

Advertising
background image

Pag. 32

MNVCSM84A_0408

9 Appendic e

9.1 Protocollo Macro: descrizione

Il protocollo Macro è caratterizzato da messaggi composti di soli caratteri ASCII stampabili, delimitati da due
caratteri terminatori ‘[‘ e ‘]’. All’interno del messaggio c’è distinzione tra lettere maiuscole e minuscole e NON
sono mai presenti spazi separatori.
Il formato di un messaggio tipico è una stringa di caratteri ‘[VA1PC1VidS1,12A]’ che può essere così interpretata:

[

Inizio del messaggio

VA1

Destinatario del messaggio

(1)

Unità video numero 1

PC1

Mittente del messaggio

(1)

PC numero 1

VidS

Comando

Commutazione

1

Primo parametro

(2)

Monitor 1

,

Separatore dei parametri

(2)

12

Secondo parametro

(2)

Camera 12

A

Checksum

]

Fine del messaggio

(1)

Anche se in questo caso le unità Destinatario e Mittente non sono indirizzabili si deve indicare un numero di

identificazione fittizio.

(2)

A seconda del comando sono presenti massimo 4 parametri numerici separati da virgola: se si deve

trasmettere il numero ‘123’ dovranno essere spediti i tre caratteri ‘1’ (ASCII 49), ‘2’ (ASCII 50) e ‘3’ (ASCII 51).

9.1.1 Procedura di calcolo del checksum

Sommare il codice ASCII di tutti i caratteri del messaggio, fatta esclusione per i terminatori ‘[‘ e ‘]’
1) calcolare il valore della somma modulo 26 (resto della divisione per 26, che è sempre un numero intero da 0 a 25)
2) sommare 65 al modulo così calcolato e ricavare il carattere corrispondente nella tabella ASCII: il risultato
deve essere un carattere alfabetico maiuscolo compreso tra ‘A’ e ‘Z’.
Il messaggio verrà interpretato dalla matrice solo se il checksum è corretto.

9.1.2 Esempio di programma di test

Di seguito è riportato un semplice programma di test in BASIC che può essere usato come linea guida nella
realizzazione di sistemi di controllo più complessi. Il programma fa uso della seriale COM1 con baudrate 9600.

OPEN "COM1:9600,N,8,1,BIN,RB1000,DS0,CS0,CD0,RS" FOR RANDOM AS #1
COM(1) ON

ON COM(1) GOSUB Ricezione

DO WHILE (1)
A$ = UCASE$(INKEY$)

‘ riconosce la pressione di un tasto

SELECT CASE A$

CASE “1”: ‘ commuta la camera 1 sul monitor 1
PRINT #1, “[VA1PC1VidS1,1C]”;

CASE “2”: ‘ commuta la camera 2 sul monitor 1
PRINT #1, “[VA1PC1VidS1,2D]”;

CASE “S”: ‘ ciclata automatica sul monitor 1
PRINT #1, “[VA1PC1VidA1V]”;

CASE CHR(27): ‘ uscita dal programma con ESC

END

END SELECT
LOOP

Ricezione:
DO WHILE NOT(EOF(1))
B$ = INPUT$(1,1)
IF B$ = “[” THEN PRINT
PRINT B$;
LOOP
RETURN

Advertising