|
Zweck des
ASCII-Protokolls
|
|
|
|
|
|
|
|
Simple digitale Schnittstelle am ALLPOOL:
Immer mehr Häuser verfügen über eine Hausautomatisation mit Bedienung
über Touchscreen. Damit das ALLPOOL mit dem Leitrechner kommunizieren kann,
unterstützt es ein einfaches ASCII-Protokoll. Somit können Parameter wie
z.B. die Soll-Schwimmbadtemperatur oder Messwerte ausgelesen und
geschrieben, also geändert werden. So kann das ALLPOOL
unkompliziert von einem bestehenden Touchscreen aus bedient werden. Oder es
meldet Messwerte und Relaiszustände automatisch an die Klimaanlage usw.
KNX (EIB):
Ein Kunde hat das ALLPOOL mittels Gateway mit KNX
verbunden. Siehe sein Projekt
mit Software. Nutzbar seit:
Das ASCII-Protokoll ist ab der
Firmwareversion 4.1 enthalten.
Updatemöglichkeit: Sie können auch ein altes ALLPOOL
updaten, um das ASCII-Protokoll verwenden zu können, wenn der
ExtenderPort (runde dreipolige M8-Buchse auf der rechten Geräteseite)
bereits montiert ist. Das ist bei allen ALLPOOL der Fall, die seit Anfang
2009 gefertigt wurden.
|
Übersicht über
das ASCII-Protokoll
|
|
|
|
|
|
|
|
Das ASCII-Protokoll am Extender Port ermöglicht:
- Über die serielle RS232 - Schnittstelle des Extender-Ports am ALLPOOL
können digital Werte gelesen und geschrieben werden.
- Die Kommunikation erfolgt in Klartext mittels
ASCII-Zeichensatz.
- Da das Protokoll sehr einfach ist, kann es schnell mit geringem Aufwand im
Leitrechner integriert werden.
- Jeder Wert wird mittels seiner eindeutigen WerteID adressiert. Diese
finden Sie in violetter Farbe in der
Menüstruktur
dokumentiert.
- So können zahlreiche Einstellungen wie Filterpumpe Auto/Aus/Ein oder
Soll-Beckentemperatur für die konventionelle. Heizung ausgelesen oder verändert
werden.
- Es können auch Hardwarezustände z.B. Position des Rückspülventils,
gemessene Beckentemperatur oder Kollektortemperatur ausgelesen werden.
- Prüfsummen garantieren eine sichere Kommunikation.
|
Die Schnittstelle der
Extender Port
|
|
|
|
|
|
|
|
|
|
- RS232 Interface: Mit dem Interface
M8RS232 erhalten Sie
eine vollwertige RS232-Schnittstelle auf einer DSUB-9 Buchse. Im
Innern des Interfacegehäuses befinden sich Schraubklemmen. Hier
können Sie ein geschirmtes Kabel anschließen, um die RS232 um
bis zu 100m weit zum Leitrechner zu führen.
- USB Interfacekabel: Mit dem Interfacekabel M8USB eine
USB-Schnittstelle zum direkten Anschließen z.B. an einen PC.
- Extender Port: Auf der rechten Seite des
ALLPOOL befindet sich die wasserdichte 3polige M8-Buchse. Hier
wird das M8PC bzw. M8USB Kabel angesteckt.
- Parameter: Kommunikationseinstellungen für
die RS232 sind 19200 Baud,
8, 1,
no parity, no handshake.
- Timeout: Zwischen 2 Zeichen dürfen maximal
250ms Zeit vergehen. Ansonsten werden die bisher gesendeten
Zeichen der Zeile ignoriert.
- Geschwindigkeit: Vor Senden einer weiteren Befehlszeile auf die Antwort des ALPOOL oder min. 10ms lange warten.
|
|
String zum ALLPOOL Syntax
|
|
|
|
|
|
|
|
Die Komponenten einer Zeile, die zum ALLPOOL geschickt wird im Überblick:
- Jede Zeile, die an das
ALLPOOL
geschickt wird, muss mit dem '#' oder '%' Startzeichen
(35dez, 23hex oder 37dez, 25hex) beginnen.
- Unmittelbar danach folgt die WerteID.
Dies ist eine 5stellige Dezimalzahl, die den gewünschten Wert
adressiert. Details.
- Unmittelbar danach folgt das '?'
Abfragezeichen, wenn sie vom ALLPOOL den aktuellen Wert erfahren
wollen. Nach dem '?' kann auch alternativ die Abfragetype angegeben
werden (minimal 'l' oder maximal 'h' erlaubter Wert).
Details.
- Oder es folgt das '=' Schreibzeichen, gefolgt
vom neuen Wert, den Sie setzen wollen.
Details.
- Alternativ folgt ein '$'
Prüfsummenzeichen mit einer Checksumme, damit Übertragungsfehler
erkannt werden können.
Details.
- Zuletzt folgt das '\n' Abschlußzeichen.
Details.
Beispiele für Strings, die an das ALLPOOL gesendet werden
können:
Abfragen von Werten:
'#120?\n'
|
|
Abfragen der Firmwareversionsnummer ohne Prüfsumme. |
'#120?$0C\n' |
|
Abfragen der Firmwareversionsnummer mit Prüfsumme. |
|
|
|
'#2010?$3C\n'
|
|
Abfragen der gemessenen Schwimmbadtemperatur mit Prüfsumme. |
'#42020?$0B\n'
|
|
Abfragen der eingestellten Solltemperatur der konventionellen
Heizung mit Prüfsumme. |
'#42020?h$63\n'
|
|
Abfragen maximal einstellbaren Solltemperatur der konventionellen
Heizung mit Prüfsumme. |
Setzen von Werten:
'#42020=26.5$16\n'
|
|
Einstellen der Solltemperatur der konventionellen Heizung auf
26.5°C. |
'#30035=27.05.10$09\n'
|
|
Einstellen des Startdatums für den Ferienmodus auf den 27.05.2010. |
'%30035=27.05.10$09\n'
|
|
Wie zuvor, jedoch mit dem '%' als Startzeichen. |
Setzen von Alternativen:
'%33010=1$3D\n'
|
|
Filterpumpe auf Automatik schalten. |
'%33010=2$3E\n'
|
|
Filterpumpe auf Hand AUS schalten. |
'%33010=3$3F\n'
|
|
Filterpumpe auf Hand EIN schalten.
|
'%30010=2$3D\n'
|
|
Ausschalten aller Regler des ALLPOOL (Hauptschalter). |
'%30010=1$3E\n'
|
|
Wieder Einschalten des ALLPOOL (Hauptschalter). |
|
|
|
|
String vom
ALLPOOL Syntax
|
|
|
|
|
|
|
|
Die Komponenten einer Zeile, die als Antwort vom ALLPOOL zurück
kommen:
- Jede Zeile, die vom
ALLPOOL
als Antwort kommt, beginnt mit dem '>' OK-Zeichen
oder dem 'X' ERROR-Zeichen.
Details.
- Unmittelbar nach dem '>' OK-Zeichen
folgt die angefragte ('?') bzw. geschriebene ('=') Information (siehe Datenformate).
Die Antwort schaut also nach dem Schreiben genau gleich aus wie nach dem
Lesen. Es wird die erfolgreich geschriebene Information bzw. die
erfolgreich abgefragte Information geantwortet.
Details.
- Unmittelbar nach dem 'X' Fehler-Zeichen
folgt ein Fehlerbeschreibungszeichen.
Details.
- Danach folgt ein '$'
Prüfsummenzeichen mit einer Checksumme, damit Übertragungsfehler
erkannt werden können.
Details.
- Zuletzt folgt das '\n' Abschlußzeichen.
Details.
Beispiele für Strings, die vom ALLPOOL kommen:
Fehlerfreie Antworten vom ALLPOOL:
'>401$35\n' |
|
Das ALLPOOL teilt mit, das seine Firmwareversion 4.01 ist. |
'>401\n' |
|
Die gleiche Antwort, jedoch mit ausgeschalteter Prüfsumme. |
'Xu$75\n' |
|
Die angegebene ID kennt das ALLPOOL nicht. |
|
Beispiele Senden
& Empfangen
|
|
|
|
|
|
|
|
Hier nun Beispiele mit Strings die zum ALLPOOL geschickt und vom
ALLPOOL beantwortet werden:
Senden:
|
|
Empfangen: |
|
Bemerkung: |
'#120?\n' |
|
'>401\n' |
|
Abfragen der Firmwareversionsnummer ohne Prüfsumme. |
'#120?$0C\n' |
|
'>401$35\n' |
|
Abfragen der Firmwareversionsnummer mit Prüfsumme. |
|
|
|
|
|
'#2010?$3C\n'
|
|
'>23.8$17\n' |
|
Abfragen der gemessenen Schwimmbadtemperatur: Es sind 23.8°C. |
'#42020?$0B\n'
|
|
'>26.5$1F\n' |
|
Abfragen der eingestellten Solltemperatur der konventionellen
Heizung: Es sind 26.5°C. |
'#42020?h$63\n'
|
|
'>40.0$1A\n' |
|
Abfragen maximal einstellbaren Solltemperatur der konventionellen
Heizung mit Prüfsumme.
|
'#42020=26.5$16\n'
|
|
'>26.5$1F\n' |
|
Einstellen der Solltemperatur der konventionellen Heizung auf
26.5°C.
|
'#30035=27.05.10$09\n' |
|
'>27.05.10$01\n' |
|
Einstellen des Startdatums für den Ferienmodus auf den 27.05.2010.
|
'%30035=27.05.10$09\n' |
|
'>27.05.10$01\n' |
|
Wie zuvor, jedoch mit '%' als Startzeichen.
|
'%33010?$0E\n' |
|
'>1$35\n' |
|
Ist die
Filterpumpe auf Auto | Aus | Ein? Sie ist auf Auto. |
'%33010=2$3E\n' |
|
'>2$32\n' |
|
Schalte sie jetzt aus. |
|
# oder %
Startzeichen im Detail |
|
|
|
|
|
|
|
Jede Zeile, die an das
ALLPOOL
geschickt wird, muss mit dem '#' oder '%' Startzeichen
(35dez, 23hex oder 37dez, 25hex)
beginnen. Es signalisiert dem ALLPOOL, dass es sich bei den empfangenen
Daten um das ASCII-Protokoll handelt. Das ALLPOOL unterstützt ja
verschiedene Protokolle.
Details.
Da manche Leitrechner Probleme haben das '#' Zeichen zu
senden, kann ab v4.13 (SerNr XJ-34023) auch das '%' Zeichen verwendet
werden.
|
ID
Werte ID im Detail |
|
|
|
|
|
|
|
Jeder Wert im ALLPOOL wird über diese eindeutige ID adressiert. Es
handelt sich um einen String, der eine maximal 5stellige Dezimalzahl
darstellt. Voranstehende Nullen können weggelassen werden ('00120' ist
gleich '120'). Die WerteID's finden Sie in
der
Menüstruktur in violetter Farbe neben jedem Wert, der mittels
ASCII-Protokoll erreichbar ist.
Anfangs stehen noch nicht alle IDs zur
Verfügung. So werden z.B. alle für die Statistik, Dosiermenge usw. zu einem
späteren Zeitpunkt nutzbar sein. Die wichtigsten IDs wie AUTO|AUS|EIN usw.
sind bereits alle verfügbar.
Übersicht über die ID-Bereiche:
00000
- 00099 ... reserviert 00100 - 00199 ... Grundlegende Geräteinfos
(Gerätetype, Firmwareversion) 00300 - 00399 ...
Kommunikationseinstellungen (RS232 Speed, Prüfsummen bei Antwort ja/nein,
ausführliche Antworten ja/nein) 01000 - 01999 ... Hardwarezustände:
Ausgänge (Relais) 02000 - 02999 ... Hardwarezustände: Eingänge 03000
- 03999 ... Hardwarezustände: Fehler (Trockenlauf, Motorschutz, ...)
04000 - 05999 ... Interne Zustände und Flags (Rücksp. wartet auf Füll.,
RestwNachl., Uhr ein/aus). 07000 - 07999 ... Bedienelemente (Tasten,
LCD) 08000 - 08999 ... AdHoc Filter
30000 - 32999 ... System (die
ersten 500 für den Easymodus). 33000 - 35999 ... Filter (die ersten 500
für den Easymodus). 36000 - 38999 ... Dosierung (die ersten 500 für den
Easymodus). 39000 - 41999 ... lokale Rückspülung (die ersten 500 für den
Easymodus). 42000 - 44999 ... konv. Heizung (die ersten 500 für den
Easymodus). 45000 - 47999 ... Solarheizung (die ersten 500 für den
Easymodus). 48000 - 50999 ... Niveau (die ersten 500 für den Easymodus).
Für alle PAUSCH-Geräte gültige IDs:
00110 ... Gerätetype: Z.B. '10' bei ALLPOOL, '50' bei TELCONvoice
00120 ... Firmwareversion z.B. '401' für Version 4.01
Alle für das ALLPOOL implementierten ID's:
In der
Firmwareversion 4.1 sind diese
ID's erreichbar. In dieser Tabelle sehen Sie die ID, den minimal erlaubten
Wert, den maximal erlaubten Wert, die erlaubte Schrittweite, ob der Wert
gelesen werden kann (R), ob der Wert geschrieben werden darf (W), und eine
Beschreibung.
WerteID |
Min. |
Max. |
Step |
R|W |
Bezeichnung |
110 |
10 |
10 |
1 |
R |
Gerätetype (10=ALLPOOL) |
120 |
100 |
9999 |
1 |
R |
Firmwareversion (z.B. '410'=v4.1) |
1010 |
0 |
1 |
1 |
R |
Zustand Filterrelais |
1012 |
0.0 |
16.3 |
0.1 |
R |
Filterpumpen Motorstrom in Ampere |
1020 |
0 |
1 |
1 |
R |
Zustand konv. Heizrelais |
1030 |
0 |
1 |
1 |
R |
Zustand Solarrelais |
1040 |
0 |
1 |
1 |
R |
Zustand Füllrelais |
1050 |
0 |
1 |
1 |
R |
Zustand Dosierrelais |
1100 |
0 |
3 |
1 |
R |
Zustand Rückspülung. Bits: 0=Filtern, 1=Nachspülen, 2=Entleeren,
3=Rückspülen |
1101 |
0 |
1 |
1 |
R |
Zustand Rückspülventil (0=Busy, 1=Ready) |
1510 |
0 |
1 |
1 |
R(+W) |
Zustand Universalausgang 1 |
1520 |
0 |
1 |
1 |
R(+W) |
Zustand Universalausgang 2 |
1530 |
0 |
1 |
1 |
R(+W) |
Zustand Universalausgang 1 |
1540 |
0 |
1 |
1 |
R(+W) |
Zustand Universalausgang 4 |
1550 |
0 |
1 |
1 |
R(+W) |
Zustand Universalausgang 5 |
2010 |
-39.5 |
150.0 |
0.1 |
R |
gemessene Badtemperatur |
2020 |
-39.5 |
150.0 |
0.1 |
R |
gemessene Kollektortemperatur |
2050 |
0000 |
1111 |
1 |
R |
Zustand Niveauelektroden |
2510 |
0 |
1 |
1 |
R |
Zustand Universaleingang 1 |
2512 |
-39.5 |
150.0 |
0.1 |
R |
Temperatur Universaleingang 1 |
2520 |
0 |
1 |
1 |
R |
Zustand Universaleingang 2 |
2530 |
0 |
1 |
1 |
R |
Zustand Universaleingang 3 |
2532 |
-39.5 |
150.0 |
0.1 |
R |
Temperatur Universaleingang 3 |
30010 |
1 |
2 |
1 |
R+W |
System Auto-Aus |
30020 |
0 |
9999 |
1 |
R+W |
Expertenmodus einschalten (dazu Pincode übergeben) |
30021 |
0 |
32767 |
1 |
R+W |
Easymodus einschalten (übergebener Wert ist egal) |
30030 |
5.0 |
45.0 |
0.5 |
R+W |
min. Badtemperatur während Ferien |
30031 |
5.0 |
45.0 |
0.5 |
R+W |
max. Badtemperatur während Ferien |
33010 |
1 |
3 |
1 |
R+W |
Filter Auto-Aus-Hand |
33011 |
1 |
3 |
1 |
R+W |
Whirlpool Auto-Aus-Hand |
39010 |
1 |
3 |
1 |
R+W |
Rückspülung Auto-Aus-Start |
42010 |
1 |
3 |
1 |
R+W |
konv. Heizung Auto-Aus-Hand |
42020 |
5.0 |
45.0 |
0.5 |
R+W |
konv. Heizung Solltemperatur für Bad |
42025 |
5.0 |
45.0 |
0.5 |
R+W |
konv. Heizung Solltemperatur für Whirlpool |
45010 |
1 |
3 |
1 |
R+W |
Solarheizung Auto-Aus-Hand |
45020 |
15.0 |
45.0 |
0.5 |
R+W |
Solar Bad Maximalbegrenzung Sollwert |
45025 |
15.0 |
45.0 |
0.5 |
R+W |
Solar Whirlpooltemperatur Maximalbegrenzung Sollwert |
48010 |
1 |
2 |
1 |
R+W |
Niveauregler Nachfüllen erlauben Nein-Ja |
Hinweise zu Werten:
Schaltzustände: Bei Relaiszuständen usw. erhalten Sie '0' für Aus und '1' für Ein.
Universalausgänge: Ein Universalausang kann nur dann über seine ID ein/ausgeschaltet werden,
wenn er auf manuell schalten konfiguriert ist ("System /
Anschlussklemmen / Universalausgang x / Funktion / Haendisch"). Beim
Abfragen und Schreiben, gilt '0' für Aus und '1' für Ein, wobei dies nur
dann auch für den Relaiszustand gilt, wenn "System /
Anschlussklemmen / Universalausgang x / Ausgangslogik / normal schalten"
eingestellt ist. Bei "invers schalten" entspricht dann '1' einem
ausgeschalteten Relais. Für die Universalausgänge 2 bis 5 stehen explizit
keine Relais zur Verfügung. Diese Ausgänge sind also nur dann nutzbar, wenn
sie Relais (im ALLPOOL oder im EXTENDER) zugeordnet ("System /
Anschlussklemmen / Universalausgang x / Relaiszuordnung") sind.
Universaleingänge: Wenn ein Universaleingang als Temperaturmesser
konfiguriert ist ("System / Anschlussklemmen /
Universaleingang x / Anschlussart / Temperaturfuehler"), kann neben
dem Schaltzustand Ein/Aus auch der Temperaturmesswert abgefragt werden.
Daher gibt es für jeden Universaleingang, an den auch ein Temperaturfühler
angeschlossen werden kann, zwei WerteID's.
Temperaturen: Alle Temperaturen werden in der Einheit
Grad Celsius (°C) mit einer Nachkommastalle angegeben. Im String darf '°C'
nicht enthalten sein.
|
?
Abfragezeichen
im Detail |
|
|
|
|
|
|
|
Das '?'
Abfragezeichen wird verwendet, um einen aktuellen Wert
vom ALLPOOL abzufragen. Es folgt hinter der WerteID.
Wenn unmittelbar nach dem '?' ein 'L' bzw 'l'
(low) folgt, antwortet das ALLPOOL nicht mit dem aktuell eingestellten,
sondern mit dem minimal erlaubten Wert.
Wenn unmittelbar nach dem '?' ein 'H' bzw 'h'
(high) folgt, antwortet das ALLPOOL nicht mit dem aktuell eingestellten,
sondern mit dem maximal erlaubten Wert.
|
= Schreibzeichen
im Detail |
|
|
|
|
|
|
|
Das '=' Schreibzeichen wird
verwendet, um einen neuen Wert im ALLPOOL zu setzen. Unmittelbar nach dem
'=' muss der zu schreibende Wert folgen.
Der zu schreibende Wert muss im richtigen Format
und im erlaubten Bereich sein. Siehe Formate.
|
Werte
im Detail |
|
|
|
|
|
|
|
Die Information, die gelesen '?' oder geschrieben '=' wird kann in
diesen Formaten vorliegen. Bitte die korrekten Trennzeichen ('.' bzw.
':' verwenden). Beim Schreiben von Werten den erlaubten Wertebereich
beachten. Den Bereich sehen Sie für jeden Wert in der
Menüstruktur oder direkt am ALLPOOL probieren. Die erlaubten Bereiche
können auch zwischen den Firmwareversionen unterschiedlich sein. Hier
erahlten Sie auch detaillierte Infos zu Werten.
Alternativen:
Eine Alternative ist eine Auswahl verschiedener Möglichkeiten wie z.B.
'Auto | Aus | Ein' oder 'Ja | Nein' oder 'Dosierfreigabe | Sauerstoff |
Intervall'.
Die gewünschte Alternative wird mittels String, der eine dezimalen Zahl
laut der Position der Alternative darstellt angegeben, wobei mit 1 begonnen
wird. Also bei 'Auto | Aus |
Ein' bedeutet '1' Auto, '2' Aus und '3' Ein.
Alle Alternativen und Reihenfolgt finden Sie in der
Menüstruktur. Zur Sicherheit bitte auch direkt im ALLPOOL nachprüfen!
Unterschiede zwischen Firmwareversionen sind möglich!
Temperaturen
Ein String, der eine dezimale Zahl mit einer Nachkommastelle darstellt. Also für
27,5°C '27.5'. Bitte nicht ',' statt '.' verwenden!
Uhrzeit
Ein String, der mit 2 dezimalen Zahlen, getrennt durch einen Doppelpunkt Stunden und Minuten
enthält. Also für 22 Uhr 45
'22:45'.
Datum
Ein String, der mit 3 dezimalen Zahlen, getrennt durch Punkte Tag Monat Jahr
enthält. Also für 28. Mai 2010 '28.05.10'.
|
>
OK-Zeichen
im Detail |
|
|
|
|
|
|
|
Wenn die Antwort des ALLPOOL mit dem '>' OK-Zeichen beginnt, war die
zuvor gesendete Abfrage bzw. Schreibbefehl erfolgreich. Bei einer
Abfrage erhält man unmittelbar nach dem '>' den angefragten Wert. Bei
einem Schreibbefehl erhält man unmittelbar nach dem '>' den erfolgreich
geschriebenen Wert.
|
X
Fehlerzeichen
im Detail |
|
|
|
|
|
|
|
Jede Antwort vom ALLPOOL beginnt entweder mit dem OK-Zeichen, oder
mit dem 'X' Fehlerzeichen. Wenn der
Antwortstring mit dem Fehlerzeichen beginnt, folgt unmittelbar dahinter
der Grund für den Fehler in Form eines Fehlerbeschreibungszeichens.
Fehlerbeschreibungszeichen:
'c'...Prüfsumme stimmt nicht: Es liegt ein
Übertragungsfehler vor. Siehe Prüfsumme.
'u'...WerteID ist
unbekannt: Prüfen Sie korrekte ID laut der
Menüstruktur und der WerteID-Tabelle.
Fragen Sie die Firmwarenummer des ALLPOOL ab, und prüfen Sie, ob die ID
bereits implementiert ist.
'l'...Wert
ist zu klein: Minimal erlaubten Wert vor dem Schreiben mit '?l' abfragen.
Wenn dieser Fehler beim Abfragen eines Temperaturmesswertes geantwortet
wird, ist der Temperatursensor kurzgeschlossen.
'h'...Wert ist zu groß: Maximal erlaubten Wert
vor dem Schreiben mit '?h' abfragen. Wenn dieser Fehler beim Abfragen eines
Temperaturmesswertes geantwortet wird, ist der Temperatursensor
unterbrochen.
's'...Wert
ist außerhalb der erlaubten Schritte ('20.3' statt '20.0' oder '20.5').
Siehe Spalte 'Step' in der WerteID-Tabelle.
'i'...Wert kann nicht interpretiert werden. Z.B.
Zahl erwartet, Buchstabe bekommen, ',' statt '.' angegeben.
'r'...Wert
darf nur abgefragt, jedoch nicht geändert werden (Read only, z.B.
Firmware-Versionsnummer, Messwerte). Siehe Spalte 'R|W' in der
WerteID-Tabelle.
'x'...Zugriff
verweigert: Wenn z.B. das ALLPOOL in den Expertenmodus geschaltet werden
soll, jedoch ein falscher PIN angegeben wurde.
|
$
Prüfsummenzeichen
im Detail |
|
|
|
|
|
|
|
Das '$'
Prüfsummenzeichen teilt mit, dass die nächsten beiden
Zeichen eine Prüfsumme sind. Die Prüfsumme ist eine hexadezimale Zahl, die
als ASCII-String übertragen wird: '00' bis 'FF'. Im Dezimalsystem
ausgedrückt also 0 bis 255. Sie können Groß– oder Kleinbuchstaben für die
Hexzahl (A-F bzw. a-f) verwenden.
Die Prüfsumme wird aus allen Zeichen des Strings zwischen
dem Startzeichen und '$' Prüfsummenzeichen errechnet. So kann der Empfänger prüfen, ob auch
alle Zeichen fehlerfrei eingetroffen sind.
Die Prüfsumme wird so
errechnet:
- Der ASCII-Wert des ersten Zeichens (eine Hex-Zahl
zwischen 00 und FF) wird als aktuelle Prüfsumme gespeichert.
- Das nächste
Zeichen wird
XOR
(Exklusiv Oder) mit der aktuellen Prüfsumme verknüpft und
als aktuelle Prüfsumme gespeichert.
- Dies wiederholt sich solange, bis das
letzte Zeichen erreicht ist.
In die Prüfsumme dürfen ausschließlich die
Zeichen der Nutzdaten einbezogen werden. Also alle Zeichen zwischen dem
Startzeichen '#' bzw. '%' oder '*' oder '>' oder 'X' und dem Prüfsumme-Startzeichen
'$'.
Beispiel zur Berechnung einer Prüfsumme:
Angenommen, für den String '#120?\n'
soll eine Prüfsumme ermittelt werden. Das '#' bzw. '%' Startzeichen wird ignoriert.
Unser erstes Zeichen zur Berechnung der Prüfsumme ist die '1'. Sein
ASCII-Wert ist hin Hex 31. Der ASCII-Wert des nächsten Zeichens '2' ist 32.
Nun berechnen wir 31 XOR 32 und erhalten die Hex-Zahl 03. Der ASCII-Wert des
nächsten Zeichens '0' ist 30. Somit berechnen wir 03 XOR 30 und erhalten 33.
Der ASCII-Wert des nächsten Zeichens '?' ist 3F. Somit berechnen wir 33 XOR
3F und erhalten 0C. Dies ist unsere Prüfsumme. Somit schicken wir diesen
String zum ALLPOOL: '#120?$0C\n'.
Übertragungsfehler erkennen:
Der Empfänger eines Strings kann mit Hilfe der Prüfsumme mit einer
Sicherheit von 99.6% erkennen, ob der Empfangene String dem gesendeten
entspricht. Also ob der String unverändert angekommen ist.
Wenn Sie dem ALLPOOL einen String mit Prüfsumme schicken, und das ALLPOOL
erkennt, dass die Prüfsumme nicht stimmt, antwortet es mit einem
Prüfsummenfehler: 'Xc'. Den String führt es in
diesem Fall nicht aus.
Wenn Sie vom ALLPOOL einen String mit falscher Prüfsumme empfangen,
dürfen Sie dieser Antwort nicht vertrauen, sondern müssen erneut anfragen.
Prüfsummenfunktion nutzen | nicht nutzen:
Wenn Sie Probleme mit dem Berechnen der Prüfsummen zum ALLPOOL haben, und
keine Prüfsummen vom ALLPOOL erhalten wollen, lassen Sie die Prüfsumme
inklusive dem '$' Prüfsummenzeichen einfach beim Senden weg. Das ALLPOOL
antwortet in diesem Fall dann auch ohne Prüfsumme.
Wir empfehlen
die Prüfsumme immer zu verwenden, da Übertragungsfehler erkannt
werden können.
|
\n
Abschlußzeichen
im Detail |
|
|
|
|
|
|
|
Jede Zeile an das ALLPOOL muss mit dem CarriageReturn ('\n', CR,
Hex-Zahl 0D)
oder Linefeed ('\r', LF, Hex-Zahl 0A) -
Zeichen
abgeschlossen werden. Es können auch beide Zeichen hintereinander
angegeben werden. Das zweite wird dann ignoriert.
Das ALLPOOL
schließt seine Antwort immer mit beiden Zeichen ab: CR + LF (0D + 0A).
Eine unvollständige Zeile kann mit dem Abschlußzeichen abgebrochen
werden. Wenn innerhalb der Timeout-Zeit seit Senden des Startzeichens
'#' bzw. '%' kein Abschlußzeichen folgt, wird diese Zeile ignoriert.
|
© UrheberrechtAchtung |
|
|
|
|
|
|
|
|