Probleme mit RMchart.au3

  • Hi,
    ich hab ein kleines Problem: Ich möchte mithilfe von RMchart.au3 ein Säulendiagramm anzeigen, das seine Werte (Länge, Menge der Werte, ...) aus einer .ini lädt.
    deren Inhalt sieht (vorerst) folgendermaßen aus:

    Jetzt sollen die Keys die Namen der Säulen und die Werte die Höhe der Säulen machen.
    Meinen bisherigen Code lass ich mal lieber sein, man lacht mich sonst noch aus. :whistling: :whistling: :whistling:
    Steh ich auf'm Schlauch, oder ist das so schwer...? ?( ?( ?(
    PS: Die namen der Keys kann ich auch anders nennen, mach ich nämlich selbst. :D
    Hoffe, ihr könnt mir helfen, Macimac.

    2 Mal editiert, zuletzt von Macimac (27. November 2010 um 11:38)

  • Hallo Macimac,

    herzlich willkommen im Forum und viel Spass mit AutoIt.

    Hier kannst du dir die Hilfe herunterladen.
    Hier gibt es ein AutoIt-Tutorial: http://wiki.autoit.de/wiki/index.php/TutorialSehr hilfreich ist auch das Buch von peethebee

    Solange du dein bisheriges Werk nicht einstellst bezweifle ich, dass du jemanden findest, der die ganze Arbeit für dich macht, vielleicht postest du ja unter http://www.autoit.de/index.php?page=Board&boardID=35

    mfg autoBert

  • Mir sagt die UDF garnix.
    Also solltest du doch einfach mal denen Quelltext posten.
    Und keine Angst es ist hier noch keiner ausgelacht werden wegen umständlichem Quelltext.
    Wenn das bei dir sein sollte, werden wir da schon gegensteuern.

    Also bitte posten.

    MfG
    Der_Doc

  • Hallo Macimac,

    ich hab jetzt mit etwas Copy & Paste aus einem Beitrag von @progandy (Author der rmChart.au3) folgendes Skript erstellt:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListBoxConstants.au3>
    #include <StaticConstants.au3>
    #include <TabConstants.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>
    #include "rmchart.au3"

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

    #Region ### START Koda GUI section ### Form=
    $hGUI = GUICreate("CPU",@DesktopWidth, @DesktopHeight)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    $ChartID = 2101

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

    Diagramm($hGUI, $ChartID)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

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

    Func Diagramm($hGUI, $ChartID)
    $aCPU = IniReadSection(@ScriptDir & "\CPU.ini","CPU")
    _ArrayDisplay($aCPU)
    _ArrayDelete($aCPU,0)
    $j = UBound($aCPU)
    Dim $Values[$j]
    $slblAx = ""
    For $i = 0 to $j -1
    $Values[$i] = $aCPU[$i][1]
    $slblAx &= $aCPU[$i][0]
    if $i < $j -1 then $slblAx &= "|"
    Next
    _RMC_LoadDLL("rmchart.dll")
    _RMC_CreateChart($hGUI, $ChartID, 10, 10, @DesktopWidth-20, @DesktopHeight-20, 0, 0, 0, "", "", 100)

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

    _RMC_AddRegion($ChartID, 5, 5, -5, -5)

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

    _RMC_AddCaption($ChartID, 1, "CPU-Auslastung")
    _RMC_AddGrid($ChartID, 1)
    _RMC_AddDataAxis($ChartID, 1, $RMC_DATAAXISLEFT, 0, 100, 11, 8, 0, 0, $RMC_LINESTYLEDOT, 0, "", "")
    _RMC_AddLabelAxis($ChartID, 1, $slblAx, 1, $j, 0, 0, 0, 0, 0, $RMC_LINESTYLENONE, "")

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

    $Struct = _RMC_A2SDouble($Values)
    _RMC_AddBarSeries($ChartID, 1, $Struct, $j, $RMC_BARSINGLE, $RMC_COLUMN_3D_GRADIENT, True, 0x000033)

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

    _RMC_SetCustomToolTipText($ChartID, 1, 1, $j, "123")
    _RMC_SetCtrlStyle($ChartID, $RMC_CTRLSTYLE3DLIGHT)

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

    _RMC_Zoom($ChartID, $RMC_ZOOM_INTERNAL)
    _RMC_Draw($ChartID)
    EndFunc

    [/autoit]

    Im Anhang rmChart.zip mit den benötigten Dateien. Weitere Infos zu rmChart.au3 auf http://progandy.co.cc/downloads/view.download/3/8

    mfg autoBert

  • Erstmal danke für die schnelle Hilfe, hätt ich nich erwartet.

    Also, wie's aussieht, hat autoBert schon alles erledigt..., thx!
    (Geringe Mängel wären drin, machen aber nix: Die Schleife, die $GUI_EVENT_CLOSE abwartet, bringt außer 100% CPU nix (sleep fehlt), da das rote Kreuz außerhalb des Bildschirms hängt.)
    Für alle, die mein bisheriges Script sehen wollen:
    (hab's etwas gekürzt, manche Variablen könnten undeklariert sein...) :whistling:

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    #include<rmchart.au3>
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GuiScroll.au3>
    Dim $werte[9999999]
    _FileReadToArray([datei...],$werte)

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

    $hGUI = GUICreate("Auswertung", 700,500)
    _RMC_LoadDLL("rmchart.dll")
    $ChartID = 2101
    _RMC_CreateChart($hGUI, $ChartID ,10,10,$werte[0] * 25,450,0,0,0,"","",$werte[0] * 25)

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

    _RMC_AddRegion($ChartID,5,5,-5,-5)
    ;MsgBox(0,"",$werte[0])
    _RMC_AddCaption($ChartID,1, "Computerauslastung")
    _RMC_AddGrid($ChartID,1)
    _RMC_AddDataAxis($ChartID,1,$RMC_DATAAXISLEFT, 0, 100,11,8, 0 , 0 ,$RMC_LINESTYLEDOT,0,"","")
    _RMC_AddLabelAxis($ChartID,1,"", 1, $werte[0], 0, 0, 0, 0, 0, $RMC_LINESTYLENONE,"")

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

    Local $werte[$werte[0] - 1]
    $Struct = _RMC_A2SDouble($werte)
    _RMC_AddBarSeries($ChartID, 1, $Struct, $werte[0], $RMC_BARSINGLE, $RMC_COLUMN_3D_GRADIENT, True, 0xFF00FF)

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

    _RMC_SetCustomToolTipText($ChartID,1,1,3,"TestText")
    _RMC_SetCtrlStyle($ChartID, $RMC_CTRLSTYLE3DLIGHT )

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

    _RMC_Zoom($ChartID,$RMC_ZOOM_INTERNAL)
    _RMC_Draw($ChartID)

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

    Scrollbar_Create($hGUI, $SB_HORZ, $werte[0] * 25)
    Scrollbar_Step(20, $hGUI, $SB_HORZ)

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

    GUISetState()
    While 1
    Switch GUIGetMsg()
    Case -3
    Exit
    EndSwitch
    sleep(10)
    WEnd

    [/autoit]


    Hab noch versucht, das Diagramm scrollbar zu machen.

  • Also, wie's aussieht, hat autoBert schon alles erledigt..., thx!
    (Geringe Mängel wären drin, machen aber nix: Die Schleife, die $GUI_EVENT_CLOSE abwartet, bringt außer 100% CPU nix (sleep fehlt), da das rote Kreuz außerhalb des Bildschirms hängt.)

    • zum fehlenden Sleep schaust du dir am besten
      Zitat von Hilfe zu GuiGetMsg

      Bemerkungen

      Diese Funktion gibt die CPU automatisch wieder frei, wenn es erforderlich ist, so dass sie ruhig in Dauerschleifen benutzt werden kann, ohne die CPU vollständig auszulasten.

      an

    • zu dem roten Kreuz na ja, bei mir sieht es so aus: autoit.de/wcf/attachment/11840/, womit auch die Frage nach der CPU-Auslastung geklärt ist, dass du weisst wie man eine Gui anders placiert, davon gehe ich aus,

    Ps.: Wenn ein Thema gelöst ist sollte man es auch auf gelöst setzt. Einfach 1. Beitrag bearbeiten, Präfix (nähe Überschrift) ändern und speichern (absenden)
    mfg autoBert

  • sry, dass ich erst jetzt wieder antworte
    bei mir ist das kreuz außerhalb des bildschirms, macht aber nichts, so isses fast wie vollbild
    bei mir war der cpu auf 100%...
    mach ich, is gleich feadisch

  • Doch, jetzt hast du eingestellt, dass der Beitrag gelöst ist ;)

    Zum fehlenden Schließen-Button: Esc tut es auch, wenn die Taste nicht umgestellt wurde.

    Gruß,
    Matthias

  • Moin!

    Ersteinmal ein ganz herzliches danke an @progandy für die wunderbare UDF und an autoBert und Macimac für die gute Vorarbeit. denn darauf basierend bin ich jetzt dabei eine Monitoring Software für Windows Homeserver und andere Windows Server zu schreiben. Ich stehe damit allerdings noch ganz am Anfang. nun zu meinem Problem...

    bis jetzt bekomme ich wunderschöne Balkendiagramme, die in PNG Files gespeichert werden. nun ist so ein balkendiagram aber nicht gerade dazu geeignet CPU und RAM Lasten über einen größeren Zeitraum dar zu stellen. deswegen hier meine frage, wie stelle ich den Code auf Liniendiagramme um. ich habe mal meine bisherigen versuche angehängt.

    Mit freundlichen grüßen

    DJBeatstar