Newbiefragen zur Programmierung der IO-Warrior 40 mit C
Moderator: Guido Körber
-
- Posts: 543
- Joined: Mon Dec 01, 2003 6:09 pm
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
Selbiges bei Read, welches dann auf eine Flanke wartet und erst einen Wert zurrückgibt, wenn eine Pegeländerung stattgefunden hat
-
- Site Admin
- Posts: 2876
- Joined: Tue Nov 25, 2003 10:25 pm
- Location: Germany/Berlin
- Contact:
-
- Posts: 543
- Joined: Mon Dec 01, 2003 6:09 pm
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.
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.
-
- Site Admin
- Posts: 2876
- Joined: Tue Nov 25, 2003 10:25 pm
- Location: Germany/Berlin
- Contact:
Genau so ist das. Ich verwende in diesem Fall die "Get Current Pin Status" Special Mode Function.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??
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().
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 ;-)
Da das Thema (Abfrage der I/O-Bits) oft nicht verstanden wird, wollte ich einfach meinen Senf auch noch dazu geben ;-)
-
- Posts: 543
- Joined: Mon Dec 01, 2003 6:09 pm