Wer kann mir 2 kleine exe schreiben?

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
oixio
Posts: 10
Joined: Sun Mar 20, 2005 8:12 pm

Wer kann mir 2 kleine exe schreiben?

Post by oixio »

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 :wink:

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
Robert Marquardt
Posts: 543
Joined: Mon Dec 01, 2003 6:09 pm

Post by Robert Marquardt »

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.
oixio
Posts: 10
Joined: Sun Mar 20, 2005 8:12 pm

Post by oixio »

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
Robert Marquardt
Posts: 543
Joined: Mon Dec 01, 2003 6:09 pm

Post by Robert Marquardt »

Das ist sinnvoller neu zu schreiben. Das soll ja ein Programm ohne sichtbares Fenster werden.
Bei den Delphi-Programmen wird die IOWKIT.DLL ueberhaupt nicht benutzt.
Da tickt meine HID-Komponente drin, die komplizierter ist, aber dafuer generell fuer alle HID-Geraete einsetzbar ist.
supachris
Posts: 124
Joined: Tue Mar 16, 2004 12:30 am
Location: Dresden

Post by supachris »

Willst du das zur Laufzeit des Programmes machen, was das Display bedient? Weil das klappt bestimmt nicht, oder? Man kann den IOW sicherlich bloß in einem Programm öffnen.
Falls doch kann ich dir 2 kleine Programme schreiben, die ein bzw. aus schalten. Ist ne Sache von 10 min.
oixio
Posts: 10
Joined: Sun Mar 20, 2005 8:12 pm

Post by oixio »

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...... :D
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 :wink: ).
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
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
FlitzPin
Posts: 24
Joined: Sun Apr 18, 2004 3:47 pm

Post by FlitzPin »

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

Code: Select all

Select case param 
case is = "LED On"
   .
   .
case is = "LED Off"
    .
    .
Case Else
   .
   .
end select
Post Reply