Gibt's von der Software irgendwie 'ne Demo oder sowas?Susan20 hat geschrieben:Nee, leider ist keine Doku bei den DLLs dabei. Ich glaube, Olympus will, dass man die Olympus-Abspielsoftware kauft und nicht, dass man sich was eigenes schreibt.
Fußschalter
ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
@Edel: Ich denke, dass die im C-Programm verwendeten Konstanten wie z.B. WM_DVR_PUSHCHANGE in der DLL festgelegt sind. Leider durchblicke ich den C-Code nicht, warum es einen Window-Callback gibt. Wenn ich zu Testzwecken einfach nur eine Meldung haben will wie "Rechte Fußtaste wurde gedrückt", dann brauche ich doch kein Fenster!?
Der Treiber muss die Nachricht irgendwo hinschicken. Kann natuerlich
auch sein das du da einen Befehl hast um den Status manuell abzufragen.
Solange du aber nicht weisst welche Werte die Konstanten haben, sieht
das ganze recht duester aus. Was du brauchst ist ein Entweder nen SDK
oder vorhandene Software selber Debuggen z.B. mit Olly
http://www.ollydbg.de/
auch sein das du da einen Befehl hast um den Status manuell abzufragen.
Solange du aber nicht weisst welche Werte die Konstanten haben, sieht
das ganze recht duester aus. Was du brauchst ist ein Entweder nen SDK
oder vorhandene Software selber Debuggen z.B. mit Olly
http://www.ollydbg.de/
@edel: Ich habe es geschafft, und zwar ohne ollydbg. Ich habe einfach Deine Tipps "Callback für Fenster" und "Header" aufgeschnappt. Aus dem Link auf das C-Programm (Danke, bobobo!) habe ich die Paramter rausgekriegt wie pointer auf integer-Var und Windows-Handle. Und dann habe ich über die EventwParam()-Funktion die Konstanten für die einzelnen Aktionen in Erfahrung gebracht und als Nebenprodukt gab es dann auch den Wert für den Event.
Nochmal vielen Dank an alle für die Hilfe. Hier ist der Code (klar, damit kann jetzt wahrscheinlich keiner etwas anfangen, trotzdem .... )
Nochmal vielen Dank an alle für die Hilfe. Hier ist der Code (klar, damit kann jetzt wahrscheinlich keiner etwas anfangen, trotzdem .... )
Code: Alles auswählen
OpenLibrary(0, "drv_foot_pedal.dll")
inf = 0
erg = CallFunction(0, "GetFootSWInfo", @inf)
If erg = 7
MessageRequester("Info", "Kein Fußschalter angeschlossen!")
Goto ende
EndIf
#window = 0
OpenWindow(#window, 317, 319, 500, 200, "Fußschalter", #PB_Window_SystemMenu); | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered )
CreateGadgetList(WindowID(#window))
TextGadget(1, 50, 50, 200, 30, "Auf geht's!")
hdl.l = WindowID(#window)
CallFunction(0, "OpenUSBFootSW", hdl, 0)
#PEDAL_EVENT = 1525
#RIGHT_ON = 2
#RIGHT_OFF = 32770
#LEFT_ON = 4
#LEFT_OFF = 32772
#MIDDLE_ON = 8
#MIDDLE_OFF = 32776
Repeat
event = WindowEvent(); WaitWindowEvent()
If event = #PEDAL_EVENT
Select EventwParam()
Case #RIGHT_ON
SetGadgetText(1,"Rechter Fußtaster gedrückt!")
Case #RIGHT_OFF
SetGadgetText(1,"Rechter Fußtaster frei!")
.
.
.
EndSelect
EndIf
Until event = #PB_Event_CloseWindow
ende:
@Susan20: Hier die obligatorische Klugscheisser-Antwort auf Deinen Code:
* Goto ist böse! Nicht verwenden!
* OpenLibrary() hat einen Rückgabewert, den man auswerten sollte.
* Wenn OpenLibrary(), dann auch CloseLibrary()
* Wenn es denn unbedingt WindowEvent() sein muss, dann auch noch ein
Delay() einbauen, weil es Dir sonst Deine CPU verbrutzelt und die anderen
Applilationen keine Luft mehr bekommen.
* Zu OpenUSBFootSW gibt es bestimmt auch noch ein entsprechendes Close*, oder?
Grüße ... Kiffi (ja, ich weiß, dass der Code nur für Dich ist, aber je mehr
Du es verinnerlichst, desto besser )
* Goto ist böse! Nicht verwenden!
* OpenLibrary() hat einen Rückgabewert, den man auswerten sollte.
* Wenn OpenLibrary(), dann auch CloseLibrary()
* Wenn es denn unbedingt WindowEvent() sein muss, dann auch noch ein
Delay() einbauen, weil es Dir sonst Deine CPU verbrutzelt und die anderen
Applilationen keine Luft mehr bekommen.
* Zu OpenUSBFootSW gibt es bestimmt auch noch ein entsprechendes Close*, oder?
Grüße ... Kiffi (ja, ich weiß, dass der Code nur für Dich ist, aber je mehr
Du es verinnerlichst, desto besser )
Hygge
- Falko
- Admin
- Beiträge: 3531
- Registriert: 29.08.2004 11:27
- Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit) - Kontaktdaten:
Habe die Diskussion über Goto abgeschnitten.
Da bei unüberlegten Programmsprüngen unerklärliche Endlosschleifen als
auch Programmabbrüche entstehen könnten.
Also bitte hier keine weitere Goto-Diskussion mehr, damit das Thema von
Susan20 nicht verfehlt wird. Den Anhang habe ich im Mülleimer abgezwickt.
Besser ausgedrückt: Goto sollte man möglichst vermeiden.Kiffi hat geschrieben:* Goto ist böse! Nicht verwenden!
Da bei unüberlegten Programmsprüngen unerklärliche Endlosschleifen als
auch Programmabbrüche entstehen könnten.
Also bitte hier keine weitere Goto-Diskussion mehr, damit das Thema von
Susan20 nicht verfehlt wird. Den Anhang habe ich im Mülleimer abgezwickt.