Projekt IOWarrior Socket-Server (neue Version 1-3-036)

Dies ist das deutsche Forum für alle Themen um den IO-Warrior. Beiträge bitte nur in Deutsch.

Moderator: Guido Körber

friend-of-rq
Posts: 389
Joined: Sun Feb 13, 2005 1:22 pm
Location: Gerblingerode / Duderstadt
Contact:

Projekt IOWarrior Socket-Server (neue Version 1-3-036)

Post by friend-of-rq »

Hallo ich habe ein neues Projekt gestartet,

Über den Server(Programm) kann man übers Netz oder lokal den IOWarrior 24 / 40 / 56
gleichzeitig mit mehreren Client-Verbindungen(Programmen) verwenden.

Alle Kommandos sind in Klartext und werden an den entsprechenden IOW automatisch angepasst.
Derzeit gibt es in der Version 1-2-005 schon 41 Kommandos :
z.B. "LIST-IOW-DEVICE" als Antwort erhält man alle verfügbaren IOWs .
1 00001001 1500 IOW40 1021
2 000003FA 1501 IOW24 1021
3 0000027F 1503 IOW56 1001


Es handelt sich noch um eine Beta-Version nur zum Testen geeignet !!
Die aktuelle Version kann von meiner HP runter geladen werden.
DOWNLOAD IO-Warrior Socket-Server

Folgende Funktionen wurden bereits integriert
- Server Steuerung
- IOW-Device Verwaltung
- IOW-LCD
- IOW-LED
- IOW-Port lesen und schreiben (es können auch nur einzelne Bits geändert werden)

weitere Funktionen werden natürlich noch eingebaut :-)

Wie es bei solchen Projekten ist, sind Fragen und Anregungen immer erwünscht.
Gruss
R.Greinert
Last edited by friend-of-rq on Thu May 07, 2009 1:59 am, edited 4 times in total.
User avatar
Christoph Jung
Posts: 670
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: Projekt IOWarrior Socket-Server

Post by Christoph Jung »

Sehr schönes Tool, muss ich ja sagen. Hatte vor auch mal sowas in der Richtung zu unternehmen, nur das mit der "Zeit dafür haben" passte nie.

Was mir nur aufgefallen ist, das der Server IO-Warrior, die wärend des laufenden betreibs angeschlossen werden nicht listet. Aber da das ja noch eine Beta ist kommt wie im ALL_IN_ONE-Tool bestimmt das ein oder andere hinzu.

Wenn es erlaubt ist würde ich das gerne in unserer Seite Verlinken?!
Abteilung: Softwareentwicklung
Folge uns auf Twitter
Follow us on twitter
friend-of-rq
Posts: 389
Joined: Sun Feb 13, 2005 1:22 pm
Location: Gerblingerode / Duderstadt
Contact:

Re: Projekt IOWarrior Socket-Server

Post by friend-of-rq »

Hallo Herr Jung,

das Projekt ist noch in den Startlöchern ...
hatte nur schon mal darauf aufmerksam gemacht, um eben gerade in den Anfängen
bereits Verbesserungsvorschläge für spätere Versionen zu berücksichtigen bzw. gleich zu integrieren.

Das erkennen von IOWs die während des Betriebes hinzukommen oder sogar wegfallen
ist nicht so ganz einfach, denn die Reihenfolge der bereits erkannten IOW und deren ID
darf sich nicht ändern. Ein IOW der z.B. entfernt wird, muss dann in der Auflistung gesperrt werden. Wird noch kommen aber erst später ...

Vorerst möchte ich alle Funktionen einbauen.

Besonders Features soll es bei den Funktionen RC5/Tast-Matrix/ und der
Server eigenen PINput geben ...

Die Clients, die diese Funktionen aktiviert haben, bekommen automatisch die entsprechenden
aufbereiteten Daten nach einem Ereignis gesendet, man erspart sich somit das Pollen.
Die Nachrichten fangen dann mit RC5 .... , SWT ... oder PIN ... an, damit die Client-Software diese von den anderen unterscheiden kann.

Es wird viele Kommandos in mehreren Ausführungen geben, je nach dem wie man die Daten braucht ... dec / hex / bin

Das Einbinden der IO-Warrior und deren Funktionen in eigene Anwendungen gestaltet sich dann sehr einfach. Socket-Server mit der Anwendung starten (ein doppelt starten werde ich noch unterdrücken) Socket-Verbindung herstellen ... fertig .
Beim Beenden der Anwendung kann man den Server mit dem Kommando "SERVER-CLOSE" schließen ...
Der Server wird dann beendet, sofern er nicht von einem anderen Client noch verwendet wird.

Über die Server-Einstellungen LOG-LEVEL und SHOW-LEVEL kann man gerade in der Entwicklung sehr gut Debuggen.
Im späterem Echtbetrieb setzt man den LOG-Level =1 (es werden nur noch Server-Meldungen gelistet) und SHOW-LEVEL =0 (der Server wird unsichtbar).
wayoda
Posts: 362
Joined: Fri Dec 19, 2003 12:00 pm
Location: Wuppertal/Germany

Re: Projekt IOWarrior Socket-Server

Post by wayoda »

Hallo,
nette Idee. Ich finde es ein wenig schade das bei der Definition des Protokolls keine XML-Syntax verwendet wird, denn wirklich jede Programmierumgebung bringt doch heute einen (oder mehrere) XML-Parser mit, der wohl in den meisten Fällen auch noch schneller und resourcenschonender ist als alles was man selber programmiert.

Wäre das noch eine Option beim Stand des Projektes?
Ansonsten implementiert man bei jedem Client für eine weitere Programmiersprache einen von Grund auf neuen Parser.

Kleines Beispiel für die Abfrage der Device List

Code: Select all

<iowserver>
  <cmd name="list devices" />
</iowserver>

die Antwort auf Befehl list devices

Code: Select all

<iowserver>
  <devicelist>
    <device id="1" serial="00001001" product="1500" name="IOW40" revision="1021" />
  </devicelist>
</iowserver>
kann natürlich auch eine leere Liste sein (keine devices vorhanden).

Code: Select all

<iowserver>
  <devicelist/>
</iowserver>
Mir persönlich gefällt an XML (neben den Parsern), dass man die Daten fast wie sourcecode lesen kann.

Abfrage der Ports:

Code: Select all

<iowserver>
  <cmd name="portstatus" deviceId="3"/>
</iowserver>
Antwort:

Code: Select all

<iowserver>
  <portstatus deviceId="3" serial="00001001" product="1500" >
      <port index="0" status=00011001 />
      <port index="1" status=01111001 />
      <port index="2" status=00011001 />
      <port index="3" status=00000101 />
  </portstatus>
</iowserver>
Die von der xml-syntax bedingt größere Anzahl an bytes die übertragen werden müssen, ist heutzutage auch kein Problem mehr.

Falls Xml eine Option wäre, steuer ich auch gerne einen Java-Client bei
...kleiner Erpressungsversuch ;-)

Eberhard
friend-of-rq
Posts: 389
Joined: Sun Feb 13, 2005 1:22 pm
Location: Gerblingerode / Duderstadt
Contact:

Re: Projekt IOWarrior Socket-Server

Post by friend-of-rq »

Hallo Wayoda,

mein Ansatz war: klein, schnell, einfach und laufen muss es ...

Wo kann ich denn mal nachlesen wie so ein XML-Syntax aufgebaut sein muss.
wie gehe ich z.B. mit Fehlermeldungen um

Ich sehe für mich da nicht so den Vorteil XML zu verwenden, denn die Analyse der
Kommandos ist erheblich aufwendiger, gerade im Bezug auf die möglichen Schreibweisen.
Verwenden von ein oder mehr Leerzeichen, wie soll das Programm reagieren wenn
mehrer <cmd ... /> Anweisungen unter <iowserver> übergeben werden ...
muss dann die Antwort auch Gruppiert werden ...
<iowserver>
<Antwort1>
</Antwort1>
<Antwort2>
</Antwort2
</iowserver>

Desweiteren muss doch auch der Client den Antwort String analysieren was ich für sehr Zeit aufwendig halte ...

OK ... es ist dann alles strukturierter ...

Aber jetzt weis ich auch warum die heutigen Programme immer langsamer und Ressourcen raubender werden, statt Klartext zu reden wird erst mal alles beschrieben.

Vielleicht haben deswegen auch Männer immer das Problem Frauen zu verstehen...
die packen Ihre Informationen auch immer gut versteckt in viele Worte.

Spaß bei Seite

Ich werde mir das mal durch den Kopf gehen lassen und eventuell eine XML-Syntax Unterstützung mit einbauen, der Client der ein XML-Syntax schickt bekommt dann auch ein XML-Syntax als Antwort.

Ich habe mich im Bereich Programmierung (aus Faulheit) nicht besonders weiter entwickelt ...
vor 27 Jahren habe ich mit MaschienenSprache zu Zeiten des (Z80) angefangen.
z.B. 3E 00 D3 00 ... Lade Register(A) und gebe an Port(00) aus usw.
Deswegen liegt mir Basic einfach am besten, denn es muss nicht langsam sein, siehe (RapidQ)
und vor allem die Programme kann man noch als Listing ausdrucken und lesen :-)

Es reicht mir schon immer wenn ich andere Code egal ob C / Java / php ...usw.
lesen muss ,sofern man diese noch ohne Spezielle IDE lesen kann,
um zu verstehen, wie was gemacht wurde ...
vor allen das mit den vielen Klammern geht mir auf den Zwirn,
das kann man doch gar nicht mehr schreiben,da möchte ich keinen Fehler suchen.
Da ist dann ein Programm was das obligatorische "Hello World" darstellen soll,
gleich mehrere MB groß und ohne .Net läuft es erst gar nicht !

So genug ereifert

Aktuelle Version vom Socket-Server (1-2-008) ist verfügbar, jetzt auch mit I2C Unterstützung.

Ich hoffe ich habe jetzt keinem auf dem Schlips getreten.
Last edited by friend-of-rq on Wed Nov 19, 2008 2:07 am, edited 2 times in total.
Mike D
Posts: 91
Joined: Wed Jun 02, 2004 4:07 pm
Location: Elbe- Weser-Dreieck
Contact:

Re: Projekt IOWarrior Socket-Server

Post by Mike D »

Hey,
interessante Sache, werde ich aufmerksam weiter verfolgen.
Meine Idee ist einen Clienten dafür als DLL für ProfilabExpert zu machen.

Hab die erste Beta auch schon getestet. Da ich einen Prototypen eines Gerätes mit integriertem IOW24 an einem PC mit WIN98SE hängen habe, hab ich versucht den Server auf diesem zu starten. Der Server hat aber hier die iowkit.DLL nicht gefunden.

Mike
friend-of-rq
Posts: 389
Joined: Sun Feb 13, 2005 1:22 pm
Location: Gerblingerode / Duderstadt
Contact:

Re: Projekt IOWarrior Socket-Server

Post by friend-of-rq »

Hallo Mike D,

alle Dateien in ein Verzeichnis entpacken,

und das Programm aus dem Verzeichnis starten,

denn das Programm check nach dem start, ob die DLL sich in dem gleichen Verzeichnis befindet.

Wie gesagt ist noch eine Beta-Version ...

Ich musste schon einige Kommandos ändern, denn wie ich mir das mit der Übertragung von Strings gedacht habe klappt nicht ... beinhaltet der String Steuerzeichen wie z.b. den wert von 13 oder 12 , dann zerreist der String und es kommt nur noch die hälfte an !

Somit müssen Strings dann in Hex($00FF...) oder BIN($00001111) oder nur ($Text) übergeben werden.

Ralf
Mike D
Posts: 91
Joined: Wed Jun 02, 2004 4:07 pm
Location: Elbe- Weser-Dreieck
Contact:

Re: Projekt IOWarrior Socket-Server

Post by Mike D »

friend-of-rq wrote: alle Dateien in ein Verzeichnis entpacken,
und das Programm aus dem Verzeichnis starten,
denn das Programm check nach dem start, ob die DLL sich in dem gleichen Verzeichnis befindet.
genauso hab ichs gemacht, unter XP gehts unter 98 nicht, hab auch die iowkit.dll im Systemordner auf 1.5 geändert, hat auch nichts gebracht.

Mike
Mike D
Posts: 91
Joined: Wed Jun 02, 2004 4:07 pm
Location: Elbe- Weser-Dreieck
Contact:

Re: Projekt IOWarrior Socket-Server

Post by Mike D »

Habe angefangen einen einfachen Clienten in Delphi zu machen, bekomme auch schon ne Antwort vom Server.
Jetzt ne vielleicht dumme Frage, woran erkenne ich, das eine Antwort zu ende ist oder noch eine Zeile kommt?

Mike
friend-of-rq
Posts: 389
Joined: Sun Feb 13, 2005 1:22 pm
Location: Gerblingerode / Duderstadt
Contact:

Re: Projekt IOWarrior Socket-Server

Post by friend-of-rq »

Hallo Mike,

die Antworten sind in der Regel einzeilig,
bei den mehrzeiligen Antworten z.B. List-IOW-Device
kannst du zuvor die Anzahl abfragen z.B. get-iow-numdevice.

Bei meinem Test-Client verwende ich eine Programm interne Socketabfrage,
ob es noch was zum einlesen gibt.
IsServerReady FUNCTION Bool%(Sock%) True/False if server is sending data

Der Server arbeitet alle Kommandos der Clients sequenziell ab,
somit wird verhindert das was durcheinander kommt.

Antworten werden in einem Durchgang immer komplett gesendet,
Zeilen werden mit CHR(13) abgeschlossen.

Beim Kommando IOW-I2C-Scan kann die Antwort ein wenig dauern (ca 1 Sek),
je nach dem welcher IOW verwendet wird.
Der Server scannt den I2C-Bus und schickt dann die Antwort komplett.
Es gibt keine Teilantworten.


Zu dem Problem mit W98 ...
Lautet die Fehlermeldung : "ERROR = IOWKit.dll not found" in der Listbox oder
kommt eine Windows-Meldung.
Mike D
Posts: 91
Joined: Wed Jun 02, 2004 4:07 pm
Location: Elbe- Weser-Dreieck
Contact:

Re: Projekt IOWarrior Socket-Server

Post by Mike D »

friend-of-rq wrote: Zu dem Problem mit W98 ...
Lautet die Fehlermeldung : "ERROR = IOWKit.dll not found" in der Listbox oder
kommt eine Windows-Meldung.
Es ist eine Meldung in der Listbox, es kommt aber 1.5 drin vor, als wenn er eine falsche findet, kann ich z.Zt. aber nicht nochmal genau nachsehen, da ich erst Mo. wieder auf Arbeit bin.

In Bezug auf das andere muss ich dann mal rauskriegen wie ich in Delphi den Readbuffer abfrage.

An sonsten ging das bisher erstaunlich einfach
towaibw
Posts: 198
Joined: Sat Dec 27, 2003 10:55 pm
Location: Berlin / Germany
Contact:

Re: Projekt IOWarrior Socket-Server

Post by towaibw »

Dll 1.5 läuft nicht mit Win98. Das bedeutet mit anderen Worten, dass der IOW56 nicht unter Win98 benutzt werden kann (nur IOW24 und IOW40, dann aber mit 1.4 dll).
Mike D
Posts: 91
Joined: Wed Jun 02, 2004 4:07 pm
Location: Elbe- Weser-Dreieck
Contact:

Re: Projekt IOWarrior Socket-Server

Post by Mike D »

OK, das erklärts. danke
friend-of-rq
Posts: 389
Joined: Sun Feb 13, 2005 1:22 pm
Location: Gerblingerode / Duderstadt
Contact:

Re: Projekt IOWarrior Socket-Server

Post by friend-of-rq »

Hallo,
eine neue Version ist da:
1-2-013

Folgende Funktionen wurden bereits integriert und können mit 65 Kommandos angesprochen werden.
- Server Steuerung (verwalten von mehreren Clients)
- Device Verwaltung (Server erkennt hinzufügen und entfernen von IOW's)
- IOW-LCD
- IOW-LED-Matrix
- LED-Matrix (Laufschrift)
- IOW-Port Read / Write (es können auch nur einzelne Bits geändert werden)
- IOW-I2C
- IOW-RC5
- IOW-Switch-Matrix
- send Message

Es handelt sich noch um eine Beta-Version nur zum Testen geeignet !!
Die aktuelle Version kann von meiner HP runter geladen werden.
DOWNLOAD IO-Warrior Socket-Server
Mike D
Posts: 91
Joined: Wed Jun 02, 2004 4:07 pm
Location: Elbe- Weser-Dreieck
Contact:

Re: Projekt IOWarrior Socket-Server

Post by Mike D »

Hallo friend-of-rq,
der Sinn von Username erschliesst sich mir noch nicht.
Gibt es eine Möglichkeit, dass sich ein Client einzene Ports, Funktionen oder Devices exclusiv für sich reserviert, damit kein andere Client dazwischen funken kann?

Mike
Post Reply