Fußschalter

Hardware- und Elektronikbasteleien, Ansteuerung von Schnittstellen und Peripherie.
Fragen zu "Consumer"-Problemen kommen in Offtopic.
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

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. :cry:
Gibt's von der Software irgendwie 'ne Demo oder sowas?
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Du muesstest ja nur ein Callback fuer das Fenster anlegen und dort
WM_DVR_PUSHCHANGE abfangen. Aber dafuer benoetigst du einen
Header oder Doku usw.
Susan20
Beiträge: 54
Registriert: 28.02.2008 22:00

Beitrag von Susan20 »

@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!?
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

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/
Susan20
Beiträge: 54
Registriert: 28.02.2008 22:00

Beitrag von Susan20 »

Danke, edel, für den Tipp. Leider schaffe ich es heute nicht mehr, werde es aber morgen ausprobieren! :)
Susan20
Beiträge: 54
Registriert: 28.02.2008 22:00

Beitrag von Susan20 »

@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 .... )

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:
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

@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 ;-))
Hygge
Susan20
Beiträge: 54
Registriert: 28.02.2008 22:00

Beitrag von Susan20 »

@Kiffi: Bin für jede Verbesserung dankbar. Ich will ja schließlich, dass es rund läuft. :)
Benutzeravatar
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.0
Kontaktdaten:

Beitrag von Falko »

Habe die Diskussion über Goto abgeschnitten.
Kiffi hat geschrieben:* Goto ist böse! Nicht verwenden!
Besser ausgedrückt: Goto sollte man möglichst vermeiden.
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.
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Antworten