1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Flitzpiepe84

Beiträge von Flitzpiepe84

  • B-Day

    • Flitzpiepe84
    • 18. Januar 2014 um 11:04

    alles Gute zum Geburtstag und was du dir sonst so wünschst...

  • Ermitteln des Max und Min Wertes aus *.csv

    • Flitzpiepe84
    • 10. Januar 2014 um 19:07

    okay, jetzt macht es "Klick" bei mir :D

    Vielen Dank für Lösung und Erklärung

  • Ermitteln des Max und Min Wertes aus *.csv

    • Flitzpiepe84
    • 10. Januar 2014 um 18:21

    ausprobiert und siehe da, es löst mein Problem wie von selbst. Jetzt ist zwar mein Bug weg, aber ich weiß trotzdem nicht so richtig warum das ohne das Number() nicht korrekt funktioniert hat.

    Bitte mal um kurze Erklärung warum ohne diese Formatierug zB. 9.40 plötzlich größer wie 36.00 ist. Beziehungsweise wo ich das nachlesen kann...

  • Ermitteln des Max und Min Wertes aus *.csv

    • Flitzpiepe84
    • 9. Januar 2014 um 21:33

    Ich lasse aus einer csv-Datei mir den Inhalt in ein Array einlesen, dieses splitte ich dann zeilenweise um dann zu ermitteln ob einer dieser Werte größer bzw kleiner als der im vorherigen Array ist.

    Funktioniert soweit schon, nur hab ich eine "Spalte" in der csv, wo die Werte von etwas 8,00 bis etwa 40,00 hin und her pendeln. Habe ich beim Max-Wert zB. 24,5 und einer der folgenden Werte ist plötzlich unter 10 dann wird mir dieser kurioserweise plötzlich als Maxwert angezeigt.
    Und mein Min-Wert geht nie unter 10,00 obwohl es niedrigere Werte gibt ?(

    Spoiler anzeigen
    [autoit]

    If $iWert = 0 Then
    for $iW = 1 to 6 Step 1
    $temp_Max[$iW] = StringReplace($Splitwert[$iW+2], ",", ".")
    $temp_Min[$iW] = StringReplace($Splitwert[$iW+2], ",", ".")
    GUICtrlSetData($MaxWert[$iW], $temp_Max[$iW]) ; Setzen des ersten Max-Wertes in die GUI aus dem Logfile ; für Ermittlung von höchsten Wert im Logfile
    GUICtrlSetData($MinWert[$iW], $temp_Min[$iW]) ; Setzen des ersten Min-Wertes in die GUI aus dem Logfile ; für Ermittlung von niedrigsten Wert im Logfile
    Next
    $iWert =1
    EndIf

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

    for $iW = 1 to 6 Step 1
    $Zwischenwert[$iW] = ($Zwischenwert[$iW] + $SplitWert[$iW+2]) ; Zwischenwert für Mittelwertbildung
    If StringReplace($Splitwert[$iW+2], ",", ".") > GUICtrlRead($MaxWert[$iW]) Then ; Ermittelung ob Wert größer wie zuletzt ermittelte höchste Wert
    $temp_Max[$iW] = StringReplace($Splitwert[$iW+2], ",", ".")
    GUICtrlSetData($MaxWert[$iW], $temp_Max[$iW]) ; Setzen des neuen höchsten Wertes
    EndIf
    If StringReplace($Splitwert[$iW+2], ",", ".") < GUICtrlRead($MinWert[$iW]) Then ; Ermittelung ob Wert kleiner wie zuletzt ermittelte niedrigste Wert
    $temp_Min[$iW] = StringReplace($Splitwert[$iW+2], ",", ".")
    GUICtrlSetData($MinWert[$iW], $temp_Min[$iW]) ; Setzen des neuen niedrigsten Wertes
    EndIf

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

    Next

    [/autoit]

    das ganze läuft dann in einer weiteren Schleife von 0 bis 720

    Was hab ich hier übersehen bzw. wo ist der Grund für diese Kuriosität?
    Schon mal danke fürs Drüberschauen und Helfen.

  • Farbwerte aus Textdatei

    • Flitzpiepe84
    • 4. Januar 2014 um 19:30

    hab es gleich mal geändert und ausprobiert. Und siehe da, es werden beim Aufklappen die jeweiligen Farben angezeigt. Beim Überfahren werden diese aber, wie du schon geschrieben hast, wieder Schwarz.
    Gebe ich den Index bzw. den dazu gesetzten Parameter zum gewählten Control aus, dann stimmt aber die Zuordnung, nur das Bild ist schwarz. 8|

    Edit: So eine Nacht drüber geschlafen, heute nochmal das Script aus der Hilfe angeschaut und den Fehler gefunden. In Zeile 21 war noch ein Paramter-Fehler. Paramter 4 erhielt in der Schleife immer den Wert 0. Dies ist aber falsch, dieser muss gegen $i-1 ersetzt werden, damit beim Überfahren bzw markieren auch das richtige Image angezeigt wird.

    Das korrekte Script sieht dann wie folgt aus:

    Spoiler anzeigen
    [autoit]


    #include <GuiComboBoxEx.au3>
    #include <GuiImageList.au3>
    #include <GuiConstantsEx.au3>
    #include <file.au3>
    ;~ #include <debugger.au3>

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

    Opt("GUIOnEventMode", 1)
    Local $hGUI, $hImage, $hCombo, $aBuffer[16], $i

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

    $hGUI = GUICreate("ComboBoxEx Create Solid BitMap", 400, 300)
    $hCombo = _GUICtrlComboBoxEx_Create($hGUI, "", 2, 2, 394, 100)
    GUISetState()

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

    $hImage = _GUIImageList_Create(16, 16, 5, 3)
    _FileReadToArray (@ScriptDir&"\Colour.txt", $aBuffer)
    for $i= 1 To $aBuffer[0] Step 1
    $Colour = StringSplit ($aBuffer[$i], ";")
    _GUIImageList_Add($hImage, _GUICtrlComboBoxEx_CreateSolidBitMap ($hCombo, $Colour[1], 16, 16))
    _GUICtrlComboBoxEx_SetImageList($hCombo, $hImage)

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

    _GUICtrlComboBoxEx_AddString($hCombo, $Colour[1], $i-1, $i-1)
    Next

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

    GUISetState()

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

    While 1
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Events")
    GUISetOnEvent($GUI_EVENT_MINIMIZE, "_Events")
    GUISetOnEvent($GUI_EVENT_RESTORE, "_Events")

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

    Sleep (10)

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

    WEnd

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

    Func _Events() ; hier sind die Events der GUI:
    ; Fenster Schliessen, Minimieren, Maximieren,

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

    Select
    Case @GUI_CtrlId = $GUI_EVENT_CLOSE
    Exit

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

    Case @GUI_CtrlId = $GUI_EVENT_MINIMIZE

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

    Case @GUI_CtrlId = $GUI_EVENT_RESTORE

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

    EndSelect

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

    EndFunc

    [/autoit]
  • Farbwerte aus Textdatei

    • Flitzpiepe84
    • 4. Januar 2014 um 16:18

    Ich habe eine Kombobox mit_GUICtrlComboBoxEx_Create erstellt und will über _GUIImageList_Create eine Liste zur Auswahl der gewünschten Farbe erstellen.
    Kombobox und Liste funktioniert soweit, nur die Darstellung klappt nicht, alles ist Schwarz. Die Werte werden aber korrekt aus der Datei ausgelesen und auch in der Liste als "Beschriftung" dargestellt.

    Ich komm irgendwie nicht dahinter woran das jetzt liegt... ?(

    Spoiler anzeigen
    [autoit]

    #include <GuiComboBoxEx.au3>
    #include <GuiImageList.au3>
    #include <GuiConstantsEx.au3>
    #include <file.au3>
    ;~ #include <debugger.au3>

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

    Opt("GUIOnEventMode", 1)
    Local $hGUI, $hImage, $hCombo, $aBuffer[16], $i

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

    $hGUI = GUICreate("ComboBoxEx Create Solid BitMap", 400, 300)
    $hCombo = _GUICtrlComboBoxEx_Create($hGUI, "", 2, 2, 394, 100)
    GUISetState()

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

    $hImage = _GUIImageList_Create(16, 16, 5, 3)
    _FileReadToArray (@ScriptDir&"\Colour.txt", $aBuffer)
    for $i= 1 To $aBuffer[0] Step 1
    $Colour = StringSplit ($aBuffer[$i], ";")
    _GUIImageList_Add($hImage, _GUICtrlComboBoxEx_CreateSolidBitMap ($hCombo, $Colour[1], 16, 16))
    _GUICtrlComboBoxEx_SetImageList($hCombo, $hImage)

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

    _GUICtrlComboBoxEx_AddString($hCombo, $Colour[1], 0, 0)
    Next

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

    GUISetState()

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

    While 1
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Events")
    GUISetOnEvent($GUI_EVENT_MINIMIZE, "_Events")
    GUISetOnEvent($GUI_EVENT_RESTORE, "_Events")

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

    Sleep (10)

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

    WEnd

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

    Func _Events() ; hier sind die Events der GUI:
    ; Fenster Schliessen, Minimieren, Maximieren,

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

    Select
    Case @GUI_CtrlId = $GUI_EVENT_CLOSE
    Exit

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

    Case @GUI_CtrlId = $GUI_EVENT_MINIMIZE

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

    Case @GUI_CtrlId = $GUI_EVENT_RESTORE

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

    EndSelect

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

    EndFunc

    [/autoit]

    die Textdatei mit den Farbwerten liegt im Anhang.


    Vielleicht kann mir ja jemand einen Tip geben oder einen Hinweis, was ich übersehen bzw falsch gemacht habe... Danke schon mal im Vorraus

    Dateien

    combobox-test.au3 1,21 kB – 364 Downloads colour.txt 250 Byte – 440 Downloads
  • Child-GUI Objekte wandern mit der Scrollbar

    • Flitzpiepe84
    • 3. Januar 2014 um 15:07

    Das Problem konnte ich jetzt nach vielem Hin und Her, Nachlesen sowie Probieren selbst in den Griff kriegen. Ursache war, dass die von GDI+ erzeugte Fläche nur absolut zur ChildGUI angezeigt wurde. Beim Scrollen muss der Bezugspunkt sich aber relativ verhalten. Dazu musste ich die Position der Scrollbar ermitteln und um wieviele Pixel sich der GUI-Inhalt verschoben hat.

  • Child-GUI Objekte wandern mit der Scrollbar

    • Flitzpiepe84
    • 18. Dezember 2013 um 21:35

    Ich habe eine GUI in der eine weitere GUI (Child) als "Fenster" mit Scrollbar eingebettet ist. Darin ist mein MultiGraph abgebildet, der mir Logfiles am Ende graphisch wiedergeben soll. Da das Programm auf unterschiedlichen Rechnern und Monitoren laufen wird/soll, benötige ich eine flexible GUI in der Anzeige-Größe. Deshalb hat das Child-GUI die Scrollbar, weil der MultiGraph in der horizontalen Auflösung sonst nicht immer vollständig angezeigt wird. Die Skalierung der GUI funktioniert, aber wenn ich die Scrollbar bewege, dann wandert meine Zeichenfläche vom MultiGraph immer mit, der Rest "unten drunter" (Achsbezeichnung und gezeichnete Achsen) bleiben stehen). Was könnte hier der Fehler sein, bzw wie kann ich das beheben? ?(

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <mod_MultiGraph.au3>
    #include <Date.au3>
    #include <file.au3>
    #include <GUIScrollbars_Ex.au3>

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

    Opt("GUIOnEventMode", 1)

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

    $hGUI= GUICreate("Diagramm-Tool", 1024, 768, -1, -1, BitOR($GUI_SS_DEFAULT_GUI,$WS_MAXIMIZEBOX,$WS_SIZEBOX,$WS_THICKFRAME,$WS_MAXIMIZE,$WS_TABSTOP))
    GUISetState (@SW_MAXIMIZE)

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

    Local $size = WinGetClientSize($hGUI)

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

    ;~ Bedien- & Anzeige-Elemente erzeugen
    $OpenLogfile = GUICtrlCreateButton("Logfile öffnen", 8, $size[1]-75, 80, 20)
    $PlotLogfile = GUICtrlCreateButton("Logfile plotten", 90, $size[1]-75, 80, 20)
    $LabelOpenLogfile = GUICtrlCreateLabel("geöffnetes Logfile:", 8, $size[1]-50, 90, 20, $SS_CENTERIMAGE)
    $ViewOpenLogfile= GUICtrlCreateInput("", 100, $size[1]-50, 200, 20, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER))
    $LabelZeilenAnzahl = GUICtrlCreateLabel("Logeinträge:", 8, $size[1]-25, 90, 20, $SS_CENTERIMAGE)
    $ZeilenAnzahl = GUICtrlCreateInput("0", 100, $size[1]-25, 50, 20, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER))

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

    $GUI_Graph = GUICreate("", $size[0]-25, $size[1]-100, 10, 10, $WS_CHILD, $WS_EX_CLIENTEDGE, $hGUI)
    $Label_Graph = GUICtrlCreateLabel("", $size[0]-25, $size[1]-100, 10, 10)

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

    ;~ Scrollbar erzeugen
    _GUIScrollbars_Generate($GUI_Graph, 1575, 700)

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

    ;~ Multigraph erzeugen
    _MG_Graph_entfernen(1)
    _MG_Graph_erstellen (1, $GUI_Graph, 50, 25, 1440, 600)
    _MG_Graph_optionen_position (1, $GUI_Graph, 50, 25, 1440, 600)

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

    _MG_Graph_optionen_allgemein (1, 720, -20, 40, 22.5, 90, 0xFFFFFF, 2)
    _MG_Graph_optionen_Rahmen (1, True, 0x000000, 1)
    _MG_Graph_optionen_Hauptgitterlinien (1, 1, 20, 20, 1,0x000000, 190)
    _MG_Graph_optionen_Hilfsgitterlinien (1, 1, 10, 10, 1,0x000000, 220)

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

    _MG_Graph_optionen_Plottmodus (1, 0, 0, 1, True)

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

    _MG_Graph_Achse_links (1, True, -20, 40, 0, "°C", 0x000000, Default, 8, 70, 0.5)
    _MG_Graph_Achse_rechts (1, True, 22.5, 90.00, 2, " °", 0x000000, Default, 8, 70, 5)
    _MG_Graph_Achse_unten (1, True, 0, 24, 2, "Uhrzeit", 0x000000, Default, 8, 27, 2)

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

    _MG_Kanal_optionen (1, 1, 1, 1, 0x0044FF, 0)
    _MG_Kanal_optionen (1, 2, 1, 1, 0xFF6600, 0)
    _MG_Kanal_optionen (1, 3, 1, 2, 0xDAA520, 0)
    _MG_Kanal_optionen (1, 4, 1, 1, 0x8B0000, 0)
    _MG_Kanal_optionen (1, 5, 1, 1, 0x008000, 0)
    _MG_Kanal_optionen (1, 6, 1, 1, 0x6A5ACD, 0)
    _MG_Kanal_optionen (1, 7, 1, 3, 0x7FFF00, 0)
    _MG_Kanal_optionen (1, 8, 1, 3, 0xFF4500, 0)

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

    _MG_Graph_initialisieren(1)
    GUISetState()
    GUICtrlSetResizing($GUI_Graph, $GUI_DOCKALL)

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

    ; Zur urprünglichen GUI wechseln
    GUISwitch($hGUI)

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

    GUISetState(@SW_SHOW)

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

    Global $plot = 0
    Global $aBuffer = 0

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

    While 1
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Events")
    GUISetOnEvent($GUI_EVENT_MINIMIZE, "_Events")
    GUISetOnEvent($GUI_EVENT_RESTORE, "_Events")
    GUICtrlSetOnEvent($OpenLogfile, "_OpenLogfile")
    GUICtrlSetOnEvent($PlotLogfile, "_plot")
    _MG_Graph_updaten (1)

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

    Sleep (10)
    WEnd

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

    Func _Events() ; hier sind die Events der GUI:
    ; Fenster Schliessen, Minimieren, Maximieren,

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

    Select
    Case @GUI_CtrlId = $GUI_EVENT_CLOSE
    Exit

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

    Case @GUI_CtrlId = $GUI_EVENT_MINIMIZE

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

    Case @GUI_CtrlId = $GUI_EVENT_RESTORE

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

    EndSelect

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

    EndFunc

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

    ;~ Öffnen des Logfiles, ermitteln der Zeilenanzahl und Anzeige des gewählten Logfiles
    Func _OpenLogfile()
    $Logfile = FileOpenDialog ("Logfile auswählen", @ScriptDir&"\Archiv_Logimat", "(*.csv)", 1 + 4)
    If $Logfile = "" Then
    MsgBox (0, "Info", "Kein Logfile ausgewählt")
    Else
    _FileReadToArray ($Logfile, $aBuffer)
    EndIf
    GUICtrlSetData ($ViewOpenLogfile, $Logfile)
    GUICtrlSetData ($ZeilenAnzahl, $aBuffer[0])
    EndFunc

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

    ;~ Zeilenweises Aufsplitten der Werte und anschließendes Plotten in den MultiGraph
    Func _plot()
    $SplitWert = StringSplit($aBuffer[2], ";")
    _MG_Graph_Clear (1)
    for $i = 2 to ($aBuffer[0]) Step 1
    $SplitWert = StringSplit($aBuffer[$i], ";")
    _MG_Wert_setzen_Y1 (1, 1, StringReplace($Splitwert[3], ",", "."))
    _MG_Wert_setzen_Y1 (1, 2, StringReplace($Splitwert[4], ",", "."))
    _MG_Wert_setzen_Y1 (1, 3, StringReplace($Splitwert[5], ",", "."))
    _MG_Wert_setzen_Y1 (1, 4, StringReplace($Splitwert[6], ",", "."))
    _MG_Wert_setzen_Y1 (1, 5, StringReplace($Splitwert[7], ",", "."))
    _MG_Wert_setzen_Y1 (1, 6, StringReplace($Splitwert[8], ",", "."))
    _MG_Wert_setzen_Y2 (1, 7, StringReplace($Splitwert[9], ",", "."))
    _MG_Wert_setzen_Y2 (1, 8, StringReplace($Splitwert[10], ",", "."))
    _MG_Graph_plotten (1)
    Next

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

    EndFunc

    [/autoit]

    das vollständige Script , die benötigten UDF´s und ein paar Logfiles sind im Anhang.

    Schon mal recht herzlichen Dank für die Hilfe im Vorraus.

    Dateien

    Diagramm-Tool.rar 47,29 kB – 423 Downloads
  • StringSplit-Problem

    • Flitzpiepe84
    • 13. Dezember 2013 um 21:14

    Habe ich schon gesehen und auch ausprobiert. Funktionierte aber nicht ohne Anpassung des restlichen (schon vorhandenen) Codes, da war das mit dem StringFormat die einfachere Lösung in dem Falle

  • StringSplit-Problem

    • Flitzpiepe84
    • 13. Dezember 2013 um 18:44

    Danke für den Gedanken-Anstoss :thumbup: das ich nicht immer eine Kommazahl herausbekomme
    Und Danke für die Ansätze zur Lösung.

    Hab es aber jetzt so gelöst, da komme ich ohne großes Rumgebastelt auf genau das was ich will... :D

    [autoit]


    Local $fWertUhrzeit = StringFormat("%." & $iNachkommastellen & "f", ($fWert/60))
    Local $fUhrzeitSplit = StringSplit($fWertUhrzeit, ".")
    $fUhrzeitStunde = $fUhrzeitSplit[1]
    $fUhrzeitMinute = Round($fUhrzeitSplit[2]*0.6)

    [/autoit]

    Damit wäre das Thema erledigt. Danke

  • StringSplit-Problem

    • Flitzpiepe84
    • 13. Dezember 2013 um 17:52

    Ich habe folgendes Problem mit dem StringSplit

    Ich möchte auf eine Graph-Skala in Zeit einteilen. Einteilung funktioniert schon.

    Dabei gebe ich als Zeitspanne 24 Stunden vor. Die lasse ich in einen Dezimalwert umrechnen für die Einteilung der Graphskala. Angezeigt werden soll aber in der GUI das Format hh:mm an der Skala. Soweit so gut.

    Lösungsversuch dazu sieht bisher so aus, gibt aber dann für den 2. Wert eine Fehlermeldung im Debugger.
    $fWert = 1440 oder kleiner

    [autoit]


    Local $fWertUhrzeit = ($fWert/60)
    Local $fUhrzeitSplit = StringSplit($fWertUhrzeit, ".")
    $fUhrzeitStunde = $fUhrzeitSplit[1]
    $fUhrzeitMinute = $fUhrzeitSplit[2]

    [/autoit]


    Woran liegt es, dass ich bei $fUhrzeitSplit[2] einen Fehler erhalte? ?(

  • Visualisierung für Logo 0BA7

    • Flitzpiepe84
    • 5. November 2013 um 23:56

    *Script aktualisiert auf v0.3 --> Änderungen siehe oben

  • Visualisierung für Logo 0BA7

    • Flitzpiepe84
    • 30. Oktober 2013 um 17:57

    Die Logo ist in der Lage mehrere TCP/IP-Verbindungen zu akzeptieren. Habe extra in den Einstellungen der Ethernet-Schnittstelle im Logosoft-Comfort nachgeschaut bzw. dies muss sowieso eingestellt werden, wenn ich ein Panel (Display zur Visualierung) anbinden will.
    Wenn ich aber parallel zu meinem Programm, die Online-Ansicht in der Logosoft-Comfort einschalte, dann crasht mein Programm wiederum nicht. Und in dem Moment sind 2 Verbindungen an der Logo aktiv. Funktioniert in der Art sogar von ein und dem selben PC. Daher war mein Gedanke, das ich im Script etwas vergessen oder falsch gemacht habe.

    die Tipps und Anregungen werde ich mit umsetzen, vorallem das _DaveInit() und die Sache mit dem _daveTCPDisconnect() werde ich bereinigen
    Ich dachte das mit dem _daveDeInit() muss gemacht werden, damit die .dll wieder freigegeben wird?
    Und zu dem Event-Modus muss ich mich erstmal schlau machen und reinlesen, das ist schließlich mein erstes Script :D


    Wie kann man eigentlich von der S7-200 die Analog Ein-/Ausgänge auslesen? In der Readme von libnodave ist das leider nicht dokumentiert. Die entsprechende Memory Area ist aber aufgeführt mit "daveAnaIn" für die S7-200 :?:

  • Visualisierung für Logo 0BA7

    • Flitzpiepe84
    • 29. Oktober 2013 um 18:42

    minx
    sorry, ich hatte den Spoiler-Button einfach nicht gefunden, ist aber jetzt bereinigt

  • Visualisierung für Logo 0BA7

    • Flitzpiepe84
    • 29. Oktober 2013 um 18:15

    Wie kann ich mich mit mehreren Programmen gleichzeitig zu einer
    Siemenssteuerung per TCP/IP verbinden, ohne das mir das Programm was
    zuletzt lief crasht?
    Jedesmal wenn ich mein Programm, welches ich Stück
    für Stück erweitere, starte und mit der PLC verbinde, dann crasht auf
    dem anderen PC das bisher laufende Programm.

    Und was muss ich anders machen, damit mir bei einen Verbindungsfehler (zb. fehlende Netzwerk-Verbindung, falsch eingestellte IP, ausgefallene PLC, ...) das Programm in der Statusbar "Verbindugsfehler anzeigt, der Connect-Button wieder auf Status enable und der Button für Disconnect auf disable gestellt wird.

  • Visualisierung für Logo 0BA7

    • Flitzpiepe84
    • 28. Oktober 2013 um 16:16

    Visualisierung für Logo 0BA7 / Ferndiagnose-Tool

    Hallo zusammen,

    ich arbeite derzeit an einem Projekt für die Visualisierung einer Siemens Logo 0BA7 um verschiedene Werte und die digitalen sowie analogen Ein-/Ausgänge auslesen zu können.
    Dabei greife ich auf die UDF libnodave.au3. von "funkey" zurück, welche ich erweitert habe.

    Ziel ist es in der GUI eine vollausgebaute Logo 0BA7 (24 digital Eingänge, 16 digital Ausgänge, 8 analog Eingänge, 2 analog Ausgänge) schematisch darzustellen und die jeweiligen Module, je nach Ausbau, an- bzw. abzuwählen. Je nachdem was dann ausgelesen werden soll, wird dann per TCP/IP von der Logo abgefragt und in der GUI dargestellt. Schnittstellenprotokoll ist TCP/IP für die S7-200.

    Ein Screen zur der bisherigen GUI habe ich angehängt, es fehlt hier aber noch die Möglichkeit zur An-/Abwahl der Zusatz-Module

    v0.3 (05.11.2013)
    - Script auf Event-Mode umgeschrieben (bessere Performance und Reaktion der Button-Anwahl)
    bekannte Bugs:
    - es ist bisher nicht möglich zwei Anwendungen im Netzwerk gleichzeitig laufen zu lassen (die zuletzt laufende Anwendung crasht)
    - die analogen Ein-/Ausgänge lassen sich momentan nicht lesen (in den Hilfe-Dateien von libnodave gibt es auch keinen sichtbaren Lösungsansatz für die analogen Ein-/Ausgänge der S7-200)

    v0.2 (nicht veröffentlicht)
    - mehrfache Verwendung von _daveInit() entfernt
    - Abfrage zum Verbindungsaufbau über @error realisiert
    bekannte Bugs:
    - es ist bisher nicht möglich zwei Anwendungen im Netzwerk gleichzeitig laufen zu lassen (die zuletzt laufende Anwendung crasht)
    - gelegentlich Crash/Freeze wenn Programm keine Logo mit der angebenen IP findet
    - die analogen Ein-/Ausgänge lassen sich momentan nicht lesen (in den Hilfe-Dateien von libnodave gibt es auch keinen sichtbaren Lösungsansatz für die analogen Ein-/Ausgänge der S7-200)

    v0.1
    - Connect zur PLC über TCP/IP
    - Auslesen des Grundmoduls (alle digitalen und analogen Ein-/Ausgänge sowie die in der Logo festgelegten VM´s für die Übertragung über Ethernet)
    - Anzeige der Werte in der GUI
    bekannte Bugs:
    - es ist bisher nicht möglich zwei Anwendungen im Netzwerk gleichzeitig laufen zu lassen (die zuletzt laufende Anwendung crasht)
    - gelegentlich Crash/Freeze wenn Programm keine Logo mit der angebenen IP findet
    - die analogen Ein-/Ausgänge lassen sich momentan nicht lesen (in den Hilfe-Dateien von libnodave gibt es auch keinen sichtbaren Lösungsansatz für die analogen Ein-/Ausgänge der S7-200)

    Spoiler anzeigen
    [autoit]


    ; #INDEX# =======================================================================================================================
    ; Title .........: GUI für Siemens Logo 0BA7 / Ferndiagnose-Tool
    ; AutoIt Version : 3.3.8.1
    ; Language ......: Deutsch
    ; Description ...: GUI für die Siemens Logo 0BA7
    ; - ermöglicht die visuelle Ansicht auf die digitalen und analogen Eingäng/Ausgänge sowie die im Logo-Programm festgelegten Werte für die Ethernet-Schnittstelle für eine Visualisierung
    ; - Verbindung zur PLC erfolgt ausschließlich über TCP/IP über eine frei einstellbare IP-Adresse
    ; - alle Zusatz-Module lassen sich an- und abwählen, je nachdem was verbaut wurde
    ; Author(s) .....: Flitzpiepe84
    ; Source(s) .....: libnodave.au3 (funkey)
    ; - von Flitzpiepe84 erweitert

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

    ; ===============================================================================================================================

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

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiStatusBar.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <libnodave.au3>
    #include <debugger.au3>

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

    Opt("GUIOnEventMode", 1)

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

    #Region ### START Koda GUI section ### Form=g:\gui für 0ba7\gui.kxf
    $Form1 = GUICreate("Visualisierung / Ferndiagnose für 0BA7", 1256, 663, -1, -1)
    $Group1 = GUICtrlCreateGroup("Logo 0BA7", 10, 80, 260, 520)
    $Group2 = GUICtrlCreateGroup("DI 1-8", 20, 100, 100, 230)
    $DI1 = GUICtrlCreateCheckbox("", 76, 124, 17, 17)
    $Label3 = GUICtrlCreateLabel("I 1", 36, 124, 16, 17, $SS_CENTERIMAGE)
    $DI2 = GUICtrlCreateCheckbox("", 76, 148, 17, 17)
    $Label4 = GUICtrlCreateLabel("I 2", 36, 148, 16, 17, $SS_CENTERIMAGE)
    $DI3 = GUICtrlCreateCheckbox("", 76, 172, 17, 17)
    $Label5 = GUICtrlCreateLabel("I 3", 36, 172, 16, 17, $SS_CENTERIMAGE)
    $DI4 = GUICtrlCreateCheckbox("", 76, 196, 17, 17)
    $Label6 = GUICtrlCreateLabel("I 4", 36, 196, 16, 17, $SS_CENTERIMAGE)
    $DI5 = GUICtrlCreateCheckbox("", 76, 220, 17, 17)
    $Label7 = GUICtrlCreateLabel("I 5", 36, 220, 16, 17, $SS_CENTERIMAGE)
    $DI6 = GUICtrlCreateCheckbox("", 76, 244, 17, 17)
    $Label8 = GUICtrlCreateLabel("I 6", 36, 244, 16, 17, $SS_CENTERIMAGE)
    $DI7 = GUICtrlCreateCheckbox("", 76, 268, 17, 17)
    $Label9 = GUICtrlCreateLabel("I 7", 36, 268, 16, 17, $SS_CENTERIMAGE)
    $DI8 = GUICtrlCreateCheckbox("", 76, 292, 17, 17)
    $Label10 = GUICtrlCreateLabel("I 8", 36, 292, 16, 17, $SS_CENTERIMAGE)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group3 = GUICtrlCreateGroup("DA 1-4", 18, 350, 100, 230)
    $DA1 = GUICtrlCreateCheckbox("", 74, 374, 17, 17)
    $Label27 = GUICtrlCreateLabel("Q 1", 34, 374, 21, 17, $SS_CENTERIMAGE)
    $DA2 = GUICtrlCreateCheckbox("", 74, 398, 17, 17)
    $Label28 = GUICtrlCreateLabel("Q 2", 34, 398, 21, 17, $SS_CENTERIMAGE)
    $DA3 = GUICtrlCreateCheckbox("", 74, 422, 17, 17)
    $Label29 = GUICtrlCreateLabel("Q 3", 34, 422, 21, 17, $SS_CENTERIMAGE)
    $DA4 = GUICtrlCreateCheckbox("", 74, 446, 17, 17)
    $Label30 = GUICtrlCreateLabel("Q 4", 34, 446, 21, 17, $SS_CENTERIMAGE)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group4 = GUICtrlCreateGroup("VM", 130, 260, 130, 320)
    $Label47 = GUICtrlCreateLabel("VM 0", 146, 284, 31, 17, $SS_CENTERIMAGE)
    $Label48 = GUICtrlCreateLabel("VM 2", 146, 308, 31, 17, $SS_CENTERIMAGE)
    $Label49 = GUICtrlCreateLabel("VM 4", 146, 332, 31, 17, $SS_CENTERIMAGE)
    $Label50 = GUICtrlCreateLabel("VM 6", 146, 356, 31, 17, $SS_CENTERIMAGE)
    $Label51 = GUICtrlCreateLabel("VM 8", 146, 380, 31, 17, $SS_CENTERIMAGE)
    $Label52 = GUICtrlCreateLabel("VM 10", 146, 404, 37, 17, $SS_CENTERIMAGE)
    $Label53 = GUICtrlCreateLabel("VM 12", 146, 428, 37, 17, $SS_CENTERIMAGE)
    $Label54 = GUICtrlCreateLabel("VM 14", 146, 452, 37, 17, $SS_CENTERIMAGE)
    $VM0 = GUICtrlCreateInput("0000", 186, 284, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_RIGHT))
    $VM2 = GUICtrlCreateInput("0000", 186, 308, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_RIGHT))
    $VM4 = GUICtrlCreateInput("0000", 186, 332, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_RIGHT))
    $VM6 = GUICtrlCreateInput("0000", 186, 356, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_RIGHT))
    $VM8 = GUICtrlCreateInput("0000", 186, 380, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_RIGHT))
    $VM10 = GUICtrlCreateInput("0000", 186, 404, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_RIGHT))
    $VM12 = GUICtrlCreateInput("0000", 186, 428, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_RIGHT))
    $VM14 = GUICtrlCreateInput("0000", 186, 452, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_RIGHT))
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group13 = GUICtrlCreateGroup("AI 1-4", 130, 100, 130, 140)
    $Label55 = GUICtrlCreateLabel("AI 1", 146, 124, 23, 17, $SS_CENTERIMAGE)
    $Label56 = GUICtrlCreateLabel("AI 2", 146, 148, 23, 17, $SS_CENTERIMAGE)
    $Label57 = GUICtrlCreateLabel("AI 3", 146, 172, 23, 17, $SS_CENTERIMAGE)
    $Label58 = GUICtrlCreateLabel("AI 4", 146, 196, 23, 17, $SS_CENTERIMAGE)
    $Input9 = GUICtrlCreateInput("0000", 186, 124, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_RIGHT))
    $Input10 = GUICtrlCreateInput("0000", 186, 148, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_RIGHT))
    $Input11 = GUICtrlCreateInput("0000", 186, 172, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_RIGHT))
    $Input12 = GUICtrlCreateInput("0000", 186, 196, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_RIGHT))
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group8 = GUICtrlCreateGroup("Digital-Erweiterung 1", 285, 80, 220, 520)
    $Group5 = GUICtrlCreateGroup("DI 9-16", 295, 100, 100, 230)
    $DI9 = GUICtrlCreateCheckbox("", 351, 124, 17, 17)
    $Label11 = GUICtrlCreateLabel("I 9", 311, 124, 16, 17, $SS_CENTERIMAGE)
    $DI10 = GUICtrlCreateCheckbox("", 351, 148, 17, 17)
    $Label12 = GUICtrlCreateLabel("I 10", 311, 148, 22, 17, $SS_CENTERIMAGE)
    $DI11 = GUICtrlCreateCheckbox("", 351, 172, 17, 17)
    $Label13 = GUICtrlCreateLabel("I 11", 311, 172, 22, 17, $SS_CENTERIMAGE)
    $DI12 = GUICtrlCreateCheckbox("", 351, 196, 17, 17)
    $Label14 = GUICtrlCreateLabel("I 12", 311, 196, 22, 17, $SS_CENTERIMAGE)
    $DI13 = GUICtrlCreateCheckbox("", 351, 220, 17, 17)
    $Label15 = GUICtrlCreateLabel("I 13", 311, 220, 22, 17, $SS_CENTERIMAGE)
    $DI14 = GUICtrlCreateCheckbox("", 351, 244, 17, 17)
    $Label16 = GUICtrlCreateLabel("I 14", 311, 244, 22, 17, $SS_CENTERIMAGE)
    $DI15 = GUICtrlCreateCheckbox("", 351, 268, 17, 17)
    $Label17 = GUICtrlCreateLabel("I 15", 311, 268, 22, 17, $SS_CENTERIMAGE)
    $DI16 = GUICtrlCreateCheckbox("", 351, 292, 17, 17)
    $Label18 = GUICtrlCreateLabel("I 16", 311, 292, 22, 17, $SS_CENTERIMAGE)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group6 = GUICtrlCreateGroup("DA 4-8", 295, 350, 100, 230)
    $DA5 = GUICtrlCreateCheckbox("", 351, 374, 17, 17)
    $Label31 = GUICtrlCreateLabel("Q 5", 311, 374, 21, 17, $SS_CENTERIMAGE)
    $DA6 = GUICtrlCreateCheckbox("", 351, 398, 17, 17)
    $Label32 = GUICtrlCreateLabel("Q 6", 311, 398, 21, 17, $SS_CENTERIMAGE)
    $DA7 = GUICtrlCreateCheckbox("", 351, 422, 17, 17)
    $Label33 = GUICtrlCreateLabel("Q 7", 311, 422, 21, 17, $SS_CENTERIMAGE)
    $DA8 = GUICtrlCreateCheckbox("", 351, 446, 17, 17)
    $Label34 = GUICtrlCreateLabel("Q 8", 311, 446, 21, 17, $SS_CENTERIMAGE)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group7 = GUICtrlCreateGroup("DA 9-12", 397, 350, 100, 230)
    $DA9 = GUICtrlCreateCheckbox("", 453, 374, 17, 17)
    $Label35 = GUICtrlCreateLabel("Q 9", 413, 374, 21, 17, $SS_CENTERIMAGE)
    $DA10 = GUICtrlCreateCheckbox("", 453, 398, 17, 17)
    $Label36 = GUICtrlCreateLabel("Q 10", 413, 398, 27, 17, $SS_CENTERIMAGE)
    $DA11 = GUICtrlCreateCheckbox("", 453, 422, 17, 17)
    $Label37 = GUICtrlCreateLabel("Q 11", 413, 422, 27, 17, $SS_CENTERIMAGE)
    $DA12 = GUICtrlCreateCheckbox("", 453, 446, 17, 17)
    $Label38 = GUICtrlCreateLabel("Q 12", 413, 446, 27, 17, $SS_CENTERIMAGE)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group9 = GUICtrlCreateGroup("Digital-Erweiterung 2", 520, 80, 230, 521)
    $Group10 = GUICtrlCreateGroup("DI 17-24", 528, 100, 96, 230)
    $DI17 = GUICtrlCreateCheckbox("", 584, 124, 17, 17)
    $Label19 = GUICtrlCreateLabel("I 17", 544, 124, 22, 17, $SS_CENTERIMAGE)
    $DI18 = GUICtrlCreateCheckbox("", 584, 148, 17, 17)
    $Label20 = GUICtrlCreateLabel("I 18", 544, 148, 22, 17, $SS_CENTERIMAGE)
    $DI19 = GUICtrlCreateCheckbox("", 584, 172, 17, 17)
    $Label21 = GUICtrlCreateLabel("I 19", 544, 172, 22, 17, $SS_CENTERIMAGE)
    $DI20 = GUICtrlCreateCheckbox("", 584, 196, 17, 17)
    $Label22 = GUICtrlCreateLabel("I 20", 544, 196, 22, 17, $SS_CENTERIMAGE)
    $DI21 = GUICtrlCreateCheckbox("", 584, 220, 17, 17)
    $Label23 = GUICtrlCreateLabel("I 21", 544, 220, 22, 17, $SS_CENTERIMAGE)
    $DI22 = GUICtrlCreateCheckbox("", 584, 244, 17, 17)
    $Label24 = GUICtrlCreateLabel("I 22", 544, 244, 22, 17, $SS_CENTERIMAGE)
    $DI23 = GUICtrlCreateCheckbox("", 584, 268, 17, 17)
    $Label25 = GUICtrlCreateLabel("I 23", 544, 268, 22, 17, $SS_CENTERIMAGE)
    $DI24 = GUICtrlCreateCheckbox("", 584, 292, 17, 17)
    $Label26 = GUICtrlCreateLabel("I 24", 544, 292, 22, 17, $SS_CENTERIMAGE)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group11 = GUICtrlCreateGroup("DA 13-16", 528, 350, 100, 231)
    $DA13 = GUICtrlCreateCheckbox("", 584, 374, 17, 17)
    $Label39 = GUICtrlCreateLabel("Q 13", 544, 374, 27, 17, $SS_CENTERIMAGE)
    $DA14 = GUICtrlCreateCheckbox("", 584, 398, 17, 17)
    $Label40 = GUICtrlCreateLabel("Q 14", 544, 398, 27, 17, $SS_CENTERIMAGE)
    $DA15 = GUICtrlCreateCheckbox("", 584, 422, 17, 17)
    $Label41 = GUICtrlCreateLabel("Q 15", 544, 422, 27, 17, $SS_CENTERIMAGE)
    $DA16 = GUICtrlCreateCheckbox("", 584, 446, 17, 17)
    $Label42 = GUICtrlCreateLabel("Q 16", 544, 446, 27, 17, $SS_CENTERIMAGE)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group12 = GUICtrlCreateGroup("DA 17-24", 640, 350, 100, 233)
    $Checkbox41 = GUICtrlCreateCheckbox("", 696, 374, 17, 17)
    $Label43 = GUICtrlCreateLabel("NV", 656, 374, 19, 17, $SS_CENTERIMAGE)
    $Checkbox42 = GUICtrlCreateCheckbox("", 696, 398, 17, 17)
    $Label44 = GUICtrlCreateLabel("NV", 656, 398, 19, 17, $SS_CENTERIMAGE)
    $Checkbox43 = GUICtrlCreateCheckbox("", 696, 422, 17, 17)
    $Label45 = GUICtrlCreateLabel("NV", 656, 422, 19, 17, $SS_CENTERIMAGE)
    $Checkbox44 = GUICtrlCreateCheckbox("", 696, 446, 17, 17)
    $Label46 = GUICtrlCreateLabel("NV", 656, 446, 19, 17, $SS_CENTERIMAGE)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group14 = GUICtrlCreateGroup("Analog-Erweiterung 1", 765, 80, 150, 521)
    $Group15 = GUICtrlCreateGroup("AI 5-6", 775, 100, 130, 230)
    $Label59 = GUICtrlCreateLabel("AI 5", 791, 124, 23, 17, $SS_CENTERIMAGE)
    $Label60 = GUICtrlCreateLabel("AI 6", 791, 148, 23, 17, $SS_CENTERIMAGE)
    $AI5 = GUICtrlCreateInput("0000", 831, 124, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_RIGHT))
    $AI6 = GUICtrlCreateInput("0000", 831, 148, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_RIGHT))
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group16 = GUICtrlCreateGroup("Analog-Erweiterung 2", 930, 80, 150, 520)
    $Group17 = GUICtrlCreateGroup("AI 7-8", 940, 100, 130, 230)
    $Label61 = GUICtrlCreateLabel("AI 7", 956, 124, 23, 17, $SS_CENTERIMAGE)
    $Label62 = GUICtrlCreateLabel("AI 8", 956, 148, 23, 17, $SS_CENTERIMAGE)
    $AI7 = GUICtrlCreateInput("0000", 996, 124, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_RIGHT))
    $AI8 = GUICtrlCreateInput("0000", 996, 148, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_RIGHT))
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group18 = GUICtrlCreateGroup("Analog-Erweiterung 3", 1095, 80, 150, 521)
    $Group19 = GUICtrlCreateGroup("AA 1-2", 1105, 350, 130, 230)
    $Label63 = GUICtrlCreateLabel("AQ 1", 1121, 374, 28, 17, $SS_CENTERIMAGE)
    $Label64 = GUICtrlCreateLabel("AQ 2", 1121, 398, 28, 17, $SS_CENTERIMAGE)
    $AQ1 = GUICtrlCreateInput("0000", 1161, 374, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_RIGHT))
    $AQ2 = GUICtrlCreateInput("0000", 1161, 398, 57, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_RIGHT))
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Label1 = GUICtrlCreateLabel("IP-Adresse:", 16, 10, 58, 17, $SS_CENTERIMAGE)
    $Label2 = GUICtrlCreateLabel("Port:", 46, 35, 26, 17, $SS_CENTERIMAGE)
    $InputIP = GUICtrlCreateInput("192.168.2.177", 78, 10, 95, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER))
    $InputPort = GUICtrlCreateInput("102", 78, 35, 35, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER))
    $Connect = GUICtrlCreateButton("Connect", 232, 16, 113, 25)
    $Disconnect = GUICtrlCreateButton("Disonnect", 360, 16, 113, 25)
    $StatusBar1 = _GUICtrlStatusBar_Create($Form1)
    _GUICtrlStatusBar_SetMinHeight($StatusBar1, 17)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    ;Verwendete Variablen
    Global $isStarted = 0
    Global $refresh =750
    Global $Connection = 0
    $sIPAddress = GUICtrlRead ($InputIP)
    $iPort = GUICtrlRead ($InputPort)

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

    Global $VM, $newValue[15], $InputBit[24], $OutputBit[16], $InputValue[17], $OutputValue[4]
    Global $iSocket= $iPort,$hInterface,$hConnection, $VM, $newValue, $IBit, $OBit, $IByte, $OByte
    Global $ping= Ping($sIPAddress,500)

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

    Local $VM1, $VM2, $VM3, $VM4, $VM5, $VM6, $VM8, $VM10, $VM12, $VM14
    Local $I1, $I2, $I3, $I4, $I5, $I6, $I7, $I8, $I9, $I10, $I11, $I12, $I13, $I14, $I15, $I16, $I17, $I18, $I19, $I20, $I21, $I22, $I23, $I24
    Local $Q1, $Q2, $Q3, $Q4, $Q5, $Q6, $Q7, $Q8, $Q9, $Q10, $Q11, $Q12, $Q13, $Q14, $Q15, $Q16
    Local $AI1, $AI2, $AI3, $AI4, $AI5, $AI6, $AI7, $AI8
    Local $AQ1, $AQ2

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

    While 1
    _daveInit()
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Events")
    GUISetOnEvent($GUI_EVENT_MINIMIZE, "_Events")
    GUISetOnEvent($GUI_EVENT_RESTORE, "_Events")

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

    GUICtrlSetOnEvent($Connect, "_Connect")
    GUICtrlSetOnEvent($Disconnect, "_Disconnect")

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

    If $isStarted = 1 and $Connection = 1 Then
    _ReadPLC()
    EndIf

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

    WEnd

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

    Func _Events() ; hier sind die Events der GUI:
    ; Fenster Schliessen, Minimieren, Maximieren,

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

    Select
    Case @GUI_CtrlId = $GUI_EVENT_CLOSE
    Exit
    Case @GUI_CtrlId = $GUI_EVENT_MINIMIZE

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

    Case @GUI_CtrlId = $GUI_EVENT_RESTORE

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

    EndSelect
    EndFunc

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

    Func _Connect()
    GUICtrlSetState($Connect, $GUI_DISABLE)
    GUICtrlSetState($Disconnect, $GUI_ENABLE)
    GUICtrlSetState ($InputIP, $GUI_DISABLE)
    GUICtrlSetState ($InputPort, $GUI_DISABLE)
    _daveTCPConnectLogo0BA7($sIPAddress, $iSocket, $hInterface, $hConnection,0, 0, 1,"Logo")
    If @error = 0 Then
    GUICtrlSetState($Connect, $GUI_DISABLE)
    GUICtrlSetState($Disconnect, $GUI_ENABLE)
    GUICtrlSetState ($InputIP, $GUI_DISABLE)
    GUICtrlSetState ($InputPort, $GUI_DISABLE)
    _GUICtrlStatusBar_SetText ($StatusBar1,"PLC Connected")
    $isStarted = 1
    $Connection = 1

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

    ElseIf @error > 0 then
    GUICtrlSetState($Disconnect, $GUI_DISABLE)
    GUICtrlSetState($Connect, $GUI_ENABLE)
    GUICtrlSetState ($InputIP, $GUI_ENABLE)
    GUICtrlSetState ($InputPort, $GUI_ENABLE)
    _GUICtrlStatusBar_SetText ($StatusBar1,"Fehler beim Verbindungsaufbau")
    $isStarted = 0
    $Connection = 0
    EndIf
    EndFunc

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

    Func _Disconnect()
    GUICtrlSetState($Disconnect, $GUI_DISABLE)
    GUICtrlSetState($Connect, $GUI_ENABLE)
    GUICtrlSetState ($InputIP, $GUI_ENABLE)
    GUICtrlSetState ($InputPort, $GUI_ENABLE)
    _daveTCPDisconnect($iSocket,$hInterface,$hConnection)
    If @error = 0 Then
    GUICtrlSetState($Disconnect, $GUI_DISABLE)
    GUICtrlSetState($Connect, $GUI_ENABLE)
    GUICtrlSetState ($InputIP, $GUI_ENABLE)
    GUICtrlSetState ($InputPort, $GUI_ENABLE)
    _GUICtrlStatusBar_SetText ($StatusBar1,"PLC Disconnected")
    $Connection = 0
    $isStarted = 0
    EndIf
    EndFunc

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

    Func _ReadPLC()
    ; Lesen der Siemens-Logo Werte

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

    If $isStarted = 1 and $Connection = 1 Then

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

    ; Lesen der VM aus DB 1
    For $VM = 0 to 14 step 2
    _daveReadBytes($hConnection,$daveDB,1,$VM,2)
    $newValue[$VM] = _daveGetU16($hConnection)
    Next

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

    ; Lesen der Eingangs-Bits 1 - 8
    For $IBit = 0 To 7 Step 1
    $InputBit[$IBit] = _daveReadBit($hConnection, $daveInputs, 0,0,$IBit)
    Next

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

    ; Lesen der Ausgangs-Bits 1 - 4
    For $OBit = 0 To 3 Step 1
    $OutputBit[$OBit] = _daveReadBit($hConnection, $daveOutputs, 0,0,$OBit)
    Next

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

    ;~ ; Lesen der Analog-Eingänge 1-4
    ;~ For $IByte = 0 to 6 Step 2
    ;~ _daveReadBytes($hConnection,$daveAnaIn,0,$IByte,2)
    ;~ $InputValue[$IByte] = _daveGetU16($hConnection)
    ;~ Next

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

    ; Schreiben der VM-Werte in die GUI
    GUICtrlSetData($VM0, $newValue[0])
    GUICtrlSetData($VM2, $newValue[2])
    GUICtrlSetData($VM4, $newValue[4])
    GUICtrlSetData($VM6, $newValue[6])
    GUICtrlSetData($VM8, $newValue[8])
    GUICtrlSetData($VM10, $newValue[10])
    GUICtrlSetData($VM12, $newValue[12])
    GUICtrlSetData($VM14, $newValue[14])

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

    ; Schreiben der Eingägnge in die GUI
    If $InputBit[0] = 1 then
    GUICtrlSetState($DI1, $GUI_CHECKED)
    ElseIf $InputBit[0] = 0 then
    GUICtrlSetState($DI1, $GUI_UNCHECKED)
    EndIf

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

    If $InputBit[1] = 1 then
    GUICtrlSetState($DI2, $GUI_CHECKED)
    ElseIf $InputBit[1] = 0 then
    GUICtrlSetState($DI2, $GUI_UNCHECKED)
    EndIf

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

    If $InputBit[2] = 1 then
    GUICtrlSetState($DI3, $GUI_CHECKED)
    ElseIf $InputBit[2] = 0 then
    GUICtrlSetState($DI3, $GUI_UNCHECKED)
    EndIf

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

    If $InputBit[3] = 1 then
    GUICtrlSetState($DI4, $GUI_CHECKED)
    ElseIf $InputBit[3] = 0 then
    GUICtrlSetState($DI4, $GUI_UNCHECKED)
    EndIf

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

    If $InputBit[4] = 1 then
    GUICtrlSetState($DI5, $GUI_CHECKED)
    ElseIf $InputBit[4] = 0 then
    GUICtrlSetState($DI5, $GUI_UNCHECKED)
    EndIf

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

    If $InputBit[5] = 1 then
    GUICtrlSetState($DI6, $GUI_CHECKED)
    ElseIf $InputBit[5] = 0 then
    GUICtrlSetState($DI6, $GUI_UNCHECKED)
    EndIf

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

    If $InputBit[6] = 1 then
    GUICtrlSetState($DI7, $GUI_CHECKED)
    ElseIf $InputBit[6] = 0 then
    GUICtrlSetState($DI7, $GUI_UNCHECKED)
    EndIf

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

    If $InputBit[7] = 1 then
    GUICtrlSetState($DI8, $GUI_CHECKED)
    ElseIf $InputBit[7] = 0 then
    GUICtrlSetState($DI8, $GUI_UNCHECKED)
    EndIf

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

    ; Schreiben der Ausgänge in die GUI
    If $OutputBit[0] = 1 then
    GUICtrlSetState($DA1, $GUI_CHECKED)
    ElseIf $OutputBit[0] = 0 then
    GUICtrlSetState($DA1, $GUI_UNCHECKED)
    EndIf

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

    If $OutputBit[1] = 1 then
    GUICtrlSetState($DA2, $GUI_CHECKED)
    ElseIf $OutputBit[1] = 0 then
    GUICtrlSetState($DA2, $GUI_UNCHECKED)
    EndIf

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

    If $OutputBit[2] = 1 then
    GUICtrlSetState($DA3, $GUI_CHECKED)
    ElseIf $OutputBit[2] = 0 then
    GUICtrlSetState($DA3, $GUI_UNCHECKED)
    EndIf

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

    If $OutputBit[3] = 1 then
    GUICtrlSetState($DA4, $GUI_CHECKED)
    ElseIf $OutputBit[3] = 0 then
    GUICtrlSetState($DA4, $GUI_UNCHECKED)
    EndIf
    EndIf
    EndFunc

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


    Über Hinweise, Anregungen, Bugs und Lösungsvorschläge würde ich mich freuen.


    MfG

    Christian

    Dateien

    GUI.JPG 96,29 kB – 0 Downloads GUI f 65,42 kB – 746 Downloads
  • Hallo zusammen

    • Flitzpiepe84
    • 28. Oktober 2013 um 14:47

    Hallo zusammen,

    ich bin hier zwar schon seit ein paar Tagen angemeldet, aber irgendwie ist es mir bisher entgangen mich einmal vorzustellen.
    Das ganze will ich hiermit aber jetzt nachholen...

    Ich bin der Christian, 28 Jahre alt oder auch jung (jenachdem wie man es sieht :D ), bin gelernter Mechatroniker und arbeite in einer Betriebs-Instandhaltung.
    Meine Interessen liegen in der SPS-Programmierung und Automatisierung. Durch eine betriebliche Sonderaufgaben bin ich zu dem Thema Visualisierung bzw dezentrales Auslesen von PLC´s gekommen und habe mich vorrangig ersteinmal mit WinCC flex beschäftigt und ein wenig mit Movicon. Beides große und leistungsstarke Programme, aber Lizensen und programmtechnische Einschränkungen ließen meinen Blick dann doch weiter als bis zum Tellerrand schauen. Dabei bin ich über einige Opensource-Projekte für PLC-HMI und Scada gestolpert, aber alles irgendwie noch zu unausgereift für eine sinnvolle Verwendung. Doch dann bin ich auf libnodave und damit auch auf AutoIt aufmerksam geworden und habe mich eingehend damit beschäftigt.

    Mein Projekt nimmt in der Zwischenzeit Form an und ich kann es sogar schon nutzen. Auch wenn noch nicht im vollen Funktions-Umfang wie ich ihn realiseren möchte und soll, aber das kommt alles jetzt nach und nach. Und vorallem das Beste ist, es braucht nur einen Bruchteil der Resourcen wie die Programme der HMI-Editoren von Siemens und Movicon.

    Bei meinen bisherigen Fragen bzw Gesprächen mit Mitgliedern hier, wurde mir sehr gut geholfen. Also Klasse Forum hier!!! :thumbup:

  • zeitlich gesteuertes Logging

    • Flitzpiepe84
    • 31. Juli 2013 um 12:48

    @ m-obi
    so ich hab mich gestern Abend mal etwas in dieses Adlibregister eingelesen, vielleicht werde ich damit meine Visu etwas überarbeiten. Aber ich denke, dass wird wohl etwas dauern bis da was Funktionierendes rauskommt...

    und wegen vivus seiner .exe werd ich ihm mal ne PN schicken, vielleicht weiß er ja Rat oder hat ne Idee dazu.

    Sobald es was Neues gibt, melde ich mich.


    Aber falls jemand weitere Vorschläge zur Verbesserung des Scriptes hat, nehme ich diese gern dankend an

  • zeitlich gesteuertes Logging

    • Flitzpiepe84
    • 30. Juli 2013 um 20:02

    so dann mal hier das komplette Script, die LogAitDave_V3.0 stammt von "vivus" sowie Großteil des Scriptes für die Visualisierung. Ich habe hier nur ein paar Felder noch eingefügt das Loggen der Werte und die Formatierung analoger Werte

    Spoiler anzeigen
    [autoit]

    ; FILEINSTALL
    FileInstall(".\libnodave.dll",".\libnodave.dll")
    FileInstall(".\LogAitDave_V3.0.exe",".\LogAitDave_V3.0.exe")
    FileInstall(".\LAD.ico",".\LAD.ico")
    FileInstall(".\Visualisierung.kxf",".\Visualisierung.kxf")

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

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    ; includes für Softwareverarbeitung
    #include <Constants.au3>
    #include <String.au3>
    #include <Array.au3>
    #include <File.au3>

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

    ; die UDF für die LogAitDave
    #include "LogAitDave_UDF.au3"

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

    HotKeySet("{ESC}", "Terminate") ; hier wird ein HOTKEY gesetzt auf die Taste ESC

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

    ; hier die Gui in Koda erstellt
    #Region ### START Koda GUI section ### Form=H:\Logimat\Release20130116\Logimat-Visualisierung.kxf
    $Form1_1 = GUICreate("Visualisierung für Logimat-Klappensteuerung", @DesktopWidth, @DesktopHeight - 72, 0, 0)
    GUISetState (@SW_MAXIMIZE)
    $Label1 = GUICtrlCreateLabel("IP", 13, 13, 14, 17)
    $imput_ip = GUICtrlCreateInput("192.168.2.177", 13, 33, 98, 21)
    $Start = GUICtrlCreateButton("Start", 13, 229, 100, 20)
    $Label2 = GUICtrlCreateLabel("Refresh Time", 13, 65, 67, 17)
    $imput_refreshT = GUICtrlCreateInput("100", 13, 85, 98, 21)
    $Input_1_8 = GUICtrlCreateGroup("Input_1_8", 130, 13, 72, 202)
    $CB_I01 = GUICtrlCreateCheckbox("I01", 137, 52, 46, 14)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $CB_I02 = GUICtrlCreateCheckbox("I02", 137, 72, 46, 13)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $CB_I03 = GUICtrlCreateCheckbox("I03", 137, 91, 46, 14)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $CB_I04 = GUICtrlCreateCheckbox("I04", 137, 111, 46, 13)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $CB_I05 = GUICtrlCreateCheckbox("I05", 137, 130, 46, 14)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $CB_I06 = GUICtrlCreateCheckbox("I06", 137, 150, 46, 13)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $CB_I07 = GUICtrlCreateCheckbox("I07", 137, 169, 46, 14)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $L_I_1_8 = GUICtrlCreateLabel("000", 137, 33, 22, 17)
    $CB_I08 = GUICtrlCreateCheckbox("I08", 137, 189, 46, 13)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Merker1_8 = GUICtrlCreateGroup("Merker1_8", 299, 13, 72, 202)
    $L_M_1_8 = GUICtrlCreateLabel("000", 306, 33, 22, 17)
    $CB_M01 = GUICtrlCreateCheckbox("M01", 306, 52, 52, 14)
    $CB_M02 = GUICtrlCreateCheckbox("M02", 306, 72, 52, 13)
    $CB_M03 = GUICtrlCreateCheckbox("M03", 306, 91, 52, 14)
    $CB_M04 = GUICtrlCreateCheckbox("M04", 306, 111, 52, 13)
    $CB_M05 = GUICtrlCreateCheckbox("M05", 306, 130, 52, 14)
    $CB_M06 = GUICtrlCreateCheckbox("M06", 306, 150, 52, 13)
    $CB_M07 = GUICtrlCreateCheckbox("M07", 306, 169, 52, 14)
    $CB_M08 = GUICtrlCreateCheckbox("M08", 306, 189, 52, 13)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Input_9_16 = GUICtrlCreateGroup("Input_9_16", 130, 221, 72, 202)
    $CB_I09 = GUICtrlCreateCheckbox("I09", 137, 260, 46, 14)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $CB_I10 = GUICtrlCreateCheckbox("I10", 137, 280, 46, 13)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $CB_I11 = GUICtrlCreateCheckbox("I11", 137, 299, 46, 14)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $CB_I12 = GUICtrlCreateCheckbox("I12", 137, 319, 46, 13)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $CB_I13 = GUICtrlCreateCheckbox("I13", 137, 338, 46, 14)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $CB_I14 = GUICtrlCreateCheckbox("I14", 137, 358, 46, 13)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $CB_I15 = GUICtrlCreateCheckbox("I15", 137, 377, 46, 14)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $CB_I16 = GUICtrlCreateCheckbox("I16", 137, 397, 46, 13)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $L_I_9_16 = GUICtrlCreateLabel("000", 137, 241, 22, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Input_17_24 = GUICtrlCreateGroup("Input_17_24", 215, 13, 72, 202)
    $CB_I17 = GUICtrlCreateCheckbox("I17", 222, 52, 46, 14)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $CB_I18 = GUICtrlCreateCheckbox("I18", 222, 72, 46, 13)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $CB_I19 = GUICtrlCreateCheckbox("I19", 222, 91, 46, 14)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $CB_I20 = GUICtrlCreateCheckbox("I20", 222, 111, 46, 13)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $CB_I21 = GUICtrlCreateCheckbox("I21", 222, 130, 39, 14)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $CB_I22 = GUICtrlCreateCheckbox("I22", 222, 150, 39, 13)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $CB_I23 = GUICtrlCreateCheckbox("I23", 222, 169, 46, 14)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $CB_I24 = GUICtrlCreateCheckbox("I24", 222, 189, 46, 13)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $L_I_17_24 = GUICtrlCreateLabel("000", 222, 33, 22, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Merker_9_16 = GUICtrlCreateGroup("Merker_9_16", 299, 221, 72, 202)
    $L_M_9_16 = GUICtrlCreateLabel("000", 306, 241, 22, 17)
    $CB_M09 = GUICtrlCreateCheckbox("M09", 306, 260, 52, 14)
    $CB_M10 = GUICtrlCreateCheckbox("M10", 306, 280, 52, 13)
    $CB_M11 = GUICtrlCreateCheckbox("M11", 306, 299, 52, 14)
    $CB_M12 = GUICtrlCreateCheckbox("M12", 306, 319, 46, 13)
    $CB_M13 = GUICtrlCreateCheckbox("M13", 306, 338, 46, 14)
    $CB_M14 = GUICtrlCreateCheckbox("M14", 306, 358, 46, 13)
    $CB_M15 = GUICtrlCreateCheckbox("M15", 306, 377, 46, 14)
    $CB_M16 = GUICtrlCreateCheckbox("M16", 306, 397, 46, 13)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Merker_17_24 = GUICtrlCreateGroup("Merker_17_24", 384, 13, 78, 202)
    $L_M_17_24 = GUICtrlCreateLabel("000", 391, 33, 22, 17)
    $CB_M17 = GUICtrlCreateCheckbox("M17", 391, 52, 52, 14)
    $CB_M18 = GUICtrlCreateCheckbox("M18", 391, 72, 52, 13)
    $CB_M19 = GUICtrlCreateCheckbox("M19", 391, 91, 52, 14)
    $CB_M20 = GUICtrlCreateCheckbox("M20", 391, 111, 46, 13)
    $CB_M21 = GUICtrlCreateCheckbox("M21", 391, 130, 52, 14)
    $CB_M22 = GUICtrlCreateCheckbox("M22", 391, 150, 46, 13)
    $CB_M23 = GUICtrlCreateCheckbox("M23", 391, 169, 46, 14)
    $CB_M24 = GUICtrlCreateCheckbox("M24", 391, 189, 46, 13)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Merker_25_32 = GUICtrlCreateGroup("Merker_25_32", 384, 221, 78, 202)
    $L_M_25_32 = GUICtrlCreateLabel("000", 391, 241, 22, 17)
    $CB_M25 = GUICtrlCreateCheckbox("M25", 391, 260, 46, 14)
    $CB_M26 = GUICtrlCreateCheckbox("M26", 391, 280, 46, 13)
    $CB_M27 = GUICtrlCreateCheckbox("M27", 391, 299, 46, 14)
    $CB_M28 = GUICtrlCreateCheckbox("M28", 391, 319, 46, 13)
    $CB_M29 = GUICtrlCreateCheckbox("M29", 391, 338, 46, 14)
    $CB_M30 = GUICtrlCreateCheckbox("M30", 391, 358, 46, 13)
    $CB_M31 = GUICtrlCreateCheckbox("M31", 391, 377, 46, 14)
    $CB_M32 = GUICtrlCreateCheckbox("M32", 391, 397, 46, 13)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Out_1_8 = GUICtrlCreateGroup("Out_1_8", 475, 13, 59, 202)
    $L_Q_1_8 = GUICtrlCreateLabel("000", 482, 33, 22, 17)
    $CB_Q01 = GUICtrlCreateCheckbox("Q01", 482, 52, 52, 14)
    $CB_Q02 = GUICtrlCreateCheckbox("Q02", 482, 72, 52, 13)
    $CB_Q03 = GUICtrlCreateCheckbox("Q03", 482, 91, 52, 14)
    $CB_Q04 = GUICtrlCreateCheckbox("Q04", 482, 111, 46, 13)
    $CB_Q05 = GUICtrlCreateCheckbox("Q05", 482, 130, 46, 14)
    $CB_Q06 = GUICtrlCreateCheckbox("Q06", 482, 150, 46, 13)
    $CB_Q07 = GUICtrlCreateCheckbox("Q07", 482, 169, 46, 14)
    $CB_Q08 = GUICtrlCreateCheckbox("Q08", 482, 189, 46, 13)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Out_9_16 = GUICtrlCreateGroup("Out_9_16", 475, 221, 59, 202)
    $L_Q_9_16 = GUICtrlCreateLabel("000", 482, 241, 22, 17)
    $CB_Q09 = GUICtrlCreateCheckbox("Q09", 482, 260, 46, 14)
    $CB_Q10 = GUICtrlCreateCheckbox("Q10", 482, 280, 46, 13)
    $CB_Q11 = GUICtrlCreateCheckbox("Q11", 482, 299, 46, 14)
    $CB_Q12 = GUICtrlCreateCheckbox("Q12", 482, 319, 46, 13)
    $CB_Q13 = GUICtrlCreateCheckbox("Q13", 482, 338, 46, 14)
    $CB_Q14 = GUICtrlCreateCheckbox("Q14", 482, 358, 46, 13)
    $CB_Q15 = GUICtrlCreateCheckbox("Q15", 482, 377, 46, 14)
    $CB_Q16 = GUICtrlCreateCheckbox("Q16", 482, 397, 46, 13)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Stop = GUICtrlCreateButton("Stop", 13, 253, 100, 20)
    $Label3 = GUICtrlCreateLabel("DB->", 13, 117, 28, 17)
    $I_DB1 = GUICtrlCreateInput("0", 46, 117, 20, 21)
    $Label4 = GUICtrlCreateLabel("=", 72, 117, 10, 17)
    $DisplayDB_1 = GUICtrlCreateLabel("00,00", 85, 117, 28, 17)
    $Label5 = GUICtrlCreateLabel("DB->", 13, 143, 28, 17)
    $I_DB2 = GUICtrlCreateInput("2", 46, 143, 20, 21)
    $Label6 = GUICtrlCreateLabel("=", 72, 143, 10, 17)
    $Label7 = GUICtrlCreateLabel("DB->", 13, 169, 28, 17)
    $I_DB4 = GUICtrlCreateInput("4", 46, 169, 20, 21)
    $Label9 = GUICtrlCreateLabel("=", 72, 169, 10, 17)
    $DisplayDB_2 = GUICtrlCreateLabel("00,00", 85, 143, 28, 17)
    $Label8 = GUICtrlCreateLabel("DB->", 13, 195, 28, 17)
    $I_DB6 = GUICtrlCreateInput("6", 46, 195, 20, 21)
    $DisplayDB_4 = GUICtrlCreateLabel("00,00", 85, 169, 28, 17)
    $Label10 = GUICtrlCreateLabel("=", 72, 195, 10, 17)
    $DisplayDB_6 = GUICtrlCreateLabel("00,00", 85, 195, 28, 17)

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

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    ;############## ENDe der GUI ( des User interfaces ) ###########################

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

    ;~ ; handler Array's für das setzen der von der Logo intern beschalteten zustände auf das User interface
    Dim $GUI_I1to8_Handler[8]
    $GUI_I1to8_Handler[0] = $CB_I01
    $GUI_I1to8_Handler[1] = $CB_I02
    $GUI_I1to8_Handler[2] = $CB_I03
    $GUI_I1to8_Handler[3] = $CB_I04
    $GUI_I1to8_Handler[4] = $CB_I05
    $GUI_I1to8_Handler[5] = $CB_I06
    $GUI_I1to8_Handler[6] = $CB_I07
    $GUI_I1to8_Handler[7] = $CB_I08

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

    Dim $GUI_I9to16_Handler[8]
    $GUI_I9to16_Handler[0] = $CB_I09
    $GUI_I9to16_Handler[1] = $CB_I10
    $GUI_I9to16_Handler[2] = $CB_I11
    $GUI_I9to16_Handler[3] = $CB_I12
    $GUI_I9to16_Handler[4] = $CB_I13
    $GUI_I9to16_Handler[5] = $CB_I14
    $GUI_I9to16_Handler[6] = $CB_I15
    $GUI_I9to16_Handler[7] = $CB_I16

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

    Dim $GUI_I17to24_Handler[8]
    $GUI_I17to24_Handler[0] = $CB_I17
    $GUI_I17to24_Handler[1] = $CB_I18
    $GUI_I17to24_Handler[2] = $CB_I19
    $GUI_I17to24_Handler[3] = $CB_I20
    $GUI_I17to24_Handler[4] = $CB_I21
    $GUI_I17to24_Handler[5] = $CB_I22
    $GUI_I17to24_Handler[6] = $CB_I23
    $GUI_I17to24_Handler[7] = $CB_I24

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

    Dim $GUI_M1to8_Handler[8]
    $GUI_M1to8_Handler[0] = $CB_M01
    $GUI_M1to8_Handler[1] = $CB_M02
    $GUI_M1to8_Handler[2] = $CB_M03
    $GUI_M1to8_Handler[3] = $CB_M04
    $GUI_M1to8_Handler[4] = $CB_M05
    $GUI_M1to8_Handler[5] = $CB_M06
    $GUI_M1to8_Handler[6] = $CB_M07
    $GUI_M1to8_Handler[7] = $CB_M08

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

    Dim $GUI_M9to16_Handler[8]
    $GUI_M9to16_Handler[0] = $CB_M09
    $GUI_M9to16_Handler[1] = $CB_M10
    $GUI_M9to16_Handler[2] = $CB_M11
    $GUI_M9to16_Handler[3] = $CB_M12
    $GUI_M9to16_Handler[4] = $CB_M13
    $GUI_M9to16_Handler[5] = $CB_M14
    $GUI_M9to16_Handler[6] = $CB_M15
    $GUI_M9to16_Handler[7] = $CB_M16

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

    Dim $GUI_M17to24_Handler[8]
    $GUI_M17to24_Handler[0] = $CB_M17
    $GUI_M17to24_Handler[1] = $CB_M18
    $GUI_M17to24_Handler[2] = $CB_M19
    $GUI_M17to24_Handler[3] = $CB_M20
    $GUI_M17to24_Handler[4] = $CB_M21
    $GUI_M17to24_Handler[5] = $CB_M22
    $GUI_M17to24_Handler[6] = $CB_M23
    $GUI_M17to24_Handler[7] = $CB_M24

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

    Dim $GUI_M25to32_Handler[8]
    $GUI_M25to32_Handler[0] = $CB_M25
    $GUI_M25to32_Handler[1] = $CB_M26
    $GUI_M25to32_Handler[2] = $CB_M27
    $GUI_M25to32_Handler[3] = $CB_M28
    $GUI_M25to32_Handler[4] = $CB_M29
    $GUI_M25to32_Handler[5] = $CB_M30
    $GUI_M25to32_Handler[6] = $CB_M31
    $GUI_M25to32_Handler[7] = $CB_M32

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

    Dim $GUI_Q1to8_Handler[8]
    $GUI_Q1to8_Handler[0] = $CB_Q01
    $GUI_Q1to8_Handler[1] = $CB_Q02
    $GUI_Q1to8_Handler[2] = $CB_Q03
    $GUI_Q1to8_Handler[3] = $CB_Q04
    $GUI_Q1to8_Handler[4] = $CB_Q05
    $GUI_Q1to8_Handler[5] = $CB_Q06
    $GUI_Q1to8_Handler[6] = $CB_Q07
    $GUI_Q1to8_Handler[7] = $CB_Q08

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

    Dim $GUI_Q9to16_Handler[8]
    $GUI_Q9to16_Handler[0] = $CB_Q09
    $GUI_Q9to16_Handler[1] = $CB_Q10
    $GUI_Q9to16_Handler[2] = $CB_Q11
    $GUI_Q9to16_Handler[3] = $CB_Q12
    $GUI_Q9to16_Handler[4] = $CB_Q13
    $GUI_Q9to16_Handler[5] = $CB_Q14
    $GUI_Q9to16_Handler[6] = $CB_Q15
    $GUI_Q9to16_Handler[7] = $CB_Q16

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

    ;############################### Hier die Main schleife !! ( hier arbeitet das Programm ) ##########################

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

    Global $refresh;
    Global $isStarted = 0 ; variable die speichert, ob start gedrückt wurde
    Global $nMsg; ; variable welche den inhalt der Gui Message zwischenspeichert.
    Global $call = 1; durchlaufzähler, welcher die abarbeitung verschiedener befehle auf verschiedene durchläufe sortiert,
    ; Da sonst die Gui träge erscheint. Ein aufruf oder abruf von oder zu der Logo dauert rund 50ms
    ; pro durchlauf also nur ein aufruf.

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

    While 1
    Local $begin = TimerInit() ; initialisierung einer stoppuhr

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

    $nMsg = GUIGetMsg() ; Gui Message in zwischenvariable speichern
    Switch $nMsg ; der main case verteiler ;
    Case $Start ; wenn Start gedrückt wurde
    GUICtrlSetState($Start, $GUI_DISABLE) ; the label is in disable state
    GUICtrlSetState($imput_refreshT, $GUI_DISABLE) ; the label is in disable state
    GUICtrlSetState($Stop, $GUI_ENABLE) ; the label is in disable state
    GUICtrlSetState($imput_ip, $GUI_DISABLE) ; the label is in disable state
    GUICtrlSetState($I_DB1, $GUI_DISABLE) ; the label is in disable state
    GUICtrlSetState($I_DB2, $GUI_DISABLE) ; the label is in disable state
    GUICtrlSetState($I_DB4, $GUI_DISABLE) ; the label is in disable state
    GUICtrlSetState($I_DB6, $GUI_DISABLE) ; the label is in disable state

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

    ; die IP aus der Gui Holen
    _LAD_SetIP(GUICtrlRead($imput_ip))
    $refresh = GUICtrlRead($imput_refreshT) ; abspeichern der usereingabe
    $isStarted = 1

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

    Case $Stop ; wenn stop gedrückt wurde
    GUICtrlSetState($Start, $GUI_ENABLE) ; the label is in disable state
    GUICtrlSetState($imput_refreshT, $GUI_ENABLE) ; the label is in disable state
    GUICtrlSetState($Stop, $GUI_DISABLE) ; the label is in disable state
    GUICtrlSetState($imput_ip, $GUI_ENABLE) ; the label is in disable state
    GUICtrlSetState($I_DB1, $GUI_ENABLE) ; the label is in disable state
    GUICtrlSetState($I_DB2, $GUI_ENABLE) ; the label is in disable state
    GUICtrlSetState($I_DB4, $GUI_ENABLE) ; the label is in disable state
    GUICtrlSetState($I_DB6, $GUI_ENABLE) ; the label is in disable state

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

    GUICtrlSetData($imput_refreshT, $refresh)

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

    $isStarted = 0

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

    Case $CB_Q01 ; wenn Checkbox angeklickt wurde
    _LAD_Q_tougle(1);_Q_chance($CB_Q01, 1, GUICtrlRead($CB_Q01))
    Case $CB_Q02
    _LAD_Q_tougle(2);_Q_chance($CB_Q02, 2)
    Case $CB_Q03
    _LAD_Q_tougle(3);_Q_chance($CB_Q03, 3)
    Case $CB_Q04
    _LAD_Q_tougle(4);_Q_chance($CB_Q04, 4)
    Case $CB_Q05
    _LAD_Q_tougle(5);_Q_chance($CB_Q05, 5)
    Case $CB_Q06
    _LAD_Q_tougle(6);_Q_chance($CB_Q06, 6)
    Case $CB_Q07
    _LAD_Q_tougle(7);_Q_chance($CB_Q07, 7)
    Case $CB_Q08
    _LAD_Q_tougle(8);_Q_chance($CB_Q08, 8)

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

    Case $CB_Q09
    _LAD_Q_tougle(9);_Q_chance($CB_Q09, 9)
    Case $CB_Q10
    _LAD_Q_tougle(10);_Q_chance($CB_Q10, 10)
    Case $CB_Q11
    _LAD_Q_tougle(11);_Q_chance($CB_Q11, 11)
    Case $CB_Q12
    _LAD_Q_tougle(12);_Q_chance($CB_Q12, 12)
    Case $CB_Q13
    _LAD_Q_tougle(13);_Q_chance($CB_Q13, 13)
    Case $CB_Q14
    _LAD_Q_tougle(14);_Q_chance($CB_Q14, 14)
    Case $CB_Q15
    _LAD_Q_tougle(15);_Q_chance($CB_Q15, 15)
    Case $CB_Q16
    _LAD_Q_tougle(16);_Q_chance($CB_Q16, 16)

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

    Case $CB_M01
    _LAD_M_tougle(1);_M_chance($CB_M01, 1)
    Case $CB_M02
    _LAD_M_tougle(2);_M_chance($CB_M02, 2)
    Case $CB_M03
    _LAD_M_tougle(3);_M_chance($CB_M03, 3)
    Case $CB_M04
    _LAD_M_tougle(4);_M_chance($CB_M04, 4)
    Case $CB_M05
    _LAD_M_tougle(5);_M_chance($CB_M05, 5)
    Case $CB_M06
    _LAD_M_tougle(6);_M_chance($CB_M06, 6)
    Case $CB_M07
    _LAD_M_tougle(7);_M_chance($CB_M07, 7)
    Case $CB_M08
    _LAD_M_tougle(8);_M_chance($CB_M08, 8)

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

    Case $CB_M09
    _LAD_M_tougle(9);_M_chance($CB_M09, 9)
    Case $CB_M10
    _LAD_M_tougle(10);_M_chance($CB_M10, 10)
    Case $CB_M11
    _LAD_M_tougle(11)
    Case $CB_M12
    _LAD_M_tougle(12)
    Case $CB_M13
    _LAD_M_tougle(13)
    Case $CB_M14
    _LAD_M_tougle(14)
    Case $CB_M15
    _LAD_M_tougle(15)
    Case $CB_M16
    _LAD_M_tougle(16)

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

    Case $CB_M17
    _LAD_M_tougle(17)
    Case $CB_M18
    _LAD_M_tougle(18)
    Case $CB_M19
    _LAD_M_tougle(19)
    Case $CB_M20
    _LAD_M_tougle(20)
    Case $CB_M21
    _LAD_M_tougle(21)
    Case $CB_M22
    _LAD_M_tougle(22)
    Case $CB_M23
    _LAD_M_tougle(23)
    Case $CB_M24
    _LAD_M_tougle(24)

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

    Case $CB_M25
    _LAD_M_tougle(25)
    Case $CB_M26
    _LAD_M_tougle(26)
    Case $CB_M27
    _LAD_M_tougle(27)
    Case $CB_M28
    _LAD_M_tougle(28)
    Case $CB_M29
    _LAD_M_tougle(29)
    Case $CB_M30
    _LAD_M_tougle(30)
    Case $CB_M31
    _LAD_M_tougle(31)
    Case $CB_M32
    ;~ _LAD_M_tougle(32)

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

    Case $GUI_EVENT_CLOSE ; wenn auf schließen gedrückt wird
    $isStarted = 0
    Exit

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

    Case Else ; wenn nichts gedrückt wird
    ; Gui Funktionen
    Sleep($refresh) ; eine pause

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

    If $isStarted = 1 Then ; abfragen, ob Start betätigt wurde

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

    ; connect !!

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

    ; nur ein LOGO call pro GUI aktuialisierung !! sonst wirds zeitkritisch

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

    If $call = 1 Then
    $array = _LAD_ReadAllInputs() ; holt die imput register aus der logo
    GUICtrlSetData($L_I_1_8, $array[1])
    _CB_Update($GUI_I1to8_Handler, $array[1])
    GUICtrlSetData($L_I_9_16, $array[2])
    _CB_Update($GUI_I9to16_Handler, $array[2])
    GUICtrlSetData($L_I_17_24, $array[3])
    _CB_Update($GUI_I17to24_Handler, $array[3])
    ElseIf $call = 2 Then
    $array = _LAD_ReadAllMerker()
    GUICtrlSetData($L_M_1_8, $array[1])
    GUICtrlSetData($L_M_9_16, $array[2])
    GUICtrlSetData($L_M_17_24, $array[3])
    _CB_Update($GUI_M1to8_Handler, $array[1], $GUI_INDETERMINATE)
    _CB_Update($GUI_M9to16_Handler, $array[2], $GUI_INDETERMINATE)
    _CB_Update($GUI_M17to24_Handler, $array[3], $GUI_INDETERMINATE)
    ElseIf $call = 3 Then
    _CB_Update($GUI_M25to32_Handler, _LAD_ReadMerkerRegister(4), $GUI_INDETERMINATE)

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

    ElseIf $call = 4 Then
    GUICtrlSetData($L_M_25_32, _LAD_ReadMerkerRegister(4))

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

    ElseIf $call = 5 Then
    $array = _LAD_ReadAllOutput()
    GUICtrlSetData($L_Q_1_8, $array[1])
    GUICtrlSetData($L_Q_9_16, $array[2])
    _CB_Update($GUI_Q1to8_Handler, $array[1], $GUI_INDETERMINATE)
    _CB_Update($GUI_Q9to16_Handler, $array[2], $GUI_INDETERMINATE)

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

    ElseIf $call = 6 Then
    $newValue = _LAD_ReadWord(GUICtrlRead($I_DB1))
    $newValue1 = StringReplace(StringFormat( "%.2f", $newValue /10), ".", ",")
    GUICtrlSetData($DisplayDB_1, $newValue1)

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

    ElseIf $call = 7 Then
    $newValue = _LAD_ReadWord(GUICtrlRead($I_DB2))
    $newValue1 = StringReplace(StringFormat( "%.2f", $newValue /10), ".", ",")
    GUICtrlSetData($DisplayDB_2, $newValue1)

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

    ElseIf $call = 8 Then
    $newValue = _LAD_ReadWord(GUICtrlRead($I_DB4))
    $newValue1 = StringReplace(StringFormat( "%.2f", $newValue /10), ".", ",")
    GUICtrlSetData($DisplayDB_4, $newValue1)

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

    ElseIf $call = 9 Then
    $newValue = _LAD_ReadWord(GUICtrlRead($I_DB6))
    $newValue1 = StringReplace(StringFormat( "%.2f", $newValue /10), ".", ",")
    GUICtrlSetData($DisplayDB_6, $newValue1)

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

    Else
    $call = 0 ; hier wird auf 0 initialisiert, weil direkt danach ein +1 kommt !!

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

    EndIf

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

    $call = $call + 1

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

    GUICtrlSetData($imput_refreshT, StringFormat("%d", TimerDiff($begin))) ; anzeigen der Stoppuhr in einem speziellen format
    Local $sZuluft = 0, $sMitte = 0, $sHarz = 0, $sSollwert = 0, $sLogFile = 0, $sText = 0
    $sZuluft = GUICtrlRead($DisplayDB_1)
    $sMitte = GUICtrlRead($DisplayDB_2)
    $sHarz = GUICtrlRead($DisplayDB_4)
    $sSollwert = GUICtrlRead($DisplayDB_6)
    $sLogFile = @ScriptDir & "\" & @YEAR & "-" & @MON & "-" & @MDAY & ".csv"
    $sText = @YEAR & "-" & @MON & "-" & @MDAY & ";" & @hour & ":" & @min & ";" & $sZuluft & ";" & $sMitte & ";" & $sHarz & ";" & $sSollwert & @CRLF
    If (@min=00 or @min=10 or @min=20 or @min=30 or @min=40 or @min=50) and @sec = 00 Then
    FileWrite($sLogFile, $sText)
    sleep (1000)
    EndIf
    Else

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

    ; disconnect
    ; hier passier erstamal gar nix ..
    ;ToolTip("Disconnect"& _TD($TIMER_1),0,0)

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

    EndIf

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

    EndSwitch

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

    WEnd

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

    ;######################### ENDE der Hauptschleife ###############################################

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

    ;; Funktion um die Gui mit den werten der Logo zu beschreiben.
    ;; Parameter 1-> $Conrole_ID_Handler_Array = verlangt ein Array welches den inhalt der Handels auf die entsprechenden Controls hat.
    ;; Parameter 2-> $value = ein dezimales Value 0-beliebig welches bitweise auf die handels aufgesplittet werden soll
    ;; Parameter 3-> $checkTo = $GUI_CHECKED = hat einen PRESET bedeutet, dass wenn nichts angegeben wird das Entsprechende handel bei einer aktivierung mit dem Gui parameter CHECKED versetzt wird.
    ;, ; ansonsten mit dem Value, welcher an dieser stelle mitübergeben wird.
    ; RETVAL -> Funktion hat keinen Returnvalue sondern beschreibt die Controls direkt über die Globale Handle
    Func _CB_Update($Conrole_ID_Handler_Array, $value, $checkTo = $GUI_CHECKED)
    ; dec to Binary umrechnen
    $binary = _DecToBinary($value)
    ; ein Array erstellen in abhängigkeit der Arraygröße
    Dim $DIArray[UBound($Conrole_ID_Handler_Array)];9]

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

    ;die bits dem array übergeben
    For $i = 0 To (UBound($DIArray) - 1) Step 1
    $DIArray[$i] = StringMid($binary, BinaryLen($binary) - $i, 1)
    Next

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

    ; emptie's mit 0en füllen
    ; ist eigentlich total überflüssig , das dies später sowieso überschrieben wird
    For $i = 0 To (UBound($DIArray) - 1) Step 1
    If Not (($DIArray[$i] = "1") Or ($DIArray[$i] = "0")) Then
    $DIArray[$i] = 0
    EndIf
    Next

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

    ; den Gui State in das array übertragen
    For $i = 0 To (UBound($DIArray) - 1) Step 1
    If ($DIArray[$i] = "1") Then
    $DIArray[$i] = $checkTo; $GUI_INDETERMINATE
    Else
    $DIArray[$i] = $GUI_UNCHECKED
    EndIf

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

    Next

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

    ; den Status in die Handles der gui übertragen
    For $i = 0 To (UBound($DIArray) - 1) Step 1
    GUICtrlSetState($Conrole_ID_Handler_Array[$i], $DIArray[$i])
    Next
    EndFunc ;==>_CB_Update

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

    ; funktion für hotkey
    Func Terminate()
    $isStarted = 0
    $nMsg = $Stop
    ;Exit 0
    EndFunc ;==>Terminate

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • zeitlich gesteuertes Logging

    • Flitzpiepe84
    • 30. Juli 2013 um 19:49
    Zitat von Christoph54

    Ohne das komplette Script wird dir hier niemand helfen können, also poste es einfach mal. ;)
    (und die Lösung per Modulo war schöner :P :whistling: )

    ausprobiert hab ich das mit dem Modulo.Das Problem war aber irgendwie, dass ich trotzdem innerhalb der Minute mehrere Einträge im Logfile hatte...

    Zitat von m-obi

    Warum nicht AdLibRegister mit 600000 ms?

    wenn ich wüßte wie ich das programmiere, dann würd ich mir das vielleicht auch mal anschauen, aber bisher bin ich da noch nicht dahinter gestiegen wie das mit dem AdLibRegister funktioniert ...

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™