K8055 Programmer?

  • Hi Leute!
    Bin mal wieder da.
    Ich hab ein neues Projekt angefangen, und zwar ein K8055 Programmer. Damit kann mann kleine Programme fürs K8055 Board programmieren. Allerdings hätte ich da ein kleines Problem:

    Wenn man Digitalen "Ausgang Ein/Ausschalten" bei "Aktion hinzufügen" auswählt, kommt zwar unten das was kommen soll (achtet nicht auf die falschen Koordinaten, ändere ich später), aber wenn ihr dann in der 2.Combobox guckt, steht da nur 1. Da soll aber die ausgewählten Checkboxen stehen, die werden ja in die .ini geschrieben. Also wisst ihr, wie da nur die ausgewählten Checkboxen stehen können? Muss ja irgendwas mit IniWrite sein.
    Also

    Mein Skript
    [autoit]


    #region includes ;########################
    #include <k8055udf.au3>
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiStatusBar.au3>
    #include <ListViewConstants.au3>
    #include <ComboConstants.au3>
    #endregion includes
    ;##########################################
    Global $adressebin=""
    Global $aktion="Programm erfolgreich gestartet"
    Global $ini=@ScriptDir&"\logdatei.ini"
    ;~ Global $inputsoutputsini = IniRead($ini,"inputsandoutputs",Default,"1")
    IniDelete($ini,"log")
    IniWrite($ini,"log","Startdaten",@HOUR&":"&@MIN&":"&@SEC&":"&@MSEC&"-Datum:"&@MDAY&"."&@MON&"."&@YEAR)
    #Region ### START Verbindungsform ### Form=
    $verbindungsform = GUICreate("Verbindung", 184, 100, 190, 126, -1, BitOR($WS_EX_TOOLWINDOW,$WS_EX_WINDOWEDGE))
    $SK5 = GUICtrlCreateCheckbox("SK5", 24, 16, 41, 17)
    $SK6 = GUICtrlCreateCheckbox("SK6", 128, 16, 41, 17)
    $Adresse = GUICtrlCreateGroup("Adresse", 8, 0, 169, 41)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateLabel("<---------------->", 64, 16, 64, 17)
    $Progress1 = GUICtrlCreateProgress(0, 80, 182, 17)
    $mitboardverbinden = GUICtrlCreateButton("Mit K8055 Board verbinden", 8, 48, 171, 25, $WS_GROUP)
    GUISetState(@SW_HIDE)
    #EndRegion ### END Verbindungsform ###
    ;##########################################
    #Region ### START Hauptform ### Form=c:\users\jonathan verbeek\desktop\k8055 programmer\hauptform.kxf
    $Form1_1 = GUICreate("K8055 Board Programmer Basicpack - created by button421", 519, 412, 187, 121)
    $statusleiste = _GUICtrlStatusBar_Create($Form1_1)
    Dim $statusleiste_PartsWidth[2] = [439, -1]
    _GUICtrlStatusBar_SetParts($statusleiste, $statusleiste_PartsWidth)
    _GUICtrlStatusBar_SetText($statusleiste, $aktion, 0)
    _GUICtrlStatusBar_SetText($statusleiste, "Verbunden", 1)
    $DigitaleEingaenge = GUICtrlCreateGroup("Digitale Eingänge", 8, 0, 169, 41)
    $I1 = GUICtrlCreateCheckbox("I1", 16, 16, 25, 17)
    $I2 = GUICtrlCreateCheckbox("I2", 48, 16, 25, 17)
    $I3 = GUICtrlCreateCheckbox("I3", 80, 16, 25, 17)
    $I4 = GUICtrlCreateCheckbox("I4", 112, 16, 25, 17)
    $I5 = GUICtrlCreateCheckbox("I5", 144, 16, 25, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $DigitaleAusgaenge = GUICtrlCreateGroup("Digitale Ausgänge", 184, 0, 329, 41)
    $O1 = GUICtrlCreateCheckbox("O1", 192, 16, 33, 17)
    $O2 = GUICtrlCreateCheckbox("O2", 232, 16, 33, 17)
    $O3 = GUICtrlCreateCheckbox("O3", 272, 16, 33, 17)
    $O4 = GUICtrlCreateCheckbox("O4", 312, 16, 33, 17)
    $O5 = GUICtrlCreateCheckbox("O5", 352, 16, 33, 17)
    $O6 = GUICtrlCreateCheckbox("O6", 392, 16, 33, 17)
    $O7 = GUICtrlCreateCheckbox("O7", 432, 16, 33, 17)
    $O8 = GUICtrlCreateCheckbox("O8", 472, 16, 33, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $ListView1 = GUICtrlCreateListView("Aktionen", 8, 48, 506, 310)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 502)
    $addaktion = GUICtrlCreateButton("Aktion hinzufügen", 8, 360, 107, 25, $WS_GROUP)
    $delaktion = GUICtrlCreateButton("Aktion löschen", 120, 360, 91, 25, $WS_GROUP)
    $anleitung = GUICtrlCreateButton("Anleitung für Experimente", 216, 360, 131, 25, $WS_GROUP)
    $hilfe = GUICtrlCreateButton("Hilfe und Info", 352, 360, 75, 25, $WS_GROUP)
    $beenden = GUICtrlCreateButton("Beenden", 432, 360, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Hauptform ###
    ;#######################################
    #Region ### START Aktion hinzufügen ### Form=
    $actionadd = GUICreate("Aktion hinzufügen", 246, 187, 192, 124, -1, BitOR($WS_EX_TOOLWINDOW,$WS_EX_WINDOWEDGE))
    $Aktionlabel = GUICtrlCreateLabel("Aktion:", 8, 8, 37, 17)
    $aktioncombo = GUICtrlCreateCombo("", 48, 8, 193, 25, BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL))
    GUICtrlSetData(-1, "Meldung anzeigen|Digitalen Ausgang ein/ausschalten|Abfrage ob Digitaler Eingang ein/aus|Wert für 7-Segment Display festlegen")
    $probs = GUICtrlCreateGroup("Einstellungen für Aktion festlegen", 8, 32, 233, 121)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $cancelactionadd = GUICtrlCreateButton("Abbrechen", 168, 160, 75, 25, $WS_GROUP)
    $okactionadd = GUICtrlCreateButton("OK", 88, 160, 75, 25, $WS_GROUP)
    GUISetState(@SW_HIDE)
    #EndRegion ### END Aktion hinzufügen ###
    ;#######################################
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case -3, $beenden
    Exit
    Case $SK5
    If BitAND(GUICtrlRead($SK5),$GUI_CHECKED) Then
    $adressebin = "SK5/"
    EndIf
    Case $SK6
    If BitAND(GUICtrlRead($SK6),$GUI_CHECKED) Then
    $adressebin = "SK6/"
    EndIf
    Case $mitboardverbinden
    If GUICtrlRead($adressebin) = "SK5/SK6/" Then
    USB_DLLOpen()
    initial_board(0)
    GUICtrlSetState($Progress1, 100)
    MsgBox(64,"Info","Mit Board verbunden!")
    GUISetState(@SW_SHOW, $Form1_1)
    GUISetState(@SW_HIDE, $verbindungsform)
    ElseIf GUICtrlRead($adressebin) = "SK6/" Then
    USB_DLLOpen()
    initial_board(1)
    GUICtrlSetState($Progress1, 100)
    MsgBox(64,"Info","Mit Board verbunden!")
    GUISetState(@SW_SHOW, $Form1_1)
    GUISetState(@SW_HIDE, $verbindungsform)
    ElseIf GUICtrlRead($adressebin) = "SK5/" Then
    USB_DLLOpen()
    initial_board(2)
    GUICtrlSetState($Progress1, 100)
    MsgBox(64,"Info","Mit Board verbunden!")
    GUISetState(@SW_SHOW, $Form1_1)
    GUISetState(@SW_HIDE, $verbindungsform)
    Else
    USB_DLLOpen()
    initial_board(3)
    GUICtrlSetState($Progress1, 100)
    MsgBox(64,"Info","Mit Board verbunden!")
    GUISetState(@SW_SHOW, $Form1_1)
    GUISetState(@SW_HIDE, $verbindungsform)
    EndIf
    Case $I1
    If BitAND(GUICtrlRead($I1),$GUI_CHECKED)Then
    IniDelete($ini,"inputsandoutputs")
    IniWrite($ini,"inputsandoutputs","I1","1")
    Else
    IniDelete($ini,"inputsandoutputs")
    IniWrite($ini,"inputsandoutputs","I1","0")
    EndIf
    Case $I2
    If BitAND(GUICtrlRead($I2),$GUI_CHECKED)Then
    IniDelete($ini,"inputsandoutputs","I2")
    IniWrite($ini,"inputsandoutputs","I2","1")
    Else
    IniDelete($ini,"inputsandoutputs","I2")
    IniWrite($ini,"inputsandoutputs","I2","0")
    EndIf
    Case $I3
    If BitAND(GUICtrlRead($I3),$GUI_CHECKED)Then
    IniDelete($ini,"inputsandoutputs","I3")
    IniWrite($ini,"inputsandoutputs","I3","1")
    Else
    IniDelete($ini,"inputsandoutputs","I3")
    IniWrite($ini,"inputsandoutputs","I3","0")
    EndIf
    Case $I4
    If BitAND(GUICtrlRead($I4),$GUI_CHECKED)Then
    IniDelete($ini,"inputsandoutputs","I4")
    IniWrite($ini,"inputsandoutputs","I4","1")
    Else
    IniDelete($ini,"inputsandoutputs","I4")
    IniWrite($ini,"inputsandoutputs","I4","0")
    EndIf
    Case $I5
    If BitAND(GUICtrlRead($I5),$GUI_CHECKED)Then
    IniDelete($ini,"inputsandoutputs","I5")
    IniWrite($ini,"inputsandoutputs","I5","1")
    Else
    IniDelete($ini,"inputsandoutputs","I5")
    IniWrite($ini,"inputsandoutputs","I5","0")
    EndIf
    Case $O1
    If BitAND(GUICtrlRead($O1),$GUI_CHECKED)Then
    IniDelete($ini,"inputsandoutputs","O1")
    IniWrite($ini,"inputsandoutputs","O1","1")
    Else
    IniDelete($ini,"inputsandoutputs","O2")
    IniWrite($ini,"inputsandoutputs","O1","0")
    EndIf
    Case $O2
    If BitAND(GUICtrlRead($O2),$GUI_CHECKED)Then
    IniDelete($ini,"inputsandoutputs","O2")
    IniWrite($ini,"inputsandoutputs","O2","1")
    Else
    IniDelete($ini,"inputsandoutputs","O2")
    IniWrite($ini,"inputsandoutputs","O2","0")
    EndIf
    Case $O3
    If BitAND(GUICtrlRead($O3),$GUI_CHECKED)Then
    IniDelete($ini,"inputsandoutputs","O3")
    IniWrite($ini,"inputsandoutputs","O3","1")
    Else
    IniDelete($ini,"inputsandoutputs","O3")
    IniWrite($ini,"inputsandoutputs","O3","0")
    EndIf
    Case $O4
    If BitAND(GUICtrlRead($O4),$GUI_CHECKED)Then
    IniDelete($ini,"inputsandoutputs","O4")
    IniWrite($ini,"inputsandoutputs","O4","1")
    Else
    IniDelete($ini,"inputsandoutputs","O4")
    IniWrite($ini,"inputsandoutputs","O4","0")
    EndIf
    Case $O5
    If BitAND(GUICtrlRead($O5),$GUI_CHECKED)Then
    IniDelete($ini,"inputsandoutputs","O5")
    IniWrite($ini,"inputsandoutputs","O5","1")
    Else
    IniDelete($ini,"inputsandoutputs","O5")
    IniWrite($ini,"inputsandoutputs","O5","0")
    EndIf
    Case $O6
    If BitAND(GUICtrlRead($O6),$GUI_CHECKED)Then
    IniDelete($ini,"inputsandoutputs","O6")
    IniWrite($ini,"inputsandoutputs","O6","1")
    Else
    IniDelete($ini,"inputsandoutputs","O6")
    IniWrite($ini,"inputsandoutputs","O6","0")
    EndIf
    Case $O7
    If BitAND(GUICtrlRead($O7),$GUI_CHECKED)Then
    IniDelete($ini,"inputsandoutputs","O7")
    IniWrite($ini,"inputsandoutputs","O7","1")
    Else
    IniDelete($ini,"inputsandoutputs","O7")
    IniWrite($ini,"inputsandoutputs","O7","0")
    EndIf
    Case $O8
    If BitAND(GUICtrlRead($O8),$GUI_CHECKED)Then
    IniDelete($ini,"inputsandoutputs","O8")
    IniWrite($ini,"inputsandoutputs","O8","1")
    Else
    IniDelete($ini,"inputsandoutputs","O8")
    IniWrite($ini,"inputsandoutputs","O8","0")
    EndIf
    Case $addaktion
    GUISetState(@SW_SHOW, $actionadd)
    GUICtrlDelete($probs)
    Case $aktioncombo
    If GUICtrlRead($aktioncombo) = "Meldung anzeigen" Then
    $probs = GUICtrlCreateGroup("Einstellungen für Meldung festlegen", 8, 32, 233, 121)
    $title = GUICtrlCreateInput("Titel der Meldung",17,45,217,21)
    $text = GUICtrlCreateInput("Text der Meldung",17,70,217,73)
    IniWrite($ini,"aktion","Msg","1")
    EndIf
    If GUICtrlRead($aktioncombo) = "Digitalen Ausgang Ein/Ausschalten" Then
    $probs = GUICtrlCreateGroup("Einstellungen für Ausgang festlegen", 8, 32, 233, 121)
    $outputlabel = GUICtrlCreateLabel("Ausgang:",8,24,49,17)
    $outputcombo = GUICtrlCreateCombo("",64,24,153,17, $CBS_DROPDOWNLIST)
    ;~ GUICtrlSetData(-1,$inputsoutputsini)
    $valueoutput = GUICtrlCreateLabel("Wert:",8,56,30,17)
    $onoutput = GUICtrlCreateRadio("Einschalten",32,72,81,17,$BS_AUTORADIOBUTTON)
    EndIf
    EndSwitch
    WEnd

    [/autoit]


    Ich hab die initeile auskommentiert.

    Mfg button421 ;)

    Meine fertigen Projekte:
    VirtualCash
    Monopoly Digital

    Daran arbeite ich gerade:
    Einem Skript, womit man ohne Programmierkentisse eigene Programme machen kann (habe ich selber früher gesucht :D ) Stand: ||||||||||||||||||||||||| 6%

  • Spoiler anzeigen
    [autoit]

    #include<Array.au3>
    #include-once
    #cs ----------------------------------------------------------------------------

    AutoIt Version: 3.3.0.0
    Author: myName

    Script Function:
    handles the k8055d.dll 2009.10.19

    #ce ----------------------------------------------------------------------------
    Func USB_DLLOpen()

    [/autoit] [autoit][/autoit] [autoit]

    DllOpen(@ScriptDir & "\" & "k8055D_multi.dll") ; öffnen der DLL

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>USB_DLLOpen

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    Func initial_board($address)

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    $dif = TimerDiff($begin)

    [/autoit] [autoit][/autoit] [autoit]

    If $dif > "4000" Then ExitLoop

    [/autoit] [autoit][/autoit] [autoit]

    Until $result = 1

    [/autoit] [autoit][/autoit] [autoit]

    ClearAllDigital($address)

    [/autoit] [autoit][/autoit] [autoit]

    Sleep(250)

    [/autoit] [autoit][/autoit] [autoit]

    ;~ SetDigitalChannel($address, "4")

    [/autoit] [autoit][/autoit] [autoit]

    If $result = 1 Then
    Return "1"

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>initial_board

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    Func USBOpenDevice($address)

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    Else
    ;MsgBox(16, "ERROR", "Keine Verbindung zu USB BOARD ADRESSE " & $address & " !!", 2)
    ;exit
    Return "0"
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>USBOpenDevice

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    Func CloseAllDevice()
    $res = DllCall("k8055D_multi.dll", "none", "CloseDevice")
    DllClose(@ScriptDir & "\" & "k8055D_multi.dll") ; öffnen der DLL

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>CloseAllDevice

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    Func SearchDevices()

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    Return $result[0]

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>SearchDevices

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    Func SetCurrentDevice($address)

    [/autoit] [autoit][/autoit] [autoit]

    $begin = TimerInit()
    Do

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    If $dif > "4000" Then ExitLoop

    [/autoit] [autoit][/autoit] [autoit]

    Until $address = $result[0]

    [/autoit] [autoit][/autoit] [autoit]

    ;ToolTip("",0,0)

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>SetCurrentDevice

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func ReadDigitalChannel($address, $sellect)
    Dim $channel[6]
    $channel[1] = 0
    $channel[2] = 0
    $channel[3] = 0
    $channel[4] = 0
    $channel[5] = 0

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $wert = ReadAllDigital($address)

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    Case Else

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    EndSelect

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

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

    [/autoit]

    aber wozu brauchst du das? Ich will doch nur wissen, wie eine Combobox die ausgewählten Checkboxen (also mit IniRead, denn er schreibt das ja in die ini) anzeigt.

    Meine fertigen Projekte:
    VirtualCash
    Monopoly Digital

    Daran arbeite ich gerade:
    Einem Skript, womit man ohne Programmierkentisse eigene Programme machen kann (habe ich selber früher gesucht :D ) Stand: ||||||||||||||||||||||||| 6%

    Einmal editiert, zuletzt von bernd670 (30. Dezember 2010 um 14:19)

  • Naja das ganze drumrum verwirrt bei deinen Beiträgen sehr. Deswegen wird auch noch niemand geantwortet haben...

    Ich schätze jetz mal du willst es so:

    Spoiler anzeigen
    [autoit]

    #region includes ;########################
    #include <k8055udf.au3>
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiStatusBar.au3>
    #include <ListViewConstants.au3>
    #include <ComboConstants.au3>
    #endregion includes
    ;##########################################
    Global $adressebin=""
    Global $aktion="Programm erfolgreich gestartet"
    Global $ini=@ScriptDir&"\logdatei.ini"
    IniDelete($ini,"log")
    IniWrite($ini,"log","Startdaten",@HOUR&":"&@MIN&":"&@SEC&":"&@MSEC&"-Datum:"&@MDAY&"."&@MON&"."&@YEAR)
    #Region ### START Verbindungsform ### Form=
    $verbindungsform = GUICreate("Verbindung", 184, 100, 190, 126, -1, BitOR($WS_EX_TOOLWINDOW,$WS_EX_WINDOWEDGE))
    $SK5 = GUICtrlCreateCheckbox("SK5", 24, 16, 41, 17)
    $SK6 = GUICtrlCreateCheckbox("SK6", 128, 16, 41, 17)
    $Adresse = GUICtrlCreateGroup("Adresse", 8, 0, 169, 41)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateLabel("<---------------->", 64, 16, 64, 17)
    $Progress1 = GUICtrlCreateProgress(0, 80, 182, 17)
    $mitboardverbinden = GUICtrlCreateButton("Mit K8055 Board verbinden", 8, 48, 171, 25, $WS_GROUP)
    GUISetState(@SW_HIDE)
    #EndRegion ### END Verbindungsform ###
    ;##########################################
    #Region ### START Hauptform ### Form=c:\users\jonathan verbeek\desktop\k8055 programmer\hauptform.kxf
    $Form1_1 = GUICreate("K8055 Board Programmer Basicpack - created by button421", 519, 412, 187, 121)
    $statusleiste = _GUICtrlStatusBar_Create($Form1_1)
    Dim $statusleiste_PartsWidth[2] = [439, -1]
    _GUICtrlStatusBar_SetParts($statusleiste, $statusleiste_PartsWidth)
    _GUICtrlStatusBar_SetText($statusleiste, $aktion, 0)
    _GUICtrlStatusBar_SetText($statusleiste, "Verbunden", 1)
    $DigitaleEingaenge = GUICtrlCreateGroup("Digitale Eingänge", 8, 0, 169, 41)
    $I1 = GUICtrlCreateCheckbox("I1", 16, 16, 25, 17)
    $I2 = GUICtrlCreateCheckbox("I2", 48, 16, 25, 17)
    $I3 = GUICtrlCreateCheckbox("I3", 80, 16, 25, 17)
    $I4 = GUICtrlCreateCheckbox("I4", 112, 16, 25, 17)
    $I5 = GUICtrlCreateCheckbox("I5", 144, 16, 25, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $DigitaleAusgaenge = GUICtrlCreateGroup("Digitale Ausgänge", 184, 0, 329, 41)
    $O1 = GUICtrlCreateCheckbox("O1", 192, 16, 33, 17)
    $O2 = GUICtrlCreateCheckbox("O2", 232, 16, 33, 17)
    $O3 = GUICtrlCreateCheckbox("O3", 272, 16, 33, 17)
    $O4 = GUICtrlCreateCheckbox("O4", 312, 16, 33, 17)
    $O5 = GUICtrlCreateCheckbox("O5", 352, 16, 33, 17)
    $O6 = GUICtrlCreateCheckbox("O6", 392, 16, 33, 17)
    $O7 = GUICtrlCreateCheckbox("O7", 432, 16, 33, 17)
    $O8 = GUICtrlCreateCheckbox("O8", 472, 16, 33, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $ListView1 = GUICtrlCreateListView("Aktionen", 8, 48, 506, 310)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 502)
    $addaktion = GUICtrlCreateButton("Aktion hinzufügen", 8, 360, 107, 25, $WS_GROUP)
    $delaktion = GUICtrlCreateButton("Aktion löschen", 120, 360, 91, 25, $WS_GROUP)
    $anleitung = GUICtrlCreateButton("Anleitung für Experimente", 216, 360, 131, 25, $WS_GROUP)
    $hilfe = GUICtrlCreateButton("Hilfe und Info", 352, 360, 75, 25, $WS_GROUP)
    $beenden = GUICtrlCreateButton("Beenden", 432, 360, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Hauptform ###
    ;#######################################
    #Region ### START Aktion hinzufügen ### Form=
    $actionadd = GUICreate("Aktion hinzufügen", 246, 187, 192, 124, -1, BitOR($WS_EX_TOOLWINDOW,$WS_EX_WINDOWEDGE))
    $Aktionlabel = GUICtrlCreateLabel("Aktion:", 8, 8, 37, 17)
    $aktioncombo = GUICtrlCreateCombo("", 48, 8, 193, 25, BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL))
    GUICtrlSetData(-1, "Meldung anzeigen|Digitalen Ausgang ein/ausschalten|Abfrage ob Digitaler Eingang ein/aus|Wert für 7-Segment Display festlegen")
    $probs = GUICtrlCreateGroup("Einstellungen für Aktion festlegen", 8, 32, 233, 121)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $cancelactionadd = GUICtrlCreateButton("Abbrechen", 168, 160, 75, 25, $WS_GROUP)
    $okactionadd = GUICtrlCreateButton("OK", 88, 160, 75, 25, $WS_GROUP)
    GUISetState(@SW_HIDE)
    #EndRegion ### END Aktion hinzufügen ###
    ;#######################################
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case -3, $beenden
    Exit
    Case $SK5
    If BitAND(GUICtrlRead($SK5),$GUI_CHECKED) Then
    $adressebin = "SK5/"
    EndIf
    Case $SK6
    If BitAND(GUICtrlRead($SK6),$GUI_CHECKED) Then
    $adressebin = "SK6/"
    EndIf
    Case $mitboardverbinden
    If GUICtrlRead($adressebin) = "SK5/SK6/" Then
    USB_DLLOpen()
    initial_board(0)
    GUICtrlSetState($Progress1, 100)
    MsgBox(64,"Info","Mit Board verbunden!")
    GUISetState(@SW_SHOW, $Form1_1)
    GUISetState(@SW_HIDE, $verbindungsform)
    ElseIf GUICtrlRead($adressebin) = "SK6/" Then
    USB_DLLOpen()
    initial_board(1)
    GUICtrlSetState($Progress1, 100)
    MsgBox(64,"Info","Mit Board verbunden!")
    GUISetState(@SW_SHOW, $Form1_1)
    GUISetState(@SW_HIDE, $verbindungsform)
    ElseIf GUICtrlRead($adressebin) = "SK5/" Then
    USB_DLLOpen()
    initial_board(2)
    GUICtrlSetState($Progress1, 100)
    MsgBox(64,"Info","Mit Board verbunden!")
    GUISetState(@SW_SHOW, $Form1_1)
    GUISetState(@SW_HIDE, $verbindungsform)
    Else
    USB_DLLOpen()
    initial_board(3)
    GUICtrlSetState($Progress1, 100)
    MsgBox(64,"Info","Mit Board verbunden!")
    GUISetState(@SW_SHOW, $Form1_1)
    GUISetState(@SW_HIDE, $verbindungsform)
    EndIf
    Case $I1
    If BitAND(GUICtrlRead($I1),$GUI_CHECKED)Then
    IniDelete($ini,"inputsandoutputs")
    IniWrite($ini,"inputsandoutputs","I1","1")
    Else
    IniDelete($ini,"inputsandoutputs")
    IniWrite($ini,"inputsandoutputs","I1","0")
    EndIf
    Case $I2
    If BitAND(GUICtrlRead($I2),$GUI_CHECKED)Then
    IniDelete($ini,"inputsandoutputs","I2")
    IniWrite($ini,"inputsandoutputs","I2","1")
    Else
    IniDelete($ini,"inputsandoutputs","I2")
    IniWrite($ini,"inputsandoutputs","I2","0")
    EndIf
    Case $I3
    If BitAND(GUICtrlRead($I3),$GUI_CHECKED)Then
    IniDelete($ini,"inputsandoutputs","I3")
    IniWrite($ini,"inputsandoutputs","I3","1")
    Else
    IniDelete($ini,"inputsandoutputs","I3")
    IniWrite($ini,"inputsandoutputs","I3","0")
    EndIf
    Case $I4
    If BitAND(GUICtrlRead($I4),$GUI_CHECKED)Then
    IniDelete($ini,"inputsandoutputs","I4")
    IniWrite($ini,"inputsandoutputs","I4","1")
    Else
    IniDelete($ini,"inputsandoutputs","I4")
    IniWrite($ini,"inputsandoutputs","I4","0")
    EndIf
    Case $I5
    If BitAND(GUICtrlRead($I5),$GUI_CHECKED)Then
    IniDelete($ini,"inputsandoutputs","I5")
    IniWrite($ini,"inputsandoutputs","I5","1")
    Else
    IniDelete($ini,"inputsandoutputs","I5")
    IniWrite($ini,"inputsandoutputs","I5","0")
    EndIf
    Case $O1
    If BitAND(GUICtrlRead($O1),$GUI_CHECKED)Then
    IniDelete($ini,"inputsandoutputs","O1")
    IniWrite($ini,"inputsandoutputs","O1","1")
    Else
    IniDelete($ini,"inputsandoutputs","O2")
    IniWrite($ini,"inputsandoutputs","O1","0")
    EndIf
    Case $O2
    If BitAND(GUICtrlRead($O2),$GUI_CHECKED)Then
    IniDelete($ini,"inputsandoutputs","O2")
    IniWrite($ini,"inputsandoutputs","O2","1")
    Else
    IniDelete($ini,"inputsandoutputs","O2")
    IniWrite($ini,"inputsandoutputs","O2","0")
    EndIf
    Case $O3
    If BitAND(GUICtrlRead($O3),$GUI_CHECKED)Then
    IniDelete($ini,"inputsandoutputs","O3")
    IniWrite($ini,"inputsandoutputs","O3","1")
    Else
    IniDelete($ini,"inputsandoutputs","O3")
    IniWrite($ini,"inputsandoutputs","O3","0")
    EndIf
    Case $O4
    If BitAND(GUICtrlRead($O4),$GUI_CHECKED)Then
    IniDelete($ini,"inputsandoutputs","O4")
    IniWrite($ini,"inputsandoutputs","O4","1")
    Else
    IniDelete($ini,"inputsandoutputs","O4")
    IniWrite($ini,"inputsandoutputs","O4","0")
    EndIf
    Case $O5
    If BitAND(GUICtrlRead($O5),$GUI_CHECKED)Then
    IniDelete($ini,"inputsandoutputs","O5")
    IniWrite($ini,"inputsandoutputs","O5","1")
    Else
    IniDelete($ini,"inputsandoutputs","O5")
    IniWrite($ini,"inputsandoutputs","O5","0")
    EndIf
    Case $O6
    If BitAND(GUICtrlRead($O6),$GUI_CHECKED)Then
    IniDelete($ini,"inputsandoutputs","O6")
    IniWrite($ini,"inputsandoutputs","O6","1")
    Else
    IniDelete($ini,"inputsandoutputs","O6")
    IniWrite($ini,"inputsandoutputs","O6","0")
    EndIf
    Case $O7
    If BitAND(GUICtrlRead($O7),$GUI_CHECKED)Then
    IniDelete($ini,"inputsandoutputs","O7")
    IniWrite($ini,"inputsandoutputs","O7","1")
    Else
    IniDelete($ini,"inputsandoutputs","O7")
    IniWrite($ini,"inputsandoutputs","O7","0")
    EndIf
    Case $O8
    If BitAND(GUICtrlRead($O8),$GUI_CHECKED)Then
    IniDelete($ini,"inputsandoutputs","O8")
    IniWrite($ini,"inputsandoutputs","O8","1")
    Else
    IniDelete($ini,"inputsandoutputs","O8")
    IniWrite($ini,"inputsandoutputs","O8","0")
    EndIf
    Case $addaktion
    GUISetState(@SW_SHOW, $actionadd)
    GUICtrlDelete($probs)
    Case $aktioncombo
    If GUICtrlRead($aktioncombo) = "Meldung anzeigen" Then
    $probs = GUICtrlCreateGroup("Einstellungen für Meldung festlegen", 8, 32, 233, 121)
    $title = GUICtrlCreateInput("Titel der Meldung",17,45,217,21)
    $text = GUICtrlCreateInput("Text der Meldung",17,70,217,73)
    IniWrite($ini,"aktion","Msg","1")
    EndIf
    If GUICtrlRead($aktioncombo) = "Digitalen Ausgang Ein/Ausschalten" Then
    $probs = GUICtrlCreateGroup("Einstellungen für Ausgang festlegen", 8, 32, 233, 121)
    $outputlabel = GUICtrlCreateLabel("Ausgang:",8,24,49,17)
    $outputcombo = GUICtrlCreateCombo("",64,24,153,17, $CBS_DROPDOWNLIST)
    $inisection = IniReadSection($ini, "inputsandoutputs")
    For $i = 1 To $inisection[0][0]
    If $inisection[$i][1] Then GUICtrlSetData($outputcombo, $inisection[$i][0])
    Next
    $valueoutput = GUICtrlCreateLabel("Wert:",8,56,30,17)
    $onoutput = GUICtrlCreateRadio("Einschalten",32,72,81,17,$BS_AUTORADIOBUTTON)
    EndIf
    EndSwitch
    WEnd

    [/autoit]

    Wenn nicht bitte genauer beschreiben und das ganze drum rum ruhig weglassen, das verwirrt nur^^

    Gruß
    Schnitzel

  • Ich will doch nur wissen, wie eine Combobox die ausgewählten Checkboxen (also mit IniRead, denn er schreibt das ja in die ini) anzeigt.


    Hallo button421, dann hänge doch bitte die INI Datei an. Idealerweise beschreibst du auch welche CheckBoxen dadurch gesetzt werden sollen (Oder ScrennShot manuell markiert),

    mfg (Auto)Bert

  • Hallo button421, dann hänge doch bitte die INI Datei an.

    Die ini wird erstellt wenn du eine der checkboxen anklickst.

    Idealerweise beschreibst du auch welche CheckBoxen dadurch gesetzt werden sollen (Oder ScrennShot manuell markiert),

    Zitat

    "Ausgang Ein/Ausschalten" bei "Aktion hinzufügen"


    durch das Auswählen von Ausgang Ein/Ausschalten wird eine Combo erstellt. und um die gehts ;)

  • Hallo button421,

    mir ist aufgefallen, dass sowwohl in deiner als auch in Schnitzel 's Version sich das Fenster für die Aktionen nicht separat schliessen lässt. Desweiteren ist es sinnvoll die Chechboxen für Ein- und Ausgänge in Arrays zu verwalten. Hier das angepasste Skript, Schnitzels-Änderuung ist eingebaut, ich hoffe dass meine Änderungen das Schreiben in die Ini betreffend nicht schädlich sind:

    Spoiler anzeigen
    [autoit]

    #region includes ;########################
    ;#include <k8055udf.au3>
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiStatusBar.au3>
    #include <ListViewConstants.au3>
    #include <ComboConstants.au3>
    #endregion includes ;########################
    ;##########################################
    Global $adressebin = ""
    Global $aktion = "Programm erfolgreich gestartet"
    Global $ini = @ScriptDir & "\logdatei.ini"
    ;~ Global $inputsoutputsini = IniRead($ini,"inputsandoutputs",Default,"1")
    IniDelete($ini, "log")
    IniWrite($ini, "log", "Startdaten", @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & "-Datum:" & @MDAY & "." & @MON & "." & @YEAR)
    #region ### START Verbindungsform ### Form=
    $idfrmConnect = GUICreate("Verbindung", 184, 100, 190, 126, -1, BitOR($WS_EX_TOOLWINDOW, $WS_EX_WINDOWEDGE))
    $SK5 = GUICtrlCreateCheckbox("SK5", 24, 16, 41, 17)
    $SK6 = GUICtrlCreateCheckbox("SK6", 128, 16, 41, 17)
    $Adresse = GUICtrlCreateGroup("Adresse", 8, 0, 169, 41)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateLabel("<---------------->", 64, 16, 64, 17)
    $Progress1 = GUICtrlCreateProgress(0, 80, 182, 17)
    $mitboardverbinden = GUICtrlCreateButton("Mit K8055 Board verbinden", 8, 48, 171, 25, $WS_GROUP)
    GUISetState(@SW_HIDE)
    #endregion ### START Verbindungsform ### Form=
    ;##########################################
    #region ### START Hauptform ### Form=c:\users\jonathan verbeek\desktop\k8055 programmer\hauptform.kxf
    Dim $idDigInp[6] ; nimmt die ID's der Checkboxen auf 0 ist SonderFall (Summe der gesetzten Inputs)
    Dim $idDigOut[9] ; nimmt die ID's der Checkboxen auf 0 ist SonderFall (Summe der gesetzten Outputs)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $idfrmMain = GUICreate("K8055 Board Programmer Basicpack - created by button421", 519, 412, 187, 121)
    $statusleiste = _GUICtrlStatusBar_Create($idfrmMain)
    Dim $statusleiste_PartsWidth[2] = [439, -1]
    _GUICtrlStatusBar_SetParts($statusleiste, $statusleiste_PartsWidth)
    _GUICtrlStatusBar_SetText($statusleiste, $aktion, 0)
    _GUICtrlStatusBar_SetText($statusleiste, "Verbunden", 1)
    $DigitaleEingaenge = GUICtrlCreateGroup("Digitale Eingänge", 8, 0, 169, 41)
    For $i = 1 To 5
    $idDigInp[$i] = GUICtrlCreateCheckbox("I" & $i, -16 + 32 * $i, 16, 25, 17)
    Next
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $DigitaleAusgaenge = GUICtrlCreateGroup("Digitale Ausgänge", 184, 0, 329, 41)
    For $i = 1 To 8
    $idDigOut[$i] = GUICtrlCreateCheckbox("O" & $i, 152 + $i * 40, 16, 33, 17)
    Next
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $ListView1 = GUICtrlCreateListView("Aktionen", 8, 48, 506, 310)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 502)
    $addaktion = GUICtrlCreateButton("Aktion hinzufügen", 8, 360, 107, 25, $WS_GROUP)
    $delaktion = GUICtrlCreateButton("Aktion löschen", 120, 360, 91, 25, $WS_GROUP)
    $anleitung = GUICtrlCreateButton("Anleitung für Experimente", 216, 360, 131, 25, $WS_GROUP)
    $hilfe = GUICtrlCreateButton("Hilfe und Info", 352, 360, 75, 25, $WS_GROUP)
    $beenden = GUICtrlCreateButton("Beenden", 432, 360, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    #cs funktioniert nur wenn die Werte jeweils nur in einem Iniwert gespeichert werden
    $idDigInp[0] = IniRead($ini, "inputsandoutputs", "Inp", 0)
    ConsoleWrite("Einlesen Input" & $idDigInp[0] & @CRLF) ;nur zum Verständnis kann auskommentiert werden

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To 5
    If BitAND(2 ^ ($i - 1), $idDigInp[0]) = 2 ^ ($i - 1) Then
    #cs prüfen ob die entsprechenden Bits gesetzt sind
    "i1" steht für 2^0 also 1
    "i2" steht für 2^1 also 2
    "i3" steht für 2^2 also 4 (2*2)
    "i4" steht für 2^3 also 8 (2*2*2)
    "i5" steht für 2^4 also 16
    wenn 1 , 2 und 4 gesetzt kommt 11, heraus alle gesetzt = 31
    #ce
    GUICtrlSetState($idDigInp[$i], $GUI_CHECKED)
    ConsoleWrite("I" & $i & "= 1" & @CRLF)
    Else
    GUICtrlSetState($idDigInp[$i], $GUI_UNCHECKED)
    ConsoleWrite("O" & $i & "= 0" & @CRLF)
    EndIf
    Next

    [/autoit] [autoit][/autoit] [autoit]

    $idDigOut[0] = IniRead($ini, "inputsandoutputs", "Out", 0)
    ConsoleWrite("Einlesen Output" & $idDigOut[0] & @CRLF) ;nur zum Verständnis kann auskommentiert werden
    For $i = 1 To 8
    If BitAND(2 ^ ($i - 1), $idDigOut[0]) = 2 ^ ($i - 1) Then
    GUICtrlSetState($idDigOut[$i], $GUI_CHECKED)
    ConsoleWrite("i" & $i & "= 1" & @CRLF)
    Else
    GUICtrlSetState($idDigOut[$i], $GUI_UNCHECKED)
    ConsoleWrite("i" & $i & "= 0" & @CRLF)
    EndIf
    Next
    #ce

    [/autoit] [autoit][/autoit] [autoit]

    #endregion ### START Hauptform ### Form=c:\users\jonathan verbeek\desktop\k8055 programmer\hauptform.kxf
    ;#######################################
    #region ### START Aktion hinzufügen ### Form=
    $idfrmAction = GUICreate("Aktion hinzufügen", 246, 187, 192, 124, -1, BitOR($WS_EX_TOOLWINDOW, $WS_EX_WINDOWEDGE))
    $Aktionlabel = GUICtrlCreateLabel("Aktion:", 8, 8, 37, 17)
    $aktioncombo = GUICtrlCreateCombo("", 48, 8, 193, 25, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL))
    GUICtrlSetData(-1, "Meldung anzeigen|Digitalen Ausgang ein/ausschalten|Abfrage ob Digitaler Eingang ein/aus|Wert für 7-Segment Display festlegen")
    $probs = GUICtrlCreateGroup("Einstellungen für Aktion festlegen", 8, 32, 233, 121)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $cancelactionadd = GUICtrlCreateButton("Abbrechen", 168, 160, 75, 25, $WS_GROUP)
    $okactionadd = GUICtrlCreateButton("OK", 88, 160, 75, 25, $WS_GROUP)
    GUISetState(@SW_HIDE)
    #endregion ### START Aktion hinzufügen ### Form=
    ;#######################################
    While 1
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[1]
    Case $idfrmConnect
    Switch $nMsg[0]
    Case -3
    GUISetState(@SW_HIDE, $idfrmConnect)
    Case $SK5
    If BitAND(GUICtrlRead($SK5), $GUI_CHECKED) Then
    $adressebin = "SK5/"
    EndIf
    Case $SK6
    If BitAND(GUICtrlRead($SK6), $GUI_CHECKED) Then
    $adressebin = "SK6/"
    EndIf
    Case $mitboardverbinden
    If GUICtrlRead($adressebin) = "SK5/SK6/" Then
    ;USB_DLLOpen()
    ;initial_board(0)
    GUICtrlSetState($Progress1, 100)
    MsgBox(64, "Info", "Mit Board verbunden!")
    GUISetState(@SW_SHOW, $idfrmMain)
    GUISetState(@SW_HIDE, $idfrmConnect)
    ElseIf GUICtrlRead($adressebin) = "SK6/" Then
    ;USB_DLLOpen()
    ;initial_board(1)
    GUICtrlSetState($Progress1, 100)
    MsgBox(64, "Info", "Mit Board verbunden!")
    GUISetState(@SW_SHOW, $idfrmMain)
    GUISetState(@SW_HIDE, $idfrmConnect)
    ElseIf GUICtrlRead($adressebin) = "SK5/" Then
    ;USB_DLLOpen()
    ;initial_board(2)
    GUICtrlSetState($Progress1, 100)
    MsgBox(64, "Info", "Mit Board verbunden!")
    GUISetState(@SW_SHOW, $idfrmMain)
    GUISetState(@SW_HIDE, $idfrmConnect)
    Else
    ;USB_DLLOpen()
    ;initial_board(3)
    GUICtrlSetState($Progress1, 100)
    MsgBox(64, "Info", "Mit Board verbunden!")
    GUISetState(@SW_SHOW, $idfrmMain)
    GUISetState(@SW_HIDE, $idfrmConnect)
    EndIf
    EndSwitch
    Case $idfrmMain
    Switch $nMsg[0]
    Case -3, $beenden
    Exit
    Case $idDigInp[1], $idDigInp[2], $idDigInp[3], $idDigInp[4], $idDigInp[5]
    $idDigInp[0] = 0
    For $i = 1 To 5
    If BitAND(GUICtrlRead($idDigInp[$i]), $GUI_CHECKED) Then
    $idDigInp[0] += 2 ^ ($i - 1)
    IniWrite($ini, "inputsandoutputs", "I" & $i, 1)
    ConsoleWrite("I" & $i & ": = 1")
    Else
    IniWrite($ini, "inputsandoutputs", "I" & $i, 0)
    ;IniDelete($ini, "inputsandoutputs", "I" & $i) ;evtl. obige Zeile löschen und diese nehmen
    ConsoleWrite("I" & $i & ": = 0")
    EndIf
    Next
    #cs dies in einem einzigen Ini-Eintrag zu speichern wäre eleganter
    ConsoleWrite($idDigInp[0] & @CRLF) ;nur zum Verständnis kann auskommentiert werden
    IniWrite("Inp : =" & $ini, "inputsandoutputs", "Inp", $idDigInp[0])
    #cs
    ist jetzt doppelt gemoppelt jeder einzelne Wert ist gesetzt, zusätzlich in Out Bitweise gesetzt
    "i1" steht für 2^0 also 1
    "i2" steht für 2^1 also 2
    "i3" steht für 2^2 also 4 (2*2)
    "i4" steht für 2^3 also 8 (2*2*2)
    "i5" steht für 2^4 also 16
    wenn 1 , 2 und 4 gesetzt kommt 11, heraus alle gesetzt = 31
    #ce
    #ce
    Case $idDigOut[1], $idDigOut[2], $idDigOut[3], $idDigOut[4], $idDigOut[5], $idDigOut[6], $idDigOut[7], $idDigOut[8]
    $idDigOut[0] = 0
    For $i = 1 To 8
    If BitAND(GUICtrlRead($idDigOut[$i]), $GUI_CHECKED) Then
    $idDigOut[0] += 2 ^ ($i - 1)
    IniWrite($ini, "inputsandoutputs", "O" & $i, 1) ;jetzt eigentlich überflüssig
    ConsoleWrite("O" & $i & ": = 1")
    Else
    IniWrite($ini, "inputsandoutputs", "O" & $i, 0) ;jetzt eigentlich überflüssig
    ;IniDelete($ini, "inputsandoutputs", "O" & $i) ;evtl. obige Zeile löschen und diese nehmen
    ConsoleWrite("O" & $i & ": = 0")
    EndIf
    Next
    #cs dies in einem einzigen Ini-Eintrag zu speichern wäre eleganter
    ConsoleWrite("Out : =" & $idDigOut[0] & @CRLF) ;nur zum Verständnis kann auskommentiert werden
    IniWrite($ini, "Inputsandoutputs", "Out", $idDigOut[0])
    #cs
    ist jetzt doppelt gemoppelt jeder einzelne Wert ist gesetzt, zusätzlich in Out Bitweise gesetzt
    "O1" steht für 2^0 also 1
    "O2" steht für 2^1 also 2
    "O3" steht für 2^2 also 4 (2*2)
    "O4" steht für 2^3 also 8 (2*2*2)
    "O5" steht für 2^4 also 2
    "O6" steht für 2^5 also 2
    "O7" steht für 2^6 also 2
    "08" steht f+r 2^7 also 128
    wenn 1 , 2 , 4 und 8 gesetzt kommt 139 heraus , wenn alle gestetzt sind 255
    #ce
    #ce
    Case $addaktion
    ConsoleWrite("Bin da " & @CRLF)
    GUISetState(@SW_SHOW, $idfrmAction)
    GUICtrlDelete($probs)
    EndSwitch
    Case $idfrmAction
    Switch $nMsg[0]
    Case -3, $cancelactionadd
    GUISetState(@SW_HIDE, $idfrmAction)
    Case $okactionadd
    GUISetState(@SW_HIDE, $idfrmAction)
    Case $aktioncombo
    If GUICtrlRead($aktioncombo) = "Meldung anzeigen" Then
    $probs = GUICtrlCreateGroup("Einstellungen für Meldung festlegen", 8, 32, 233, 121)
    $title = GUICtrlCreateInput("Titel der Meldung", 17, 45, 217, 21)
    $text = GUICtrlCreateInput("Text der Meldung", 17, 70, 217, 73)
    IniWrite($ini, "aktion", "Msg", "1")
    EndIf
    If GUICtrlRead($aktioncombo) = "Digitalen Ausgang Ein/Ausschalten" Then
    $probs = GUICtrlCreateGroup("Einstellungen für Ausgang festlegen", 8, 32, 233, 121)
    $outputlabel = GUICtrlCreateLabel("Ausgang:", 8, 24, 49, 17)
    $outputcombo = GUICtrlCreateCombo("", 64, 24, 153, 17, $CBS_DROPDOWNLIST)
    $inisection = IniReadSection($ini, "inputsandoutputs")
    For $i = 1 To $inisection[0][0]
    If $inisection[$i][1] Then GUICtrlSetData($outputcombo, $inisection[$i][0])
    Next
    $valueoutput = GUICtrlCreateLabel("Wert:", 8, 56, 30, 17)
    $onoutput = GUICtrlCreateRadio("Einschalten", 32, 72, 81, 17, $BS_AUTORADIOBUTTON)
    EndIf
    EndSwitch
    EndSwitch
    WEnd

    [/autoit]

    Das Projekt klinkt interessant, viel Erfolg damit

    Edit: wenn di die UDF so abänderst sparst du dir minimal Zeit:

    [autoit]

    Func ReadDigitalChannel($address, $sellect)
    $wert = ReadAllDigital($address)

    [/autoit][autoit][/autoit][autoit]

    ;MsgBox(0,"",$alldigit[0] & " " & $wert)
    If BitAND(2 ^ ($sellect - 1), $wert) = 2 ^ ($sellect - 1) Then
    Return =1
    Else
    Return =0
    EndIf
    EndFunc ;==>ReadDigitalChannel
    ;----------------------------------------------------------------------------

    [/autoit]

    so sollte es üblicherweise auch gehen wenn $alldigit ein Array[6] ist und $alldigit[1]..[$alldigit[5] jeweils den wert 1 oder 0 für den jeweiligen Channel je nach Zustand hat. Aber ich kenne die Dokmentation der DLL icht:

    [autoit]

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

    [/autoit]


    was hast du dir unter Aktionen für Funktionen vorgestellt, etwas eine Art Befehlssätze, die zeilenweise abgearbeitet werden

    mfg (Auto)Bert

    Einmal editiert, zuletzt von AutoBert (10. August 2010 um 21:04)

  • Tut mir leid, das ich mich nochmal melde, aber bei Schnitzel Skript kommt ein Fehler:

    >"D:\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "C:\Users\Jonathan Verbeek\Desktop\K8055 Programmer\k8055 Programmer RELEASED.au3" /autoit3dir "C:\Program Files\AutoIt3" /UserParams
    +>17:31:58 Starting AutoIt3Wrapper v.2.0.1.24 Environment(Language:0407 Keyboard:00000407 OS:WIN_VISTA/Service Pack 2 CPU:X64 OS:X86)
    >Running AU3Check (1.54.19.0) fromD:\AutoIt3
    +>17:31:59 AU3Check ended.rc:0
    >Running:(3.3.6.1)D:\AutoIt3\autoit3.exe "C:\Users\Jonathan Verbeek\Desktop\K8055 Programmer\k8055 Programmer RELEASED.au3"
    C:\Users\Jonathan Verbeek\Desktop\K8055 Programmer\k8055 Programmer RELEASED.au3 (238 :) ==> Subscript used with non-Array variable.:
    For $i = 1 To $inisection[0][0]
    For $i = 1 To $inisection^ ERROR
    ->17:32:03 AutoIT3.exe ended.rc:1
    >Exit code: 1 Time: 5.352

    Was ist falsch, was muss ich ändern?

    Meine fertigen Projekte:
    VirtualCash
    Monopoly Digital

    Daran arbeite ich gerade:
    Einem Skript, womit man ohne Programmierkentisse eigene Programme machen kann (habe ich selber früher gesucht :D ) Stand: ||||||||||||||||||||||||| 6%

  • Subscript used with non-Array variable.:
    For $i = 1 To $inisection[0][0]

    Da hast du wohl eim Problem beim lesen der ini.
    Entweder passt der Pfad nicht den du angegeben hast, oder du versuchst eine leere Section auszulesen.

    Gruß
    Schnitzel