[Umfrage] Wozu nutzt ihr den IO-Warrior?
Moderator: Guido Körber
-
- Posts: 543
- Joined: Mon Dec 01, 2003 6:09 pm
Ein IO-Warrior 24 mit IR sollte das Problem erschlagen.
Das groesste Problem dabei ist das Erstellen eines bedienbaren und flexiblen Programms zur Generierung von Tastendruecken. Das Programm fuer die c't war nur ein Minimalteil.
In diesem Fall kann man natuerlich den IO-Warrior innerhalb des Media-Players abfragen und hat keine Probleme.[/b]
Das groesste Problem dabei ist das Erstellen eines bedienbaren und flexiblen Programms zur Generierung von Tastendruecken. Das Programm fuer die c't war nur ein Minimalteil.
In diesem Fall kann man natuerlich den IO-Warrior innerhalb des Media-Players abfragen und hat keine Probleme.[/b]
Last edited by Robert Marquardt on Thu Apr 28, 2005 9:00 am, edited 1 time in total.
-
- Posts: 3
- Joined: Tue Feb 22, 2005 4:52 pm
- Location: Stuttgart/Germany
Biometrisches Zuganssystem
Dann will ich auch mal berichten warum ich Nacht für Nacht vor der blöden Monitor sitze und wozu ich den I/O Warrior benutze:
ich erstellte im Rahmen einer Technikerarbeit eine intelligente Personenidentifikation durch biometrischen Fingerabdruck.
Dazu wurde ein Terminal mit Touchscreen unter C++ erstellt und ein Log - und Zeiterfassungssystem sowie die benutzerverwaltung mittels PHP.
Der Systemaufbau:
[Bild wieder vom Server genommer]
Wobei ich sagen muss: Der I/O Warrior war das kleinste "Problem" vom ganzen Projekt.... DANKE an die Profis in dem Forum. Ihr versteht was von eurem Hobby/Arbeit und habt´s mir einfach gemacht...
Eine Schaltung zum Relais welches an den I/O Warrior angeschlossen ist gibts unter: http://www.codemercs.com/phpBB2/viewtopic.php?t=30
---
Signaturen werden überschätzt.....
ich erstellte im Rahmen einer Technikerarbeit eine intelligente Personenidentifikation durch biometrischen Fingerabdruck.
Dazu wurde ein Terminal mit Touchscreen unter C++ erstellt und ein Log - und Zeiterfassungssystem sowie die benutzerverwaltung mittels PHP.
Der Systemaufbau:
[Bild wieder vom Server genommer]
Wobei ich sagen muss: Der I/O Warrior war das kleinste "Problem" vom ganzen Projekt.... DANKE an die Profis in dem Forum. Ihr versteht was von eurem Hobby/Arbeit und habt´s mir einfach gemacht...
Eine Schaltung zum Relais welches an den I/O Warrior angeschlossen ist gibts unter: http://www.codemercs.com/phpBB2/viewtopic.php?t=30
---
Signaturen werden überschätzt.....
Last edited by Manfred Albrecht on Sat Aug 13, 2005 6:02 pm, edited 1 time in total.
Ursprünglich hab ich den IOW 24 ja nur als fernbedienung für den PC einsetzen wollen, dann hab ich die weiteren möglichkeiten entdeckt.
die LED'S geben den high/low pegel der pins an, sind über einen schalter alle abschaltbar, oder einzelnd die dip schalter.
der zweite schalter schaltet das Display ab, dann ist noch die IR diode zu sehen, rechts daneben der zugehörige jumper.
Oben rechts hab ich mir die pins noch mal zum abgreifen und temporären anschliessen von externen geräten rausgelegt.
Oben mittig sind 4 lüsterklemmen für I2c: VCC, GND, SCL und SDA
Das LCD wird von dem PC Netzteil versorgt, da ich, wie in anderem thread erwähnt, probleme mit dem flackern der Hintergrundbeleuchtung hatte. Auf das kontrast Poti hab ich verzichtet, da es eh voll aufgedreht ist.
eigentlich nur eine kleine spielerei, die dafür sorgt, daß ich nicht die ganze zeit eine platine auf dem schreibtisch rumfliegen hab.
als nächstes will ich ein wenig mit I2C rumspielen, temperatur messen mit A/D wandler, vielleicht 'ne kleine wetterstation, oder nur den rechner überwachen, wobei das im moment mit STILCD und MBM5 schon ganz gut angezeigt wird. mal sehen, was für ideen beim spielen noch so kommen...
hat jemand eine Idee, wie man einen reset button realisieren kann? soll den IOW zurücksetzen. einfach nur GND oder VCC per taster unterbrechen? oder gibt es da was, was ich laut USB spezifikation o.ä. beachten muß/soll?
Gruß Martin
die LED'S geben den high/low pegel der pins an, sind über einen schalter alle abschaltbar, oder einzelnd die dip schalter.
der zweite schalter schaltet das Display ab, dann ist noch die IR diode zu sehen, rechts daneben der zugehörige jumper.
Oben rechts hab ich mir die pins noch mal zum abgreifen und temporären anschliessen von externen geräten rausgelegt.
Oben mittig sind 4 lüsterklemmen für I2c: VCC, GND, SCL und SDA
Das LCD wird von dem PC Netzteil versorgt, da ich, wie in anderem thread erwähnt, probleme mit dem flackern der Hintergrundbeleuchtung hatte. Auf das kontrast Poti hab ich verzichtet, da es eh voll aufgedreht ist.
eigentlich nur eine kleine spielerei, die dafür sorgt, daß ich nicht die ganze zeit eine platine auf dem schreibtisch rumfliegen hab.
als nächstes will ich ein wenig mit I2C rumspielen, temperatur messen mit A/D wandler, vielleicht 'ne kleine wetterstation, oder nur den rechner überwachen, wobei das im moment mit STILCD und MBM5 schon ganz gut angezeigt wird. mal sehen, was für ideen beim spielen noch so kommen...
hat jemand eine Idee, wie man einen reset button realisieren kann? soll den IOW zurücksetzen. einfach nur GND oder VCC per taster unterbrechen? oder gibt es da was, was ich laut USB spezifikation o.ä. beachten muß/soll?
Gruß Martin
-
- Site Admin
- Posts: 2856
- Joined: Tue Nov 25, 2003 10:25 pm
- Location: Germany/Berlin
- Contact:
Unter bestimmten Umständen kann es schon mal sein das der IOW einen Reset braucht. Zumindest in der Entwicklung recht praktisch.Wozu sollte der IO-Warrior einen manuellen Reset benötigen?
Hier ein Beispiel was ich mal in einem anderen Thread gepostet habe.
Natürlich könnte man nun mit einem IOWKitWrite bestimmt wieder alle Ports in einen anderen Zustand bringen (nicht probiert), allerdings nicht wenn "VB6 beim IOWKitRead hängt".Ein IOWKitRead führt sogar dazu das man IowKitReadImmediate nicht mehr richtig benutzen kann.
(Form mit 2 Command Buttons)
Code:
Option Explicit
Private Declare Sub CopyMemory Lib "kernel32" Alias _
"RtlMoveMemory" (Destination As Any, Source As Any, _
ByVal Length As Long)
Dim iowHandle As Long
Private Sub Command1_Click()
Dim lng_res As Long
Dim lng_buffer As Long
Dim i As Integer
Dim by_arr(3) As Byte
lng_res = IowKitReadImmediate(iowHandle, lng_buffer)
CopyMemory by_arr(0), lng_buffer, 4&
Debug.Print
For i = 0 To 3: Debug.Print CStr(i) & ": " & Hex(by_arr(i)): Next i
Debug.Print lng_res,
If lng_res <> 0 Then Debug.Print "Neue Daten !!"; Else Debug.Print ; "Keine neuen Daten"
End Sub
Private Sub Command2_Click()
Dim res As Long
Dim data(4)
' Perform a read
' Don't forget that we read report ID too
' So we have 5 bytes buffer
' Turn off all LEDs
' Unmask all input lines
' first byte is report ID
data(0) = &O0
' first report byte
data(1) = &HFF
' second report byte
data(2) = &HFF
' third report byte
data(3) = &HFF
' fourth report byte
data(4) = &HFF
' Write to IO-Warrior
Dim nWritten As Long
nWritten = IowKitWrite(iowHandle, 0, data(0), 5)
' Handle error
If (nWritten <> 5) Then
' You can use GetLastError() to get error code
MsgBox "Can not set input mask!", 0, "Error"
Exit Sub
End If
' After this write, all input lines are unmasked
' Set caption
' Read from IO-Warrior
res = IowKitRead(iowHandle, 0, data(0), 5)
' Check results
If (res <> 5) Then
Debug.Print "error"
Else
' Convert and set data
Debug.Print Hex$(data(1))
Debug.Print Hex$(data(2))
Debug.Print Hex$(data(3))
Debug.Print Hex$(data(4))
Debug.Print "Read from IOW complete"
End If
End Sub
Private Sub Form_Load()
iowHandle = IowKitOpenDevice()
End Sub
Code ausführen und
- Command2-Klick für IOWKitRead.(Daten sollten nun neu sein bei Tastendruck)
- Command1- Klick für IowKitReadImmediate.
[...] Die ByRef übergebene Variable lng_buffer hat den Wert 0.
Nun kann man sich an dem kleinen Taster neben dem Chip richtig verausgaben - ein IowKitReadImmediate liefert immer das obige Ergebnis. IOWKitRead bleibt hängen, weil anscheinend doch keine neuen Daten anliegen.
Desweiteren habe ich noch ein recht "merkwürdiges" Problem mit LM75-Tempsensoren nach dem Starten des Rechners.
Nach dem Booten des Rechners (Win2000) und dem Starten des Programmes, wird bei einem der drei LM75- Chips ein Temperaturwert nahe der 0°C ausgelesen (nicht nur einmal sondern die ganze Zeit).
Wenn ich das USB-Kabel kurz ziehe und das Programm neu starte wird bei allen LM75 der richtige Wert ausgelesen.
Woran das liegt weiss ich nicht, bin dem Problem noch nicht weiter zu Leibe gerückt. Am Code liegts höchstwahrscheinlich nicht.
Gruß FlitzPin
-
- Posts: 543
- Joined: Mon Dec 01, 2003 6:09 pm
Der IO-Warrior braucht keinen Reset, weil er sich nicht aufhaengt.
Wer IowKitRead und IowKitReadImmediate auf die IO-Pins mischt ist selber schuld.
IowKitRead sollte man nur aufrufen wenn man sicher ist das ein Report zum lesen da ist. Das ist z. B. der Fall beim Schreiben auf den IIC, da dort ein ACK-Report generiert wird.
IowKitReadImmediate startet einen Thread, der immer ein ReadFileEx auf den File Handle fuer die IO-Pins warten hat.
Wer da mit IowKitRead dazwischenfunkt kann natuerlich alles durcheinanderbringen.
Es ist ja auch ein sinnloses Unterfangen, da IowKitReadImmediate bereits die gewuenschten Daten liefert.
Bei den LM75-Temperatursensoren wuerde ich eine falsche Initialisierung durch das Programm vermuten. Bitte in einem eigenen Thread die Initialisierung posten oder direkt an mich senden marquardt at codemercs dot com
Wer IowKitRead und IowKitReadImmediate auf die IO-Pins mischt ist selber schuld.
IowKitRead sollte man nur aufrufen wenn man sicher ist das ein Report zum lesen da ist. Das ist z. B. der Fall beim Schreiben auf den IIC, da dort ein ACK-Report generiert wird.
IowKitReadImmediate startet einen Thread, der immer ein ReadFileEx auf den File Handle fuer die IO-Pins warten hat.
Wer da mit IowKitRead dazwischenfunkt kann natuerlich alles durcheinanderbringen.
Es ist ja auch ein sinnloses Unterfangen, da IowKitReadImmediate bereits die gewuenschten Daten liefert.
Bei den LM75-Temperatursensoren wuerde ich eine falsche Initialisierung durch das Programm vermuten. Bitte in einem eigenen Thread die Initialisierung posten oder direkt an mich senden marquardt at codemercs dot com
-
- Site Admin
- Posts: 2856
- Joined: Tue Nov 25, 2003 10:25 pm
- Location: Germany/Berlin
- Contact:
Also auf einen bereits wartenden iowkitRead sollte man nicht noch einen iowkitReadImmediate drauffallen lassen, das gibt wie Robert schon geschrieben hat Probleme.
Was den LM75 betrifft so würde ich eher auf ein Problem mit der Initalisierung oder mit der Hardware tippen. Der IO-Warrior interessiert sich eigentlich nicht für den Inhalt der IIC Daten, sondern reicht die transparent durch.
Eventuell ist die Stromversorgung der LM75 nicht richtig ausgelegt. Wo ist denn der Siebkondensator für den Chip?
Was den LM75 betrifft so würde ich eher auf ein Problem mit der Initalisierung oder mit der Hardware tippen. Der IO-Warrior interessiert sich eigentlich nicht für den Inhalt der IIC Daten, sondern reicht die transparent durch.
Eventuell ist die Stromversorgung der LM75 nicht richtig ausgelegt. Wo ist denn der Siebkondensator für den Chip?
@Robert
Schon klar das das Beispiel keinen praktischen Wert hat. Es ist angefallen als ich mit IOWKitRead und IowKitReadImmediate rumexperimentiert habe. Damals habe ich mir auch einen Resettaster gewünscht.
Den LM75-Problemthread werde ich eröffnen sobald ich mir die Sache näher angeschaut habe.
Damit nicht alles OT ist was ich hier poste, schreibe ich noch schnell was ich mit dem IOW mache ;-)
Der IOW hängt bei meinem Aquarium. Mit dem LM75-Sensoren bestimme ich die Temperatur von Becken, Quarantänebecken und Raum. Leider sind die Werte mit dem LM75 ungenau.
Desweiteren steuert der IOW einen Schrittmotor an dem eine Webcam befestigt ist, und einige superhelle LEDs, die für nächtliche Beleuchtung sorgen.
Über einen (kurzen) Tastendruck lassen sich verschiedene Informationen auf einem 2*16 LCD anzeigen (Temperatur, Webcammodul geladen?,...). Über einen langen Tastendruck lassen sich bei einigen Info-Anzeigen Aktionen ausführen (z.B. Webserver starten, Webcammodul laden,...)
Primär habe ich mir den IOW jedoch geholt weil ich kein Platz für eine Eisenbahn habe :lol:
Gruß FlitzPin
Schon klar das das Beispiel keinen praktischen Wert hat. Es ist angefallen als ich mit IOWKitRead und IowKitReadImmediate rumexperimentiert habe. Damals habe ich mir auch einen Resettaster gewünscht.
Den LM75-Problemthread werde ich eröffnen sobald ich mir die Sache näher angeschaut habe.
Damit nicht alles OT ist was ich hier poste, schreibe ich noch schnell was ich mit dem IOW mache ;-)
Der IOW hängt bei meinem Aquarium. Mit dem LM75-Sensoren bestimme ich die Temperatur von Becken, Quarantänebecken und Raum. Leider sind die Werte mit dem LM75 ungenau.
Desweiteren steuert der IOW einen Schrittmotor an dem eine Webcam befestigt ist, und einige superhelle LEDs, die für nächtliche Beleuchtung sorgen.
Über einen (kurzen) Tastendruck lassen sich verschiedene Informationen auf einem 2*16 LCD anzeigen (Temperatur, Webcammodul geladen?,...). Über einen langen Tastendruck lassen sich bei einigen Info-Anzeigen Aktionen ausführen (z.B. Webserver starten, Webcammodul laden,...)
Primär habe ich mir den IOW jedoch geholt weil ich kein Platz für eine Eisenbahn habe :lol:
Gruß FlitzPin
das mag sein, aber es kann trotzdem einfacher sein, einmal den stecker zu ziehen, als die gemachten einstellungen zurückzusetzen. und es wär natürlich toll, wenn das über ein drücken eines tasters ginge. gerade während der entwiklung von programmen kann es schon mal passieren, daß man sich das so wünscht. zur not muß ich mal schauen, ob ich 'nen taster mit 4 anschlüssen finde, aber es hätte ja sein können, daß es reicht, dem IOW kurzfristig VCC wegzunehmen oder so.Der IO-Warrior braucht keinen Reset, weil er sich nicht aufhaengt.
-
- Site Admin
- Posts: 2856
- Joined: Tue Nov 25, 2003 10:25 pm
- Location: Germany/Berlin
- Contact:
Taster mit 4 Anschlüssen ist ganz schlecht. Die USB Stecker haben nicht umsonst vorauseilende Kontakte für Vcc und Gnd. Damit wird sichergestellt, dass die Versorgungsspannung vor den Signalen kontaktiert und kein Latchup entstehen kann.
Die einfachste Lösung ist den Pull-Up Widerstand an D- abzuhängen, das ist genauso wie ein Disconnect.
Natürlich die 5V bzw. den Ausgang vom IOW24 abhängen, nicht die D- Leitung über ein Kabel zum Taster führen.
Die einfachste Lösung ist den Pull-Up Widerstand an D- abzuhängen, das ist genauso wie ein Disconnect.
Natürlich die 5V bzw. den Ausgang vom IOW24 abhängen, nicht die D- Leitung über ein Kabel zum Taster führen.
-
- Posts: 2
- Joined: Sat May 21, 2005 2:56 pm
hai
ich benutze iow24 fur fernbedienung per ir und hab ne 4x16 lcd angeschlossen womit ich uhrzeit cpulast usw anzeigen lassen .
das entsprechende programm habe ich unter vb6 entwichkelt.
wer es haben will kann mich e-mailen unter sdm@bossmail.de
ich benutze iow24 fur fernbedienung per ir und hab ne 4x16 lcd angeschlossen womit ich uhrzeit cpulast usw anzeigen lassen .
das entsprechende programm habe ich unter vb6 entwichkelt.
wer es haben will kann mich e-mailen unter sdm@bossmail.de
-
- Posts: 13
- Joined: Sun Sep 26, 2004 7:57 pm
-
- Posts: 543
- Joined: Mon Dec 01, 2003 6:09 pm
Na beim Videotextdecoder wuerde ich mal vermuten das der schneller Daten senden will als der IO-Warrior transportieren kann.
Aber Spass macht es wirklich :-)
Wir koennen ja mal gemeinsam hier eine Liste von IIC- und SPI-Chips zusammenstellen, die sinnvollerweise mit dem IO-Wariror verwendet werden koennen.
Aber Spass macht es wirklich :-)
Wir koennen ja mal gemeinsam hier eine Liste von IIC- und SPI-Chips zusammenstellen, die sinnvollerweise mit dem IO-Wariror verwendet werden koennen.