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
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"

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