Newbiefragen zur Programmierung der IO-Warrior 40 mit C

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

Moderator: Guido Körber

PeeDee
Posts: 38
Joined: Sun Dec 18, 2005 7:30 pm

Post by PeeDee »

Jaaaaaaaa, super :D
Vielen lieben Dank für eure Mühe!!
PeeDee
Posts: 38
Joined: Sun Dec 18, 2005 7:30 pm

Post by PeeDee »

Kriegt man das eigentlich auch so hin, daß statische Zustände der Ports gelesen werden?
Denn so wie ich das bisher gesehen habe, wird ReadImmediate und Read ja nur Zustandsänderungen angezeigt oder??
Robert Marquardt
Posts: 543
Joined: Mon Dec 01, 2003 6:09 pm

Post by Robert Marquardt »

Wozu? Wenn sich nichts aendert ist es doch statisch, also der letzte gelesene Zustand.
PeeDee
Posts: 38
Joined: Sun Dec 18, 2005 7:30 pm

Post by PeeDee »

Nunja, nehmen wir mal an, daß der Taster auf dem Experimentierboard gedrückt gehalten wird, dann wird ReadImmediate aufgerufen, welches mir in diesem Fall keinen Wert zurrückschickt.
Selbiges bei Read, welches dann auf eine Flanke wartet und erst einen Wert zurrückgibt, wenn eine Pegeländerung stattgefunden hat
Guido Körber
Site Admin
Posts: 2876
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Post by Guido Körber »

ReadImmediate liefert den zuletzt empfangenen Wert zurück und die Information ob seit dem letzten Aufruf neue Daten gekommen sind.
PeeDee
Posts: 38
Joined: Sun Dec 18, 2005 7:30 pm

Post by PeeDee »

Aha, also wenn sich etwas an den Ports ändert z.B. ein kurzer Impuls an einem Eingang, aber zu der Zeit jedoch kein ReadImmediate ausgeführt wird, dann wird diese kurze Änderung nicht "bemerkt"?
Robert Marquardt
Posts: 543
Joined: Mon Dec 01, 2003 6:09 pm

Post by Robert Marquardt »

Es lauft ein interner Thread der nichts anderes tut als laufend zu lesen. Die Reports werden in eine kleine Queue eingefuegt.
IowKitReadImmediate schaut nach ob etwas in der Queue ist und liefert dann einen neuen Report ab. Ist nichts in der Queue, dann wird der letzte gelesene Report geliefert.
IowKitRead bedient sich aus der Queue sofern etwas da ist, sonst wartet es bis ein Report in die queue eingefuegt wird.
PeeDee
Posts: 38
Joined: Sun Dec 18, 2005 7:30 pm

Post by PeeDee »

Also interner Thread = in dem Controller?
Denn wenn ich an einem Pin einen Lowpegel anlege (dauerhaft) und
dann mit ReadImmediate auslese, bekomme ich dennoch FFFFFFFF angezeigt
Guido Körber
Site Admin
Posts: 2876
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Post by Guido Körber »

Nein, in der DLL. Und logischerweise läuft der auch erst dann wenn die DLL aktiviert wurde.
PeeDee
Posts: 38
Joined: Sun Dec 18, 2005 7:30 pm

Post by PeeDee »

Aha und die Aktivierung der DLL geschieht mit dem Start des Programms oder wann passiert das?
towaibw
Posts: 198
Joined: Sat Dec 27, 2003 10:55 pm
Location: Berlin / Germany
Contact:

Post by towaibw »

PeeDee wrote:Kriegt man das eigentlich auch so hin, daß statische Zustände der Ports gelesen werden?

Denn so wie ich das bisher gesehen habe, wird ReadImmediate und Read ja nur Zustandsänderungen angezeigt oder??
Genau so ist das. Ich verwende in diesem Fall die "Get Current Pin Status" Special Mode Function.

Für alle, die sich nicht vorstellen können, warum das so wichtig ist: Nehmen wir an, wir haben eine Applikation "Füllstandsüberwachung" mit zwei Kontakten/Lichtschranken: "Minimum" und "Maximum". Wenn der Behälter halb voll ist und ich die Applikation starte, ist der Zustand so lange unbekannt, bis "Minimum" oder "Maximum" ausgelöst wurde. Oder noch schlimmer: wenn bei Applikationsstart "Maximum" bereits ausgelöst hatte, bekomme ich das gar nicht erst mit. Solch eine Applikation, so glaube ich, will keiner wirklich haben!

Reklame: bei IOWJ heißt die Methode scanPorts() b.z.w. int[] getCurrentPinStatus().
PeeDee
Posts: 38
Joined: Sun Dec 18, 2005 7:30 pm

Post by PeeDee »

Reklame?IOWJ? Du sprichst doch auch vom IO-Warrior ODER???
Wenn dem so ist, kannst vielleicht auch bitte mal ein Beispiel Code-Schnipsel posten?
towaibw
Posts: 198
Joined: Sat Dec 27, 2003 10:55 pm
Location: Berlin / Germany
Contact:

Post by towaibw »

Reklame, weil das OT ist und IOWJ (IO-Warrior for Java) eine Lib für (fast) alle Funktionen der IO-Warriors ist (und hier im Forum auch schon öfters erwähnt wurde) und nicht Deiner Zielsprache entspricht.

Da das Thema (Abfrage der I/O-Bits) oft nicht verstanden wird, wollte ich einfach meinen Senf auch noch dazu geben ;-)
Robert Marquardt
Posts: 543
Joined: Mon Dec 01, 2003 6:09 pm

Post by Robert Marquardt »

Also ich habe jetzt keine Lust mehr weitere Codeschnipsel zu posten.
Es ist Zeit zu lernen Doumentation in Code umzusetzen.

"Ich verwende in diesem Fall die "Get Current Pin Status" Special Mode Function."

Das sollte eigentlich als Hinweis ausreichen. Das fuehrt zu Kapitel 10.5.4 der Dokumentation.
PeeDee
Posts: 38
Joined: Sun Dec 18, 2005 7:30 pm

Post by PeeDee »

Hm, also soviele Kapitel hat meine "Dokumentation" irgendwie nicht :o/
Meinst doch das Datenblatt des IO-Warrior 24 bzw 40 ODER das PDF aus dem SDK-Archiv?
Oder hab ich da noch etwas übersehen?
Post Reply