Lichtschalterkontrolle über PC

  • hallo,

    ein Oberstufler an unserer schule kann alle Lichtschalter, das Lautsprechersystem, elektrische Rollläden, usw. vom laptop aus kontrollieren

    wisst ihr da was drüber, gibts da ein bestimmtes Programm oder so?

    uLki

  • ja schon klar aber es muss doch ein Programm oder so geben mit dem man das steuern kann

    vll gibts das ja bei jemand anderem in der Schule/Arbeit der da was drüber weiß

  • Da gibt es einige Programme, alle mehr oder weniger bekannt.

    Offizell gibt es den sogenannten EIB-BUSSYTEM mit dem EIB fähige Geräte an eine 2 drätige Steuerleitung angeschlossen werden.
    Das ist nur alles recht teuer, Grafische Schnittellen gibt es dafür auch genug, z.B. für den WEB Browser.

    Bei Conrad Elektronik gibt es ein System für die Hausautomatisierung.

    Man kann das ganze auch mit einer SPS realisieren, aber auch hier ist eine Grafische Oberfläche nur mit großem Aufwand zu integrieren.


    Nachgedacht habe ich auch schon mal darüber mit Autoit eine Haussteuerung zu realisieren. Zumindest wäre man ja völlig frei was die Programierung angeht, das macht das ganze reizfoll.

    Das wichtigste wäre ein Interface zu haben mit möglichst vielen ein und Ausgängen.
    Kennt da jemand etwas braucbares ?

    Z.B soll ein Lichtschalter ja auch weiterhin das Licht einschalten können, zusätzlich sollte das über eine Oberfläche machbar sein, wobei eine Web-Oberfläche natürlich von überall einsetzbar wäre.

    Gruß
    Wolke

  • Also auf Ideen kommen die Leute!!!

    LOL sicher is das zukunftsorientiert, aber ich persönlich möchte mein Haus nicht von meinem PC abhängig machen, ausserdem denke ich , das das ein rießiger Aufwand ist, wenn man das im Nachinein verlegt, vlt wenn man sein Haus baut, aber auch dann würde ich es defintiv nicht machen!!!

    Zum Programm was man dafür bräuchte, das ist bestimmt realisierbar, aber ich denk mal das ist kompliziert musst ja die schnittstellen ansprechen!!

    Also es is für mich schlicht sinnlos so etwas zu realisieren, theoretisch es in einem Modell zu planen hat bestimmt einen enormen Lerneffekt aber in einem Haus ist es für mich Blödsinn, stell dir mal vor jmd hackt deinen Rechner, na dann viel spass....


    Das wars
    Carsten

    Flensburg ist wie Payback - wenn man 18 Punkte hat bekommt man ein Fahrrad.

  • Dann musste am besten dein Virenprogramm in deine
    Steuerung integrieren.
    Wenn du dann mal weg bist (auf Klo / inner Dusche ;) )
    und sich dein PC n Virus einfängt,
    schickt dir deine Steuerung ne Nachricht
    per "Lampen - Morse - Code" ;) xD :D

    Naja, ne klasse Idee, aber ich denke sehr schwierig,
    mit dem verlegen der Kabel....
    aber bestimmt machbar, wenn ich dann ma n eigenes
    Haus baue werd ich das mit einbeziehen ;)

    Stellt euch ma vor, ihr sitzt aufm Klo und auf einma
    Morst euch das Virenprog:
    "Tut mir Leid, deine Festplatte wird gerade
    formatiert und ich kann nichts dage ..... " klack,
    alle Lichter aus ...
    Geiles Feeling, oder? :D xD :teufel:

    There are only 10 types of people in the world:
    Those who understand binary - and those who don't.

  • Hallo,
    habe folgenden Vorschlag:
    bei e-Bay gibt es eine Relais-Karte die man über LPT an PC anschließen kann, über Autoit (DLL befehle) ist es sehr einfach diese Karte zu steuern.
    Eine einfache art Inputs zu erstellen ist: man nimmt eine billig-Tastatur auseinander, verbindet per Zufall zwei Kontakte und es kommt zu einer Eingabe. diese Eingabe dann im AutoIt Script also Hotkey und schon hat man für unter 30 Euro In/Outputs.
    Habe es schon selbst ausprobiert. Funktioniert!
    Diese Lösung ist zwar etwas nooblike, aber wenn man nicht viel Geld zum ausgeben hat, ist das eine einfache Lösung!
    Freu mich auf eure Kommentare :)

    Gruß Julzk

  • hi hi !!

    also hab auch schon von anfang an immer versucht autoIT mit der WELT zu verbinden ..

    angefangen von GP über LPT bis RS232 ..

    jetz bin ich bei USB hängengeblieben ..

    gibt von der firma vellemann ein USB EXPERIMENT INTERFACE BOARD

    kann man komplett über dll call ansprechen ..

    kostet im conrad.de versand nur 25€ als bausatz ..

    hat 5 DI und 8 DO ... 2 AI und 2 AO

    ..

    hab auch mal n udf im netz gefunden .. weis aber nicht mehr woher. war aber bei einem befehl mit fehlern behaftet ..

    hier meine überarbeitete version

    Spoiler anzeigen

    ;;Private Declare Function OpenDevice Lib "k8055d.dll" (ByVal CardAddress As Integer) As Integer

    Func USBOpenDevice($CardAddress)
    $result = DLLCall("k8055d.dll", "int", "OpenDevice", "int", $CardAddress)
    Return $result[0]
    EndFunc

    ;;Private Declare Sub CloseDevice Lib "k8055d.dll" ()

    Func USBCloseDevice()
    $result = DLLCall("k8055d.dll", "none", "CloseDevice")
    Return ;;$result[0]
    EndFunc

    ;;Private Declare Function ReadAnalogChannel Lib "k8055d.dll" (ByVal Channel As Integer) As Integer

    Func USBReadAnalogChannel($Channel)
    $result = DLLCall("k8055d.dll", "int", "ReadAnalogChannel", "int", $Channel)
    Return $result[0]
    EndFunc

    ;;Private Declare Sub ReadAllAnalog Lib "k8055d.dll" (ByRef Data1 As Integer, ByRef Data2 As Integer)
    ;;; Cannot convert to DLLCall syntax. If i remember correctly, you cannot pass things by reference.
    ;;Private Declare Sub OutputAnalogChannel Lib "k8055d.dll" (ByVal Channel As Integer, ByVal Data As Integer)

    Func USBOutputAnalogChannel($Channel, $Data)
    $result = DLLCall("k8055d.dll", "none", "OutputAnalogChannel", "int", $Channel, "int", $Data)
    EndFunc

    ;;Private Declare Sub OutputAllAnalog Lib "k8055d.dll" (ByVal Data1 As Integer, ByVal Data2 As Integer)

    Func USBOutputAllAnalog($Data1, $Data2)
    $result = DLLCall("k8055d.dll", "none", "OutputAllAnalog", "int", $Data1, "int", $Data2)
    EndFunc

    ;;Private Declare Sub ClearAnalogChannel Lib "k8055d.dll" (ByVal Channel As Integer)

    Func USBClearAnalogChannel()
    $result = DLLCall("k8055d.dll", "none", "ClearAnalogChannel")
    EndFunc

    ;;Private Declare Sub SetAllAnalog Lib "k8055d.dll" ()

    Func USBSetAllAnalog()
    $result = DLLCall("k8055d.dll", "none", "SetAllAnalog")
    EndFunc

    ;;Private Declare Sub ClearAllAnalog Lib "k8055d.dll" ()

    Func USBClearAllAnalog()
    $result = DLLCall("k8055d.dll", "none", "ClearAllAnalog")
    EndFunc

    ;;Private Declare Sub SetAnalogChannel Lib "k8055d.dll" (ByVal Channel As Integer)

    Func USBSetAnalogChannel($Chanel)
    $result = DLLCall("k8055d.dll", "none", "SetAnalogChannel", "int", $Channel)
    EndFunc

    ;;Private Declare Sub WriteAllDigital Lib "k8055d.dll" (ByVal Data As Integer)

    Func USBWriteAllDigita($Data)
    $result = DLLCall("k8055d.dll", "none", "WriteAllDigital", "int", $Data)
    EndFunc

    ;;Private Declare Sub ClearDigitalChannel Lib "k8055d.dll" (ByVal Channel As Integer)

    Func USBClearDigitalChannel($Channel)
    $result = DLLCall("k8055d.dll", "none", "ClearDigitalChannel", "int", $Channel)
    EndFunc

    ;;Private Declare Sub ClearAllDigital Lib "k8055d.dll" ()

    Func USBClearAllDigital()
    $result = DLLCall("k8055d.dll", "none", "ClearAllDigital")
    EndFunc

    ;;Private Declare Sub SetDigitalChannel Lib "k8055d.dll" (ByVal Channel As Integer)

    Func USBSetDigitalChannel($Channel)
    $result = DLLCall("k8055d.dll", "none", "SetDigitalChannel", "int", $Channel)
    EndFunc

    ;;Private Declare Sub SetAllDigital Lib "k8055d.dll" ()

    Func USBSetAllDigital()
    $result = DLLCall("k8055d.dll", "none", "SetAllDigital")
    EndFunc

    ;;Private Declare Function ReadDigitalChannel Lib "k8055d.dll" (ByVal Channel As Integer) As Boolean

    ;Func USBReadDigitalChannel($Channel)
    ;$result = DLLCall("k8055d.dll", "bool", "ReadDigitalChannel", "int", $Channel)
    ;Return $result[0]
    ;EndFunc

    func USBReadDigitalChannel($sellect)

    dim $channel[6]
    $channel[1] = 0
    $channel[2] = 0
    $channel[3] = 0
    $channel[4] = 0
    $channel[5] = 0

    $alldigit = DLLCall("K8055D.DLL", "int", "ReadAllDigital")

    $wert = $alldigit[0]

    ;MsgBox(0,"",$alldigit[0] & " " & $wert)
    Select

    Case $wert = 0
    $channel[1] = 0
    $channel[2] = 0
    $channel[3] = 0
    $channel[4] = 0
    $channel[5] = 0

    Case $wert = 1
    ;I1
    $channel[1] = 1

    Case $wert = 2
    ;I2
    $channel[2] = 1

    Case $wert = 3
    ;I1 + I2
    $channel[1] = 1
    $channel[2] = 1

    Case $wert = 4
    ;I3
    $channel[3] = 1

    Case $wert = 5
    ;I3 + I1
    $channel[1] = 1
    $channel[3] = 1

    Case $wert = 6
    ;I3 + I2
    $channel[2] = 1
    $channel[3] = 1

    Case $wert = 7
    ;I3 + I2 + I1
    $channel[1] = 1
    $channel[2] = 1
    $channel[3] = 1

    Case $wert = 8
    ;I4
    $channel[4] = 1

    Case $wert = 9
    ;I4 + I1
    $channel[1] = 1
    $channel[4] = 1

    Case $wert = 10
    ;I4 + I2
    $channel[2] = 1
    $channel[4] = 1

    Case $wert = 11
    ;I4 + I2 + I1
    $channel[1] = 1
    $channel[2] = 1
    $channel[4] = 1

    Case $wert = 12
    ;I4 + I3
    $channel[3] = 1
    $channel[4] = 1

    Case $wert = 13
    ;I4 + I3 + I1
    $channel[1] = 1
    $channel[3] = 1
    $channel[4] = 1

    Case $wert = 14
    ;I4 + I3 + I2
    $channel[2] = 1
    $channel[3] = 1
    $channel[4] = 1

    Case $wert = 15
    ;I4 + I3 * I2 + I1
    $channel[1] = 1
    $channel[2] = 1
    $channel[3] = 1
    $channel[4] = 1

    Case $wert = 16
    ;I5
    $channel[5] = 1

    Case $wert = 17
    ;I1
    $channel[1] = 1
    $channel[5] = 1

    Case $wert = 18
    ;I2
    $channel[2] = 1
    $channel[5] = 1

    Case $wert = 19
    ;I1 + I2
    $channel[1] = 1
    $channel[2] = 1
    $channel[5] = 1

    Case $wert = 20
    ;I3
    $channel[3] = 1
    $channel[5] = 1

    Case $wert = 21
    ;I3 + I1
    $channel[1] = 1
    $channel[3] = 1
    $channel[5] = 1

    Case $wert = 22
    ;I3 + I2
    $channel[2] = 1
    $channel[3] = 1
    $channel[5] = 1

    Case $wert = 23
    ;I3 + I2 + I1
    $channel[1] = 1
    $channel[2] = 1
    $channel[3] = 1
    $channel[5] = 1

    Case $wert = 24
    ;I4
    $channel[4] = 1
    $channel[5] = 1

    Case $wert = 25
    ;I4 + I1
    $channel[1] = 1
    $channel[4] = 1
    $channel[5] = 1

    Case $wert = 26
    ;I4 + I2
    $channel[2] = 1
    $channel[4] = 1
    $channel[5] = 1

    Case $wert = 27
    ;I4 + I2 + I1
    $channel[1] = 1
    $channel[2] = 1
    $channel[4] = 1
    $channel[5] = 1

    Case $wert = 28
    ;I4 + I3
    $channel[3] = 1
    $channel[4] = 1
    $channel[5] = 1

    Case $wert = 29
    ;I4 + I3 + I1
    $channel[1] = 1
    $channel[3] = 1
    $channel[4] = 1
    $channel[5] = 1

    Case $wert = 30
    ;I4 + I3 + I2
    $channel[2] = 1
    $channel[3] = 1
    $channel[4] = 1
    $channel[5] = 1

    Case $wert = 31
    ;I4 + I3 * I2 + I1
    $channel[1] = 1
    $channel[2] = 1
    $channel[3] = 1
    $channel[4] = 1
    $channel[5] = 1

    Case Else

    $channel[1] = 0
    $channel[2] = 0
    $channel[3] = 0
    $channel[4] = 0
    $channel[5] = 0

    EndSelect

    If $Channel[$sellect] = 1 Then
    ; MsgBox(0,"","return 1")
    Return 1
    Else
    ; MsgBox(0,"","return 0")
    Return 0

    EndIf

    EndFunc

    ;;Private Declare Function ReadAllDigital Lib "k8055d.dll" () As Integer

    Func USBReadAllDigital()
    $result = DLLCall("k8055d.dll", "int", "ReadAllDigital")
    Return $result[0]
    EndFunc

    ;;Private Declare Function ReadCounter Lib "k8055d.dll" (ByVal CounterNr As Integer) As Integer


    Func USBReadCounter()
    $result = DLLCall("k8055d.dll", "int", "ReadCounter")
    Return $result[0]
    EndFunc

    ;;Private Declare Sub ResetCounter Lib "k8055d.dll" (ByVal CounterNr As Integer)

    Func USBResetCounter($count)
    $result = DLLCall("k8055d.dll", "none", "ResetCounter", "int", $count)
    EndFunc

    ;;Private Declare Sub SetCounterDebounceTime Lib "k8055d.dll" (ByVal CounterNr As Integer, ByVal DebounceTime As Integer)

    Func USBSetCounterDebounceTime($count, $detime)
    $result = DLLCall("k8055d.dll", "none", "SetCounterDebounceTime", "int", $count,"int", $detime)
    EndFunc

    hier der link auf die herstellerhomepage http://www.velleman.be/ot/en/product/view/?id=351346

    und die artikelnummer für conrad.de : Artikel-Nr.: 191003 - RT

    funktioniert echt klasse ..

    bis zu 4 dieser board's kann man gleichzeitig betreiben ..

    die dll gibt's beim hersteller .. oder im lieferumfang, wenn man's im conrad kauft ...

    beispielcode

    Spoiler anzeigen

    DllOpen ( "k8055d.dll" )
    #include <k8055.au3>
    $o = USBOpenDevice (0 )


    USBSetDigitalChannel (1)
    USBSetDigitalChannel (2)
    USBSetDigitalChannel (3)
    USBSetDigitalChannel (4)
    USBSetDigitalChannel (5)
    $var = InputBox("clearchannel","welcher port?")
    USBClearDigitalChannel($var)

    sleep(1000)

    exit

    viel spaß !!

    bye

  • Meine Control-Gui: [Blockierte Grafik: http://img-up.net/img/zimmerconthrd8o.JPG]

    Ich habe das zusammen mit einem Freund gebaut. Über ein, wie schon oben genanntes, Usb-Interface-Board und Relais. Wobei ich selbst mich mehr mit dem Programmierteil befasst habe und den Rest meinen Freund machen lassen hab :P

    Einmal editiert, zuletzt von Jautois (23. Juni 2009 um 19:33)

  • Hi, ist zwar schon ne weile her, aber ich habe da mal ne Frage.
    Bist Du damit immer noch Zugange und zufrieden ?

    Gruß
    Wolke

  • HI "wolkenloser"

    zu deiner Frage:

    also die USB-Board'S sind klasse ..

    gibt nur ein Problem, musste mir, da ich 2 Board's gleichzeitig ansprechen will ( brauch mehr ein aus ausgänge)
    n kleines work arround basteln, ....

    wenn du dich mal näher befasst, verstehst du sicher das problem... man kann mit der einen DLL NUR ein board ansprechen.
    ( obwohl man's ja jumpern kann ) "adresse 0-3"

    ... so wenn man jetzt aber gleichzeitig .. auf die dll zugreifen will.... um z.b. 2 Ausgänge verschiedener board's gleichzeitig anzusprechen.... TERROR !!

    na egal .. schicksal ...

    also als singel Lösung .. absolut GEIL !!

    .. mit meinem workarround klappt's auch schon recht gut mit 2 .. aber irgend wie .. macht windows da glaub ich nicht mit...

    kenn mich leider zu wenig mit dll's aus.. als dass ich mir da selber was basteln könnte..

    bräuchte da profesionellere hilfe..

    wenn du fragen hast , kannst mich auch gerne direkt anschreiben ..

    BYE

    • Offizieller Beitrag
    Zitat

    .. mit meinem workarround klappt's auch schon recht gut mit 2 .. aber irgend wie .. macht windows da glaub ich nicht mit...

    Na hast du ein Workaround oder nicht? Würde mich interessieren.

  • also meine kleine *.au3 für folgende dll..

    http://www.vellemanusa.com/downloads/file…ll_rev3_0_2.zip

    direkte downloadseite des Herstellers. ( velleman ... dll V 3.02 )

    und hier meine include ..

    Spoiler anzeigen

    #cs ----------------------------------------------------------------------------

    AutoIt Version: 3.3.0.0
    Author: vivus

    Script Function:
    handles the k8055d.dll 2009.10.19

    NOTE RENAME the k8055d.dll in k8055D_multi.dll

    #ce ----------------------------------------------------------------------------


    Func USB_DLLOpen()
    DllOpen(@ScriptDir & "\" & "k8055D_multi.dll") ; öffnen der DLL
    EndFunc ;==>USB_DLLOpen

    ;----------------------------------------------------------------------------

    Func USB_DLLClose()
    DllClose(@ScriptDir & "\" & "k8055D_multi.dll") ; öffnen der DLL

    EndFunc ;==>USB_DLLClose

    ;----------------------------------------------------------------------------

    Func initial_board($address)

    Local $begin, $result, $dif

    $begin = TimerInit()
    Do
    $result = USBOpenDevice($address)
    Sleep(250)

    $dif = TimerDiff($begin)

    If $dif > "4000" Then ExitLoop

    Until $result = 1

    ClearAllDigital($address)

    Sleep(250)

    SetDigitalChannel($address, "8")

    If $result = 1 Then
    Return "1"

    Else
    MsgBox(0, "ERROR", "fehler bei initialisierung des USB board's " & $address)
    MsgBox(0, "ERROR", "Programm wird beendet! mit " & $result)
    Exit
    Return "0"

    EndIf


    EndFunc ;==>initial_board


    ;----------------------------------------------------------------------------

    Func USBOpenDevice($address)

    Local $result

    $result = DllCall("k8055D_multi.dll", "long", "OpenDevice", "long", $address)


    If $result[0] = $address Then
    Return "1"

    Else
    ;exit
    Return "0"
    EndIf

    EndFunc ;==>USBOpenDevice

    ;---------------------------------------------------------------------------

    Func CloseAllDevice()

    Local $result
    $result = DllCall("k8055D_multi.dll", "none", "CloseDevice")
    USB_DLLClose()

    EndFunc ;==>CloseAllDevice

    ;---------------------------------------------------------------------------

    Func SearchDevices()

    Local $result
    $result = DllCall("k8055D_multi.dll", "long", "SearchDevices")

    Return $result[0]

    EndFunc ;==>SearchDevices

    ;---------------------------------------------------------------------------

    Func USBCloseDevice($address)
    Local $result

    SetCurrentDevice($address)
    $result = DllCall("k8055D_multi.dll", "none", "CloseDevice")
    ;Return ;;$result[0]
    EndFunc ;==>USBCloseDevice

    ;---------------------------------------------------------------------------

    Func ClearAllDigital($address)

    Local $result
    SetCurrentDevice($address)
    $result = DllCall("k8055D_multi.dll", "int", "ClearAllDigital")
    EndFunc ;==>ClearAllDigital

    ;----------------------------------------------------------------------------

    Func SetCurrentDevice($address)
    Local $result, $begin, $dif

    $begin = TimerInit()
    Do

    $result = DllCall("k8055D_multi.dll", "long", "SetCurrentDevice", "int", $address)

    ;ToolTip($address&"="&$result[0],0,0)
    $dif = TimerDiff($begin)

    If $dif > "4000" Then ExitLoop

    Until $address = $result[0]

    ;ToolTip("",0,0)

    If $address = $result[0] Then
    ;nix
    Else
    MsgBox(0, "", "adresse = " & $address & " result = " & $result[0])

    EndIf

    EndFunc ;==>SetCurrentDevice


    ;----------------------------------------------------------------------------

    Func SetDigitalChannel($address, $channel)
    SetCurrentDevice($address)
    DllCall("k8055D_multi.dll", "none", "SetDigitalChannel", "int", $channel)
    EndFunc ;==>SetDigitalChannel

    ;---------------------------------------------------------------------------

    Func ClearDigitalChannel($address, $channel)
    SetCurrentDevice($address)
    DllCall("k8055D_multi.dll", "none", "ClearDigitalChannel", "int", $channel)
    EndFunc ;==>ClearDigitalChannel

    ;---------------------------------------------------------------------------

    Func ReadAnalogChannel($address, $channel)
    Local $result

    SetCurrentDevice($address)
    $result = DllCall("k8055D_multi.dll", "int", "ReadAnalogChannel", "int", $channel)
    Return $result[0]
    EndFunc ;==>ReadAnalogChannel

    ;---------------------------------------------------------------------------

    Func ReadAllDigital($address)
    Local $result, $alldigit

    SetCurrentDevice($address)
    $alldigit = DllCall("k8055D_multi.dll", "int", "ReadAllDigital")
    Return $alldigit[0]
    EndFunc ;==>ReadAllDigital
    ;---------------------------------------------------------------------------


    Func ReadDigitalChannel($address, $sellect)

    Local $wert
    Local $channel[6]
    $channel[1] = 0
    $channel[2] = 0
    $channel[3] = 0
    $channel[4] = 0
    $channel[5] = 0


    $wert = ReadAllDigital($address)

    ;MsgBox(0,"",$alldigit[0] & " " & $wert)
    Select

    Case $wert = 0
    $channel[1] = 0
    $channel[2] = 0
    $channel[3] = 0
    $channel[4] = 0
    $channel[5] = 0

    Case $wert = 1
    ;I1
    $channel[1] = 1

    Case $wert = 2
    ;I2
    $channel[2] = 1

    Case $wert = 3
    ;I1 + I2
    $channel[1] = 1
    $channel[2] = 1

    Case $wert = 4
    ;I3
    $channel[3] = 1

    Case $wert = 5
    ;I3 + I1
    $channel[1] = 1
    $channel[3] = 1

    Case $wert = 6
    ;I3 + I2
    $channel[2] = 1
    $channel[3] = 1

    Case $wert = 7
    ;I3 + I2 + I1
    $channel[1] = 1
    $channel[2] = 1
    $channel[3] = 1

    Case $wert = 8
    ;I4
    $channel[4] = 1

    Case $wert = 9
    ;I4 + I1
    $channel[1] = 1
    $channel[4] = 1

    Case $wert = 10
    ;I4 + I2
    $channel[2] = 1
    $channel[4] = 1

    Case $wert = 11
    ;I4 + I2 + I1
    $channel[1] = 1
    $channel[2] = 1
    $channel[4] = 1

    Case $wert = 12
    ;I4 + I3
    $channel[3] = 1
    $channel[4] = 1

    Case $wert = 13
    ;I4 + I3 + I1
    $channel[1] = 1
    $channel[3] = 1
    $channel[4] = 1

    Case $wert = 14
    ;I4 + I3 + I2
    $channel[2] = 1
    $channel[3] = 1
    $channel[4] = 1

    Case $wert = 15
    ;I4 + I3 * I2 + I1
    $channel[1] = 1
    $channel[2] = 1
    $channel[3] = 1
    $channel[4] = 1

    Case $wert = 16
    ;I5
    $channel[5] = 1

    Case $wert = 17
    ;I1
    $channel[1] = 1
    $channel[5] = 1

    Case $wert = 18
    ;I2
    $channel[2] = 1
    $channel[5] = 1

    Case $wert = 19
    ;I1 + I2
    $channel[1] = 1
    $channel[2] = 1
    $channel[5] = 1

    Case $wert = 20
    ;I3
    $channel[3] = 1
    $channel[5] = 1

    Case $wert = 21
    ;I3 + I1
    $channel[1] = 1
    $channel[3] = 1
    $channel[5] = 1

    Case $wert = 22
    ;I3 + I2
    $channel[2] = 1
    $channel[3] = 1
    $channel[5] = 1

    Case $wert = 23
    ;I3 + I2 + I1
    $channel[1] = 1
    $channel[2] = 1
    $channel[3] = 1
    $channel[5] = 1

    Case $wert = 24
    ;I4
    $channel[4] = 1
    $channel[5] = 1

    Case $wert = 25
    ;I4 + I1
    $channel[1] = 1
    $channel[4] = 1
    $channel[5] = 1

    Case $wert = 26
    ;I4 + I2
    $channel[2] = 1
    $channel[4] = 1
    $channel[5] = 1

    Case $wert = 27
    ;I4 + I2 + I1
    $channel[1] = 1
    $channel[2] = 1
    $channel[4] = 1
    $channel[5] = 1

    Case $wert = 28
    ;I4 + I3
    $channel[3] = 1
    $channel[4] = 1
    $channel[5] = 1

    Case $wert = 29
    ;I4 + I3 + I1
    $channel[1] = 1
    $channel[3] = 1
    $channel[4] = 1
    $channel[5] = 1

    Case $wert = 30
    ;I4 + I3 + I2
    $channel[2] = 1
    $channel[3] = 1
    $channel[4] = 1
    $channel[5] = 1

    Case $wert = 31
    ;I4 + I3 * I2 + I1
    $channel[1] = 1
    $channel[2] = 1
    $channel[3] = 1
    $channel[4] = 1
    $channel[5] = 1

    Case Else

    $channel[1] = 0
    $channel[2] = 0
    $channel[3] = 0
    $channel[4] = 0
    $channel[5] = 0

    EndSelect

    If $channel[$sellect] = 1 Then
    ; MsgBox(0,"","return 1")
    Return 1
    Else
    ; MsgBox(0,"","return 0")
    Return 0

    EndIf

    EndFunc ;==>ReadDigitalChannel
    ;----------------------------------------------------------------------------


    wichtig .. die original dll MUSS umbenannt werden .. weil's anderst nicht funktioniert ..
    aber fragt mich bitte nicht warum ..

    VIEL spaß !!