Herunterladen Diese Seite drucken

elv LCP 100 Bedienungsanleitung Seite 6

Werbung

Bau- und Bedienungsanleitung
6
Software ganz offen
Die Beschreibung der Hardware und des Aufbaus des klei-
nen Zusatz-Displays im vorangegangenen „ELVjournal" hat
ganz sicher Appetit auf die Software-Anbindung an den PC
gemacht.
Dabei ist die „Hauptarbeit" schon erledigt, denn das Win-
dows-Programm steht inklusive Treiber als C#-Projekt zum
Download bereit. Daneben gehen wir hier natürlich noch auf
die serielle Verbindung via USB ein, auch deren Protokoll und
der verwendete Datenrahmen werden für eigene Applikati-
onen offengelegt.
Die serielle Schnittstelle
Die Datenübertragung per USB arbeitet im Prinzip wie die
inzwischen vielfach genutzte serielle Übertragung mit einem
virtuellen COM-Port. Dabei werden für diesen folgende Ein-
stellungen zugrunde gelegt:
• 19.200 Baud
• gerade Parität
• 1 Stoppbit
• 8 Datenbits
• Sendeauszeit: 10 Sekunden
Diese Einstellungen befinden sich für die PC-Software im
C#-Quelltext. Auf dem LCP 100 sind diese in der Firmware
implementiert.
Der Protokollrahmen
Der verwendete Protokollrahmen dient der Synchronisa-
tion und Absicherung der Datenübertragung zwischen dem
LCP 100 und der PC-Software. Er ist für eine Übertragung
von Nutzdaten variabler Länge bis zu einer maximale Länge
von 65.535 Byte ausgelegt. Nach der Bildung der CRC16-
Prüfsumme werden die Daten codiert und anschließend ge-
sendet.
Inhalt und Aufbau
Die Länge der Nutzdaten wird in zwei Bytes abgelegt. Da-
nach folgen die Nutzdaten und die 2 Byte der CRC16-Prüf-
summe. Die Speicherung erfolgt nach dem Byte-Reihenfol-
ge-Verfahren „Big-Endian". Der CRC16-Algorithmus arbei-
tet, wie in Tabelle 1 zu sehen, nach folgendem Prinzip. Erst
wird die CRC16-Prüfsummenbildung mit 0xffff initialisiert
und dann mit Hilfe des Polynoms 0x8005 über die Nutz-
datenlänge und die Nutzdaten die Prüfsumme gebildet. Da-
nach werden zwei Nullen in die CRC16-Prüfsumme „hinein-
geshiftet". Die 2 Byte der Prüfsumme werden anschließend
den Daten angehängt.
length_hi
length_lo Nutzdaten
CRC16
0xffff
Operationen
!
!
tabelle 1: Die Bildung der CRC16-Prüfsumme
Inhalt
0
0
!
!
!
!
Codierung und Synchronisation
Natürlich wird neben der Synchronisation auch die Codierung
der Steuerzeichen realisiert. Taucht eines der zwei Zeichen
„STX" oder „DLE" in den Daten auf, sind diese zu codieren.
Empfängerseitig wird diese Umsetzung jedoch automatisch
wieder rückgängig gemacht, um die eigentlichen Nutzdaten
wieder zu erhalten. Dabei gestaltet sich die eigentliche Co-
dierung der Daten nach der Bildung der CRC16-Prüfsumme
wie folgt:
In den Daten enthaltene Zeichen im Bereich von 0x00 bis
0x7f werden durch Steuerzeichen <DLE> (0x10) ersetzt, ge-
folgt von dem ursprünglichen Zeichen „verodert" mit dem
Wert 0x80. Danach werden im Inhalt enthaltene Steuerzei-
chen <STX> (0x02) und <DLE> (0x10) entsprechend der DLE-
Codierung folgendermaßen ersetzt:
Inhalt
<STX>
<DLE>
Im letzten Schritt wird den so entstandenen DLE-codierten
Daten vor der Übertragung das Steuerzeichen <STX> als
Synchronisationsbyte vorangestellt:
<STX>
Befehlssatz
Der LCP 100 verfügt für die Kommunikation mit der PC-Soft-
ware über einen Befehlssatz mit einer Vielzahl von Instruk-
tionen. Die Tabelle 2 gibt eine Übersicht über jeden Befehl
und dessen zugehörige Parameter.
Die Installation der Hardware
Um den LCP 100 über den PC nutzen zu können, ist als Ers-
tes der Virtual-Com-Port-Treiber von der Herstellerfirma
Silabs (mit dem C#-Projekt als Download bereitstehend) zu
installieren.
Danach wird das Gerät mittels USB-Kabel mit dem PC ver-
bunden. Das Betriebssystem erkennt es als neues Gerät.
Nach der durch den Assistenten erfolgreich ausgeführten
Installation lässt sich die zugewiesene Nummer des COM-
Ports im Gerätemanager von Windows nachschauen. Dies
geschieht unter Windows XP über die Menüpunkte „System-
steuerung" -> „System" -> Karteikarte „Hardware" ->Button
„ Geräte-Manager" -> Anschlüsse (COM und LPT).
Das C#-Projekt
Im auf der ELV-Internetseite zum Download bereitgestell-
crc16_hi
crc16_lo
ten C#-Projekt „LCP100Demo" werden die Befehle durch
Codierung
<DLE> + (<STX> | 0x80)
<DLE> + (<DLE> | 0x80)
DLE-codierter Inhalt (kein <STX> mehr enthalten)

Werbung

loading

Diese Anleitung auch für:

84133