Seite 2 von 3

Verfasst: 18.08.2006 10:22
von Sven

Code: Alles auswählen

Global *inp.l, *out.l

#iodll$ = "INPOUT32.DLL"
#dreg = 0  ;Offset Datenregister
#sreg = 1  ;Offset Statusregister
#creg = 2  ;Offset Controlregister
#addr1 = $378  ;Adresse LPT1
#addr2 = $278  ;Adresse LPT2
#addr3 = $3E8  ;Adresse LPT3, manchmal auch anders

Procedure SetParData(reg.l, outwert.l)  ;Daten an Port senden
  If *out <> 0
    CallFunctionFast(*out, reg, outwert)  ;Senden an Port 
  EndIf
EndProcedure

Procedure.l GetParData(reg.l)  ;Daten von Port holen
  If *inp <> 0
    inwert.l = CallFunctionFast(*inp, reg)  ;Lesen von Port 
  Else
    inwert.l = #False
  EndIf
  ProcedureReturn inwert
EndProcedure

  If OpenLibrary(#dIDinpout, ppfd.s + #iodll$) 
    *out = GetFunction(#dIDinpout, "Out32") 
    *inp = GetFunction(#dIDinpout, "Inp32") 
    If Not(*out And *inp)
      CloseLibrary(#dIDinpout) 
      MessageRequester("Port Error", "Function not found: " + #iodll$, #PB_MessageRequester_Ok) 
    EndIf 
  Else
    MessageRequester("Port Error", "File not found: " + #iodll$, #PB_MessageRequester_Ok)  
  EndIf 

  SetParData(#addr1 + #dreg, wert)  ;Daten setzen
  wert.l = GetParData(#addr1 + #dreg)  ;Daten lesen
Da kannst Du Dir was draus basteln. Die DLL muss im angegebenen Pfad liegen. Mit ppfd.s = GetPathPart(ProgramFilename()) ist das der Programmpfad.

Das Control-Bit 5 muss auf low gesetzt sein, sonst wird der Port als Eingang verwendet und reagiert nicht.

Viel Spass

Sven

Verfasst: 20.08.2006 12:43
von blafasel
Ok, alles klar. Dankeschön

Jetzt hab ich aber nochmal ne andere Sache. Ich glaube dafür denke ich zu kompliziert. Ich bekomme es jedenfalls nicht hin, dass sich ein MessageRequester öffnet, wenn ich auf ein ButtonGadget klicke.
Könnte bitte mal jemand ganz kurz helfen? Ich hab 2 1/2 Stunden probiert und gemacht, aber ich habs leider nicht hinbekommen

Verfasst: 20.08.2006 12:54
von Kiffi
> Ich hab 2 1/2 Stunden probiert und gemacht, aber ich habs leider nicht
> hinbekommen

wenn man's weiss, dann ist es 'ne Sache von 2 Minuten ;-)

Code: Alles auswählen

Enumeration
  #frmMain
  #cmdButton
EndEnumeration

If OpenWindow(#frmMain, #PB_Ignore, #PB_Ignore, 200 , 100, "TestFenster", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
  If CreateGadgetList(WindowID(#frmMain))
    ButtonGadget(#cmdButton, 5, 5, 190, 90, "Drück mich")
    
    Repeat
      
      WaitWindowEvent = WaitWindowEvent()
      EventGadget     = EventGadget()
      
      Select WaitWindowEvent
        
        Case #PB_Event_Gadget
          Select EventGadget
            
            Case #cmdButton
              MessageRequester("TestFenster", "Der Knopp wurde gedrückt")
            
          EndSelect
          
        Case #PB_Event_CloseWindow
          Quit = 1
          
      EndSelect
      
    Until Quit = 1
    
  EndIf
  
EndIf
Versuch, Dich mal in diesen Code einzuarbeiten. Wenn irgendetwas nicht
klar sein sollte, dann solltest Du zuerst in der PB-Hilfe nachschauen. Wenn
Du aus der Hilfe auch nicht schlau werden solltest, dann kannst Du gerne
hier nachfragen.

Grüße ... Kiffi

Verfasst: 20.08.2006 14:11
von blafasel
Ja das ja klar, ich möcht euch ja nicht unnütz strapazieren. An Eigeninitiative mangelts nicht, aber so ganz einfach ist es ja denn doch nicht.

Danke für die Antworten
Grüße

Verfasst: 20.08.2006 19:02
von Falko
Eine gute Hilfe zu Anfang ist auch der VisualDesigner, der ja
in PB vorhanden ist 8)

Grüße, Falko

Verfasst: 20.08.2006 22:20
von #NULL
der nützt ja aber auch erst, wenn man zumindest weiß wie's manuell geht. (Manuel:"danke mir geht's gut" :lol: )

Verfasst: 23.08.2006 11:11
von blafasel
Danke für eure Tipps. Ich habs geschafft, mein erstes kleines Programm zu schreiben. Es ist eine Verkehrsleiteinrichtung, jedenfalls theoretisch. Die elektronischen Komponenten dafür löte ich noch zusammen.

Meine erste exe-Datei funktioniert fehlerfrei. Aber was ist das für ein shize Fenster im Hintergrund. So eine Console, irgendwas hat das mit dem Debugger zu tun. Ich hab mich durch die Hilfe-Datei gewühlt, aber nix passendes gefunden. Und beim Rumprobieren ist das Ding auch nicht verschwunden. Kann mir jemand sagen was das soll und wie ich das Fenster weg bekomme?

Grüße

Verfasst: 23.08.2006 11:22
von ts-soft
Wenn Du die Demo hast, wirste mit dem Fenster leben müssen, ansonsten sollte es nur beim Compilieren in der IDE auftauchen, wenn Enabled.

Verfasst: 23.08.2006 14:02
von blafasel
ts-soft hat geschrieben:Wenn Du die Demo hast, wirste mit dem Fenster leben müssen
Das ist ja witzlos. Und was hat das für'n Grund? Um die Vollversion schmackhafter zu machen, oder wie muss man das verstehen?

Verfasst: 23.08.2006 14:05
von #NULL
natürlich ist dass witzlos. die demo soll ja nicht amüsieren.