Download: Comwrap

Kleine Helferlein für das Image auf der Box

Moderatoren: DrStoned, PauleFoul

Antworten
Nachricht
Autor
Benutzeravatar
jmittelst
Co-Admin
Co-Admin
Beiträge: 11013
Registriert: So 16 Nov 2003, 13:42
Wohnort: Schildgen (Bergisch Gladbach)
Kontaktdaten:

Download: Comwrap

#1 Beitrag von jmittelst » Mi 01 Jun 2005, 3:22

Dieser Wrapper dient dazu, aus Scripten heraus über die serielle Schnittstelle der DBox
mit Geräten zu kommunizieren. Da mit einem Script weder Binärdaten ausgegeben oder aus-
gewertet werden können noch z.B. Checksummen über XOR berechnet werden können, bietet
der Wrapper eine Kommandozeilenschnittstelle, über welche solche Aufgaben und Auswertun-
gen möglich sind.
Geöffnet und konfiguriert wird die Schnittstelle mit dem ebenfalls im Archiv befindlichen "stty".

Installation:
comwrap und stty kommen mit den Rechten 755 nach /var/bin/. Mehr ist für die Installation
nicht zu tun.

Nutzung:
Bevor die serielle Schnittstelle verwendet werden kann, muß sie zunächst erst einmal geöff-
net und konfiguriert werden. Voraussetzung ist allerdings, daß die Bootkonsole von Neutrino
nicht auf "seriell" eingestellt ist, da es sonst zu gegenseitigen Beeinflussungen kommt.
Geöffnet und konfiguriert wird die Schnittstelle mit "stty". Die Aufrufsyntax von "stty"
kann man sich in den Linux-Beschreibungen anschauen. Eine Beschreibung findet man zum Bei-
spiel auf http://www.computerhope.com/unix/ustty.htm.
Um zum Beispiel den externen Com-Port mit den Parametern 19200 Baud und 8 Datenbit zu öffnen,
ist zu Beginn des Scriptes folgendes Kommando auszuführen: "stty 19200 cs8 </dev/tts/0"

Nun kann man über den Aufruf von comwrap Daten zur Schnittstelle senden oder von ihr empfan-
gen. Da empfangene Daten über die Kommandozeile zurückgegeben werden, können diese mit der
Aufrufsyntax "Variablenname=`comwrap ...`" einer Variablen zugewiesen und anschließend aus-
gewertet werden. Der Erfolg von Lese- und Schreibkommandos kann unmittelbar nach dem Aufruf
über die Systemvariable "$?" abgefragt werden. "0" bedeutet erfolgreiche Ausführung des Vor-
gangs, "1" bedeutet, daß ein Fehler aufgetreten ist.

Aufrufsyntax von comwrap:

comwrap Device Mode [Konsolenformat] [Comformat] [Endezeichen] [Checksumme] [zu lesende Bytes] [Senddaten [Sendedaten [...]]]

Device
welcher Port soll verwendet werden?
-d0: externer Port
-d1: interner Port

Mode
was wollen wir machen?
-r: Empfangen
-w: Senden

Konsolenformat
wie sollen die vom Script übergebenen Daten interpretiert werden?
-ks: als String
-kd: als Dezimalzahl
-kh[s]: als Hex-Zahl, mit -khs sowohl bei Ein- als auch bei Augabe mit Leerzeichen getrennt
-kb: als Byte

Portformat
wie sollen die interpretierten Daten auf den Port ausgegeben werden?
-ps: als String
-pb: als Byte
-ph[s]: als Hex-Zahl, mit -phs sowohl bei Ein- als auch bei Augabe mit Leerzeichen getrennt

Endezeichen:
sollen Endezeichen angehängt werden?
-ec: beim Schreiben Carriage Return anhängen, beim Lesen nach Carriage Return abbrechen (0x0D)
-el: beim Schreiben Line Feed anhängen, beim Lesen nach Line Feed abbrechen (0x10)

Checksumme
erfolgt eine Kommunikation mit Checksumme und wie sieht die aus?
-co[n]: alle Zeichen werden mit XOR verknüpft und von dem Ergebnis werden n Bytes berücksichtigt
-ca[n]: alle Zeichen werden vorzeichenlos addiert und vom Ergebnis werden n Bytes berücksichtigt

zu lesende Bytes
beim Lesen von Binärdaten vom Port sollen wieviele Bytes gelesen werden?
-nz: es sollen z Bytes empfangen werden


Beispiel: http://www.produktinfo.conrad.com/daten ... eriell.pdf
Um nun zum Beispiel auf dem in dieser Anleitung beschriebenen Conrad-Relaisboard das Relais Nummer
3 (Bitwert 4) zu setzen, ruft man den Wrapper so auf:

comwrap -d0 -w -kd -pb -co1 3 1 4
comwrap -d0 -r -kd -pb -n4

An das Board würde dann folgende Bytefolge gesendet werden: "0x03 0x01 0x04 0x06"
Die übersetzte Antwort des Boards, welche über die Kommandozeile ausgegeben wird
und im Script auch ausgewertet werden könnte sieht dann so aus: "252 1 0 253".

Am Besten kann man sich mit der Funktion vertraut machen, indem man zunächst erst einmal mit
dem Com-Terminal eines PC kommuniziert und den Comwrapper über Telnet mit den entsprechenden
Parametern aufruft.

Dieses ist eine erste Arbeitsversion des Wrappers. Wir würden uns freuen, Erfahrungsberichte und
vor allem Vorschläge für zuätzliche Funktionalitäten von Euch zu bekommen. Die möglichen Kommu-
nikationsprotokolle mit externen Geräten sind ja dermaßen vielgestaltig, daß man nich alle von
vornherein berücksichtigen kann.
Ein Spielzeug für die Steuerung des Com-Ports (hilft evtl. einigen Besitzern von Groß-Displays ;)).

Bitte beachten - Wir können natürlich keine Gewähr für irgendwas übernehmen. Wenn ihr irgendein Gerät oder etwas anderes an den Comport eurer Box steckt, vergewissert Euch vorher, das ihr wisst, was ihr tut. Wer dabei etwas toastet und sich oder eine Sache schädigt, ist selbst Schuld.
Also, wer sich nicht sicher ist: besser Finger weg!

Viel Spaß damit!

cu
Jens
Dateianhänge
comwrap0.03.zip
Version 0.03
Readme und Gefahrenhinweis beachten!
Dank an das NewTuxWetterteam
(14.37 KiB) 117-mal heruntergeladen
VU+ Ultimo 4k
VU+ Duo²
VU+ Solo²


[Zitat]Es gibt 2 Dinge, die unendlich sind. Das Weltall und die Dummheit der Menschen. Beim Weltall bin ich mir aber nicht so sicher...[/Zitat]
Vorsicht! Lesen kann zu Bildung führen! Links, Suchfunktion, Wikis und Google deshalb nur mit Bedacht nutzen!

Benutzeravatar
jmittelst
Co-Admin
Co-Admin
Beiträge: 11013
Registriert: So 16 Nov 2003, 13:42
Wohnort: Schildgen (Bergisch Gladbach)
Kontaktdaten:

#2 Beitrag von jmittelst » Sa 04 Jun 2005, 12:21

So, wie versprochen, hängt vorn nun die Version mit der möglichen Kombination
von Lesen und Schreiben in einem Aufruf dran. Damit gehen nun auch bei schnell
reagierenden Geräten keine Antworten verloren.

Das Beispiel von osy_layer_7 (wozu immer es auch gut sein mag ;) ) würde dann
so realisiert werden:
comwrap -d0 -wr -kd -pb -n1 45 73 6 84 243 188 17 2 0 1 225 0 129 49
comwrap -d0 -wr -kd -pb -n1 165 73 7 111 97 204
Die Ausgabe der Quittung 255 auf die Konsole erfolgt also gleich bei jedem Aufruf.
Version 0.03 ist neu.

Vielen Dank an das NewTuxWetterTeam, hier namentlich SnowHead.

cu
Jens
[/quote]
VU+ Ultimo 4k
VU+ Duo²
VU+ Solo²


[Zitat]Es gibt 2 Dinge, die unendlich sind. Das Weltall und die Dummheit der Menschen. Beim Weltall bin ich mir aber nicht so sicher...[/Zitat]
Vorsicht! Lesen kann zu Bildung führen! Links, Suchfunktion, Wikis und Google deshalb nur mit Bedacht nutzen!

Antworten