Hallo,
ich bin recht unerfahren im Programmieren. Mich interessiert im Moment eher die Hardware-Seite. (an die Software-Seite werd ich mich evtl später mal raqntrauen...)
Ich habe nun folgendes Problem:
Ich habe das Starter-Kit mit dem IO-Warrior24. Daran habe ich ein LCD-Display hänge was auch wunderbar läuft (ich hab mich allerdings noch nicht endgültig für eine Software entschieden).
Nun bin ich gerade dabei ein Plexiglasgehäuse für Display und Platine zu bauen. Und das möchte ich gerne mit LEDs beleuchten. Da diese Beleuchtung zB beim Film-Schauen stört würde ich sie gerne aus- und einschalten können. Und am besten vom Rechner aus
Ich hab mir überlegt, dass ich die LED aus dem Starterkit duch ne Schaltung ersetze, die mir dann die Beleuchtung an und ausmacht. Nur brauch ich dafür nen kleines Programm, was mir die LED ein- und ausschaltet. (am einfachsten wären wohl 2 exe eine für ein und eine für aus)
Ich hab auch im SDK schon ein bischen rumgeschaut, komme damit aber nicht so richtig klar. Was ich rausgefunden hab, ist dass mit dem im Delphi-beispiel vorhandenen SimpleHIDWrite.exe folgendes schicken muss um die LED ein- und auszuschalten:
Oben "Plain I/O"
und dann als ReportID "00"
und als Daten: "F7 FF" zum einschalten
und "FF FF" zum ausschalten.
Die LCD-Anzeige bleib davon unangetastet (soweit ich das sehen kann)
Blos wie soll ich das in ein Programm verpacken?
Also einfach nur jeweil das entsprechende Paket an den IOWarrior schicken und fertig. (Dabei das Display so lassen wie es ist , also beim beenden nicht alles abschalten und so...)
Wäre jemand mit Ahnung so nett und schreibt mir die beiden kleinen exe? Oder kann mir weiterhelfen, wie ich das selbst hinbekommen kann?
mfg
oixio
Wer kann mir 2 kleine exe schreiben?
Moderator: Guido Körber
-
- Posts: 543
- Joined: Mon Dec 01, 2003 6:09 pm
Da bringst du mich auf eine interessante Idee.
Wann ich die verwirklichen kann steht allerdings in den Sternen.
Die Idee ist ein simples Skriptprogramm auf SimpleHIDWrite-Basis.
Die Skriptdatei hat im Kopf das Geraet auf das geschrieben werden soll (VID, PID, Seriennummer optional).
Es folgen die zu schreibenden Reports und optional eine Verzoegerung zwischen den Reports.
Wann ich die verwirklichen kann steht allerdings in den Sternen.
Die Idee ist ein simples Skriptprogramm auf SimpleHIDWrite-Basis.
Die Skriptdatei hat im Kopf das Geraet auf das geschrieben werden soll (VID, PID, Seriennummer optional).
Es folgen die zu schreibenden Reports und optional eine Verzoegerung zwischen den Reports.
Das wäre echt genial. Ich werd mal sehen ob ich nicht doch schaff das SimpleHIDWrite auf diesen einan Aufruf "abzuspecken". Oder ist es sinvoller das komplett neu zu schreiben? (ist ja eingentlich nur der Write-Aufruf an die IOKit.dll, oder?)
oixio
Edit: Ich bastel gerade nen bischen rum mit dem VB-Code, der von der c't mal geschrieben worden war. Da ich schon nen bischen mit vbs rumgespielt hab, liegt mir VB näher als Delphi. Funktioniert auch schon ganz gut, muss damit aber wohl noch nen bischen experimentieren
oixio
Edit: Ich bastel gerade nen bischen rum mit dem VB-Code, der von der c't mal geschrieben worden war. Da ich schon nen bischen mit vbs rumgespielt hab, liegt mir VB näher als Delphi. Funktioniert auch schon ganz gut, muss damit aber wohl noch nen bischen experimentieren
-
- Posts: 543
- Joined: Mon Dec 01, 2003 6:09 pm
Jo, dass soll zur Laufzeit passieren. Ich hab das mit SimpleHIDWrite auch mal getestet, während ein Winamp-Plugin was auf dem LCD ausgegeben hat, das hat wunderbar funktioniert.
@supachris:
Danke für dein Angebot, aber ich hab jetzt mit nem Kumpel schon in VB5 was gebastelt (mit der IOKit.dll) - ich konnt einfach nicht warten......
Hab das jetzt in einer Exe die entwerder "on" oder "off" als Parameter übergeben bekommt (gross-kleinschreibung egal, und auch keine Fehlerbehandlung und so) und dementsprechend die LED an oder ausschaltet. Bin jetzt nur noch am schauen, wie ich ein 2. Icon mit reinkompilieren kann, damit ich mich bei ner Verknüpfung auf das andere Icon beziehen kann (1 x Lampe an & 1 x Lampe aus ).
Und die gerade ausgeführte Aktion wird noch als kleines Dialog-Fenster angezeigt (für xx ms, schließt sich automatisch).
Ich kann ja den Code hier mal posten, die Deklaration für die IOKit.dll hab ich von der c't übernommen und lass die hier mal weg:
der ist jetzt natürlich bestimmt nicht sauber programmiert, aber für mich funktioniert es erstmal, zumindest so lange bis ich was besseres finde/mache.
Achja, im moment ist es so, alle Parameter bzw. keine Parameter die nicht mit "On" übereinstimmen schalten die LED ab.
Anregungen bzw. Verbesserungen werden natürlich gerne zur Kenntnis bekommen.
mfg
oixio
@supachris:
Danke für dein Angebot, aber ich hab jetzt mit nem Kumpel schon in VB5 was gebastelt (mit der IOKit.dll) - ich konnt einfach nicht warten......
Hab das jetzt in einer Exe die entwerder "on" oder "off" als Parameter übergeben bekommt (gross-kleinschreibung egal, und auch keine Fehlerbehandlung und so) und dementsprechend die LED an oder ausschaltet. Bin jetzt nur noch am schauen, wie ich ein 2. Icon mit reinkompilieren kann, damit ich mich bei ner Verknüpfung auf das andere Icon beziehen kann (1 x Lampe an & 1 x Lampe aus ).
Und die gerade ausgeführte Aktion wird noch als kleines Dialog-Fenster angezeigt (für xx ms, schließt sich automatisch).
Ich kann ja den Code hier mal posten, die Deklaration für die IOKit.dll hab ich von der c't übernommen und lass die hier mal weg:
Code: Select all
Option Explicit
' IO-Warrior handle
Dim iowHandle As Long
' Data buffer for writing to IOWarrior
Dim data(3) As Byte
Dim back As Long
Dim param As String
Private Sub Form_Load()
' Befehlsparameter auslesen
param = Command$
' Gross-Kleinschreibung nicht beachten
param = UCase$(param)
' Open device
iowHandle = IowKitOpenDevice()
' Fail if can't open
If (iowHandle = 0) Then
' Exit from program
MsgBox "Can not open device!", 0, "Error"
End
End If
data(0) = 0
If param = "ON" Then
Text.Caption = "LED On"
data(1) = 247
Else 'If param = "OFF" Then
Text.Caption = "LED Off"
data(1) = 255 '247
End If
data(2) = 255
back = IowKitWrite(iowHandle, 0, data(0), 3)
End Sub
Private Sub Form_Unload(Cancel As Integer)
' Close IO-Warrior device
IowKitCloseDevice (iowHandle)
End Sub
Private Sub Timer1_Timer()
' Programm gleich wieder beenden, nach kurzer Pause, der Timer steht auf 1000 ms oder so, ich hab mich noch nicht entschieden
End
End Sub
Achja, im moment ist es so, alle Parameter bzw. keine Parameter die nicht mit "On" übereinstimmen schalten die LED ab.
Anregungen bzw. Verbesserungen werden natürlich gerne zur Kenntnis bekommen.
mfg
oixio
Hi. Hier die Anregungen:
- Statt "End" im Timer-Ereignis "Unload Me", damit das Query_Unload-Ereignis eintritt.
- Den Parameter in einer select Case Anweisung auswerten
- Statt "End" im Timer-Ereignis "Unload Me", damit das Query_Unload-Ereignis eintritt.
- Den Parameter in einer select Case Anweisung auswerten
Code: Select all
Select case param
case is = "LED On"
.
.
case is = "LED Off"
.
.
Case Else
.
.
end select