9 Anhang
9.1 Protokoll Macro: Beschreibung
Das Protokoll ist gekennzeichnet durch die Verwendung von Meldungen, die ausschließlich aus druckbaren ASCII-
Zeichen bestehen und von 2 Endungszeichen begrenzt werden '[' und ']'. Innerhalb der Meldungen wird zwischen
Groß- und Kleinbuchstaben unterschieden. Trennende Leerzeichen werden NICHT benutzt. Das typische
Meldungsformat ist eine Buchstabenfolge '[VA1PC1VidS1,12A]', die folgendermaßen gedeutet werden kann:
[
Beginn der Meldung
VA1
Adressat der Meldung
PC1
Absender der Meldung
VidS
Befehl
Erster Parameter
1
,
Parameter-Trennzeichen
12
Zweiter Parameter
A
Prüfsumme
]
Ende der Meldung
(1)
Auch wenn die Ziel- und Quelleinheiten in diesem Falle nicht adressierbar sind, muß eine fiktive
Identifikationsnummer vergeben werden.
(2)
Je nach Befehl sind 4 durch Komma getrennte numerische Parameter vorhanden: wenn die Nummer '123'
übertragen werden soll, müssen die drei Zeichen '1' (ASCII 49), '2' (ASCII 50) und '3' (ASCII 51) übermittelt werden.
9.1.1 Art der Prü fsummenermittlung
Addition des ASCII-Codes für sämtliche Zeichen der Meldung, außer für die Begrenzungszeichen '[' and ']'
1) Berechnet wird der Wert der somma modulo 26 (Rest der Division durch 26, immer eine ganze Zahl
zwischen 0 und 25)
2) zum so berechneten Modul wird 65 hinzugezählt und in der ASCII-Tabelle das zugehörige Zeichen ermittelt:
Das Ergebnis muß ein alphabetischer Großbuchstabe zwischen 'A' und 'Z' sein.
Die Meldung wird von der Matrix nur dann interpretiert, wenn die Prüfsumme korrekt ist.
9.1.2 Beispiel für ein Testprogramm
Nachstehend ein einfaches BASIC-Testprogramm, das als Leitfaden für die Erstellung von komplexeren
Kontrollsystemen benutzt werden kann. Das Programm benutzt den seriellen Port COM1 mit einer Baudrate von 9600.
OPEN "COM1:9600,N,8,1,BIN,RB1000,DS0,CS0,CD0,RS" FOR RANDOM AS #1
COM(1) ON
ON COM(1) GOSUB Empfang
DO WHILE (1)
A$ = UCASE$(INKEY$)
SELECT CASE A$
CASE "1":
CASE "2":
CASE "S":
CASE CHR(27): ' Verlassen des Programms mit ESC
END SELECT
LOOP
Empfang:
DO WHILE NOT(EOF(1))
B$ = INPUT$(1,1)
IF B$ = "[" THEN PRINT
PRINT B$;
LOOP
RETURN
(1)
(1)
(2)
(2)
(2)
' erkennt die Betätigung einer Taste
' Umschalten von Kamera 1 auf Monitor 1
PRINT #1, "[VA1PC1VidS1,1C]";
' Umschalten von Kamera 2 auf Monitor 1
PRINT #1, "[VA1PC1VidS1,2D]";
' Automatische Umschaltsequenz auf Monitor 1
PRINT #1, "[VA1PC1VidA1V]";
END
Videoeinheit Nummer 1
PC Nummer 1
Umschaltung
Monitor 1
Kamera 12
Seite 32
MNVCSM84A_0408