Impulsmessung mittels IO-Warrior in Visual Basic

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

Moderator: Guido Körber

Post Reply
MpunktZ
Posts: 6
Joined: Wed Nov 07, 2007 5:01 pm

Impulsmessung mittels IO-Warrior in Visual Basic

Post by MpunktZ »

Hallo Forum

Folgende Aufgabe soll von einem IOW24 erledigt werden:

Ein Impuls einer Lichtschranke soll fuer eine Drehzahlberechnung erfasst und ausgewertet werden.
Dieser wird dann in einem einfachen Visual Basic Programm ( VB6 oder auch 2005) auf dem PC angezeigt.

Ich habe ein Starter-Kit hardwaremaessig erfolgreich verdrahtet.
Mit den Beispielprogrammen konnte ich es hinbekommen, dass die Schaltzustaende der Lichtschranke ( offen/geschlossen) auch tatsaechlich registriert werden.

Die Programmierung bereitet mir jedoch Schwierigkeiten, da ich mich mit dieser Materie eigentlich auch gar nicht befassen mag.

Nun meine Frage:
Gibt es hier jemanden, der mir fuer einen gewissen Betrag eine kleine Routine schreibt, welche diese Impulse vernuenftig auswertet,
so dass ich damit eine Art Drehzahlmesser erhalte?


Besten Dank :-)
MpunktZ
Posts: 6
Joined: Wed Nov 07, 2007 5:01 pm

Post by MpunktZ »

Ueber 220 Leute haben das gelesen.

Aber keiner antwortet ?...........woran liegt es denn?

Beste Gruesse,
M.
MpunktZ
Posts: 6
Joined: Wed Nov 07, 2007 5:01 pm

Neuer Anlauf

Post by MpunktZ »

Hallo Forum

Vielleicht schildere ich die Aufgabe nochmals aus einer anderen Perspektive:

Ausgangssituation:
- Visual Studio 2005
- IOW24 Starter Kit
- Lichtschranke + div. Ansteuer-Elemente ( auf Starter-Platine verloetet)
-der geschaltete Ausgang der Lichtschranke ist mit Pin P0.0 verbunden

IOW wird korrekt als USB-Geraet erkannt ( Windows XP ), alles bestens.

Auf der mitgelieferten CD befindet sich eine Datei namens SimpleHIDWrite.Exe.

Wenn ich diese Datei starte, dort den IOW als Geraet auswaehle und dann die Lichtschranke betaetige, wechselt die Anzeige bei jeder Betaetigung zwischen:
RD 00 FF FF
und
RD 00 FE FF

Dies sagt mir als Laie, dass die ganze Sache hardwaremaessig korrekt verdrahtet sein muss, da die Signale ja einwandfrei empfangen und registriert werden.

Starte ich nun jedoch meine Applikation unter Visual Studio, dann ist leider Schicht im Schacht.
Sprich:
Das Programm meldet *dass es nicht mehr reagiert*.

Bevor ich euch nun mit meinem grausam laienhaften Quellcode dieser von mir selbst erstellten Anwendung die Haare zu Berg stehen lasse..........eine Frage:

Gibt es einen Quellcode von diesem SimpleHIDWrite.Exe, welchen in auf Visual Studio verwenden kann?

Da dieses Programm ja einwandfrei mit meiner Lichtschranke zusammenarbeitet bin ich mir (nahezu ) sicher, dass ich daraus dann den korrekten Weg fuer meine Applikation ableiten kann.

Es waere schoen, wenn sich an diesem Schlechtwetter-Sonntag jemand darauf antworten wuerde..........damit der Tag dann eventuell noch ein kleiner Lichtblick wird.

Besten Dank :-)

M.[/u]
Guido Körber
Site Admin
Posts: 2879
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Post by Guido Körber »

SimpleHIDwrite ist in Delphi programmiert, da geht nichts mit VisualStudio.

Das Programm reagiert nicht mehr: Das heißt also iowKitRead wird aufgerufen und dann passiert nichts mehr? Das wäre dann das korrekte Verhalten, iowKitRead ist blockierend, kommt also erst zurück, wenn neue Daten vom IO-Warrior empfangen wurde und das passiert nur wenn sich was an einem Eingang ändert. iowKitReadnonblocking wäre im Zweifelsfalle besser geeignet.
User avatar
Christoph Jung
Posts: 673
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Post by Christoph Jung »

Wie genau sieht denn die Abfrage der Lichtschrank aus?
Ein grund könnte sein, dass wenn man in einer Schleife das IowKitRead() verwendet und sich nichts am IOW regt das Read auf einen Report Wartet und das Programm zum stillstand bewegt.

Wenn nur die IO-Ports abgefragt werden wäre IowKitReadImmediate das passende (oder evtl. ReadNonBlocking). Am besten wäre es, wenn Sie den Teil des Quellcode hier Posten wo die Abfrage ausgeführt wird.
Software developer
MpunktZ
Posts: 6
Joined: Wed Nov 07, 2007 5:01 pm

Problem Dank Ihrer Hilfe geloest

Post by MpunktZ »

Werte Herren........das Problem ist geloest.

Der Fehler war in der Tat die Anweisung IOWKitRead anstatt IOWKitReadnonblocking.

Da sich die Anweisung in einem Timer befand, bemerkte ich nicht, dass nach einer Aenderung des Signalpegels die IOW eine neue Abfrage einleitete, da der Timer auf alle 10ms programmiert war.

Ich gehe davon aus, dass ich dadurch meine Anwendung nun ohne weitere Hilfe fertigstellen kann.

Nochmals besten Dank !

:-)

M.
Post Reply