Zugriff auf LPT Port

Für allgemeine Fragen zur Programmierung mit PureBasic.
estate
Beiträge: 110
Registriert: 10.09.2004 08:53
Wohnort: nähe Graz
Kontaktdaten:

Zugriff auf LPT Port

Beitrag von estate »

Eine Moddingseite hat mich auf die Idee gebracht mit Hilfe eines ICs Leds zu steuern. Leider konnte ich das bisher nur mit Vorgefertigten Programmen.
Ich will das aber mit Hilfe von Purebasic selbst regeln.
Leider habe ich mit Assembler nichts zu tun.


Damit ein Led leuchtet, muss jeweils ein Kabel am LPT port unter Strom stehen. Der IC schaltet dadurch einen eigenen Stromkreis fürs Led.

Danke im Vorraus!
topsoft
Beiträge: 67
Registriert: 16.09.2004 11:55
Wohnort: nrw

Beitrag von topsoft »

Hallo
die InpOut32.dll ist dein Freund und Helfer.
Schaust du einfach mal hier: http://www.logix4u.net/inpout32.htm .
Anbei auch mal einen Code von mir:

Code: Alles auswählen

Global *Lib, *Out, ZwSp.l

#Lpt1 = 1
#Lpt2 = 2
#On = 1
#Off = 0

Procedure.s bin8(Wert.l)
    Protected Temp.s, Lenght.l
    Temp = Bin(Wert)
    Lenght = Len(Temp)
    If Lenght < 8
        ProcedureReturn Left("00000000", 8 - Lenght) + Temp
    ElseIf Lenght > 8
        ProcedureReturn Right(Temp, 8)
    Else
        ProcedureReturn Temp
    EndIf
EndProcedure

Procedure.l Output(LptNr.l, Kanal.l, Status.l)
    Protected Base.l
    Select LptNr
    Case 1
        Base = $378
    Case 2
        Base = $278
    Default
        ProcedureReturn 1
    EndSelect

    If Kanal < 0 Or Kanal > 7
        ProcedureReturn 2
    EndIf

    If Status = #ON
        ZwSp | (1 << Kanal)
    ElseIf Status = #Off
        ZwSp & ~(1 << Kanal)
    Else
        ProcedureReturn 3
    EndIf
    Debug bin8(ZwSp)
    CallFunctionFast(*Out, Base, ZwSp)
    ProcedureReturn 0
EndProcedure
 
Path.s = Space(1024) 
GetModuleFileName_(0,@Path,1024) 
Path = GetPathPart(Path) + "inpout32.dll"

*Lib = OpenLibrary(#PB_Any, Path)
If *Lib = 0
    MessageRequester("Fehler", "InpOut32.dll nicht gefunden")
    End
EndIf

*Out = IsFunction(*Lib, "Out32")
If *Out = 0
    MessageRequester("Fehler", "Funktion Out32 in InpOut32.dll nicht gefunden")
    CloseLibrary(*Lib)
    End
EndIf

;init
ZwSp = 0
Debug bin8(ZwSp)
CallFunctionFast(*Out, ZwSp)        ; alles aus
;end init

Repeat
    Output(#LPT1, 7, #On)
    Delay (1000)
    Output(#LPT1, 7, #Off)
    Delay (1000)
ForEver
Viel Spass damit
Gruß Topsoft
Benutzeravatar
wichtel
Beiträge: 150
Registriert: 09.09.2004 08:35
Wohnort: Hattersheim

Beitrag von wichtel »

vor ein paar Tagen hatten wir das gerade hier:
http://www.robsite.de/php/pureboard/vie ... 8&start=20

(gleiche Idee, gleiche Dll, klappt wunderbar wenn man Admin Rechte hat :roll: )
PB / jaPBe jeweils aktuellste Version, seit 3.62 dabei, XP sp3 de/en & W7 en
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 »

Auf meiner Homepage habe ich auch ein paar pb-codes um über LPT oder
RS232-Seriell LED's anzusteuern.
www.falko-pure.de z.B. LPT-Würfel

Einfache Schaltung und kein ASM. Den Rest hat topsoft mit der DLL schon
angegeben :wink:

MfG Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
estate
Beiträge: 110
Registriert: 10.09.2004 08:53
Wohnort: nähe Graz
Kontaktdaten:

Beitrag von estate »

Der link ist aufschlussreich, danke dafür.
Antworten