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 :-)
Impulsmessung mittels IO-Warrior in Visual Basic
Moderator: Guido Körber
Neuer Anlauf
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]
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]
-
- Site Admin
- Posts: 2879
- Joined: Tue Nov 25, 2003 10:25 pm
- Location: Germany/Berlin
- Contact:
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.
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.
- Christoph Jung
- Posts: 673
- Joined: Sun Oct 08, 2006 3:43 pm
- Location: Germany / Berlin
- Contact:
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.
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
Problem Dank Ihrer Hilfe geloest
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.
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.