Hallo,
probier mal das Programm!
Spoiler anzeigen
Const $cwBaseAddr = 0x300
Global $wPortA = $BaseAddr
Global $wPortB = $BaseAddr + 1
Global $wPortC = $BaseAddr + 2
Global $wCtrlReg = $BaseAddr + 3
Global $bValA, $bValB, $bValC;
[/autoit] [autoit][/autoit] [autoit]; Folgende Werte im Control-Register schalten die
; Ports in entsprechenden Modus um
; Control Reg | Port A Port B Port C
; 0x80 (128) OUT OUT OUT
; 0x82 (130) OUT IN OUT
; 0x85 (133) OUT OUT IN
; 0x87 (135) OUT IN IN
; 0x88 (136) IN OUT OUT
; 0x8A (138) IN IN OUT
; 0x8C (140) IN OUT IN
; 0x8F (143) IN IN IN
Global $hDll = DllOpen("io.dll")
[/autoit] [autoit][/autoit] [autoit]For $i = 0 To 255
; Alle Ports auf OUT schalten
DllCall("io.dll", "none", "PortOut", "short", $wCtrlReg, "byte", 0x80)
DllCall("io.dll", "none", "PortOut", "short", $wPortA, "byte", $i)
DllCall("io.dll", "none", "PortOut", "short", $wPortB, "byte", $i)
DllCall("io.dll", "none", "PortOut", "short", $wPortC, "byte", $i)
Sleep(1000)
[/autoit] [autoit][/autoit] [autoit]; Alle Ports auf IN schalten
DllCall("io.dll", "none", "PortOut", "short", $wCtrlReg, "byte", 0x8F)
$bValA = DllCall("io.dll", "byte", "PortIn", "short", $wPortA)
if IsArray($bValA) Then $bValA = $bValA[0];
$bValB = DllCall("io.dll", "byte", "PortIn", "short", $wPortB)
if IsArray($bValB) Then $bValB = $bValB[0];
$bValC = DllCall("io.dll", "byte", "PortIn", "short", $wPortC)
if IsArray($bValC) Then $bValC = $bValC[0];
ConsoleWrite("PortA = " & $bValA & @CRLF)
ConsoleWrite("PortB = " & $bValB & @CRLF)
ConsoleWrite("PortC = " & $bValC & @CRLF)
Sleep(1000)
Next
DllClose($dll)
[/autoit] [autoit][/autoit] [autoit][/autoit]