Parallel-Port mit Freeware-Version steuern

Anfängerfragen zum Programmieren mit PureBasic.
Sven
Beiträge: 374
Registriert: 23.09.2004 12:01

Beitrag 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
blafasel
Beiträge: 10
Registriert: 17.08.2006 09:25

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

Beitrag 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
a²+b²=mc²
blafasel
Beiträge: 10
Registriert: 17.08.2006 09:25

Beitrag 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
Benutzeravatar
Falko
Admin
Beiträge: 3535
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:

Beitrag von Falko »

Eine gute Hilfe zu Anfang ist auch der VisualDesigner, der ja
in PB vorhanden ist 8)

Grüße, Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

der nützt ja aber auch erst, wenn man zumindest weiß wie's manuell geht. (Manuel:"danke mir geht's gut" :lol: )
my pb stuff..
Bild..jedenfalls war das mal so.
blafasel
Beiträge: 10
Registriert: 17.08.2006 09:25

Beitrag 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
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
blafasel
Beiträge: 10
Registriert: 17.08.2006 09:25

Beitrag 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?
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

natürlich ist dass witzlos. die demo soll ja nicht amüsieren.
my pb stuff..
Bild..jedenfalls war das mal so.
Antworten