Seite 1 von 1

Zugriff auf LPT Port

Verfasst: 28.11.2004 10:51
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!

Verfasst: 28.11.2004 16:35
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

Verfasst: 28.11.2004 23:12
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: )

Verfasst: 30.11.2004 22:00
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

Verfasst: 01.12.2004 16:55
von estate
Der link ist aufschlussreich, danke dafür.