RMCHART

  • Hey,

    ich hatte schonmal angefangen jetzt wollte ich es vollenden.
    Ich wollte eine Ping Statistik erzeugen mit Rmchart
    Mehrere Rechner darstellen auf einen Chart.

    Hat jemand eine Idee oder kann mir hilfreiche Tipps geben.

    Das wollte ich alles machen....

    wie ich mehrer Rechner darstellen kann?

    Wie ich diese als Linien darstellen kann und nicht als "Berge"?

    Wie ich einen alarm auslösen kann auf irgendeine weise z.B. das ich bei einem bestimmsten Schwell wert einen roten Laben erzeigen kann,
    und wenn der wert wieder normal ist das er grün wird?

    autoit.de/wcf/attachment/5854/
    autoit.de/wcf/attachment/5855/
    autoit.de/wcf/attachment/5857/

    Danke für eure Unterstützung
    SubZero

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Hey,

    einen Kleinen Schupps noch für mich wie ich mit mit Statistics.au3 eine Ping Statistic darstellen könnte?

    Danke
    Subzero

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

    Einmal editiert, zuletzt von subzero007 (25. August 2009 um 12:03)

  • Danke,

    in der v01.au3 habe ich ja den ansatz aber komme leider nicht weiter eine idee?
    Gruß
    SubZero

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Keiner eine idee oder Tipps zu RMChart??

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Hey,

    leider nicht ;(
    die hilfe hatte ich schon im internet gefunden leider ohne erfolg.
    Noch ein Vorschlag?
    Gruß
    SubZero

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Hey,
    BugFix ich will ja ein Live Monitoring und Excel ist leider nicht dafür gedacht ;(
    also ich will live monitoring betreiben von einigen rechnern die anwortzeiten die ich als chart sehen möchte
    Sie mein beispiel im Post 1

    so in etwa ist mein Wunschziel ;)
    autoit.de/wcf/attachment/5866/

    Gruß
    SubZero

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Ich Wollte kein Office nutzen um Monitoring zu betreiben,
    ok was spricht dagegen ich wüsste nicht wie excel darauf reagiert wenn ich ich permanent was aktualiesiere und Strecken Monitore ????

    Vorschläge???

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Meinst du so etwas in dieser Richtung? Video

    Ich sag es gleich, der Quelltext ist hässlich, hab ihn nur auf die schnelle zusammen getippt.

    Quelltext
    [autoit]


    #cs INI Datei Beispiel: myini.ini

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

    [Setting]
    Count=5
    [Adressen]
    Adresse1=www.google.de
    Adresse2=www.google.com
    Adresse3=www.blog4it.de
    Adresse4=www.it-runde.de
    Adresse5=www.it-runde123321.de

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

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

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

    #include <Array.au3>

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

    Const $iniFile = 'myini.ini'
    Local $AnzAdr,$arrAdr[1][41]

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

    _readINI()

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

    Func _readINI()
    $AnzAdr = IniRead($iniFile,'Setting','Count',0)
    If $AnzAdr = 0 Then Return
    ReDim $arrAdr[$AnzAdr][41]
    For $i = 0 To $AnzAdr -1
    $arrAdr[$i][0] = IniRead($iniFile,'Adressen','Adresse' & $i + 1,'NV')
    For $n = 1 To 40
    $arrAdr[$i][$n] = 0
    Next
    Next
    EndFunc

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

    Func _ping()
    For $i = 0 To $AnzAdr -1
    For $n = 40 To 2 Step -1
    $arrAdr[$i][$n] = $arrAdr[$i][$n - 1]
    Next
    $arrAdr[$i][1] = Ping($arrAdr[$i][0])
    Next
    EndFunc

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

    #include <ComboConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GDIPlus.au3>
    #Region ### START Koda GUI section ### Form=
    $frmMain = GUICreate("PingMonitor", 820, 200)
    $hWnd = WinGetHandle("PingMonitor")
    $cmboZiele = GUICtrlCreateCombo($arrAdr[0][0], 8, 8, 177, 25)
    For $i = 0 To $AnzAdr -1
    GUICtrlSetData($cmboZiele, $arrAdr[$i][0])
    Next
    $lblDurchschnitt = GUICtrlCreateLabel('Durchs.: ',620,70,80)
    $lblZuletzt = GUICtrlCreateLabel('Letzter Wert: ',620,90,80)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    Local $aPoints[82][2]
    _GDIPlus_Startup ()
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND ($hWnd)

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

    AdlibEnable('_draw',1000)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    _GDIPlus_GraphicsDispose ($hGraphic)
    _GDIPlus_Shutdown ()
    Exit

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

    EndSwitch

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

    WEnd

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

    Func _draw()
    $id = _ArraySearch($arrAdr,GUICtrlRead($cmboZiele))
    _ping()
    $posNullX = 180
    $posNullY = 10
    $hPen25 = _GDIPlus_PenCreate(0xFF00FF00)
    $hPen50 = _GDIPlus_PenCreate(0xFF0000FF)
    $hPen75 = _GDIPlus_PenCreate(0xFFFF0000)
    $hPen100 = _GDIPlus_PenCreate(0xFFFF00FF)
    $aPoints[0][0] = 42
    $aPoints[1][0] = $posNullY
    $aPoints[1][1] = $posNullX
    $summe = 0
    For $i = 1 to 40
    $summe += $arrAdr[$id][$i]
    $aPoints[$i + 1][0] = 15 * $i
    $ping = $arrAdr[$id][$i]
    If $ping >= 125 Or $ping = 0 Then $ping = 125
    $aPoints[$i + 1][1] = $posNullX - (1 * $ping)
    Next
    $aPoints[42][0] = $posNullY + (15 * 40)
    $aPoints[42][1] = $posNullX
    $hBrush = _GDIPlus_BrushCreateSolid(0xFF88FFFF)
    _WinAPI_RedrawWindow($hWnd)
    _GDIPlus_GraphicsFillPolygon ($hGraphic, $aPoints,$hBrush)
    _GDIPlus_GraphicsDrawLine($hGraphic,$posNullY,$posNullX -25,$posNullY + (15 * 40),$posNullX -25,$hPen25)
    _GDIPlus_GraphicsDrawLine($hGraphic,$posNullY,$posNullX -50,$posNullY + (15 * 40),$posNullX -50,$hPen50)
    _GDIPlus_GraphicsDrawLine($hGraphic,$posNullY,$posNullX -75,$posNullY + (15 * 40),$posNullX -75,$hPen75)
    _GDIPlus_GraphicsDrawLine($hGraphic,$posNullY,$posNullX -100,$posNullY + (15 * 40),$posNullX -100,$hPen100)
    _GDIPlus_GraphicsDrawRect($hGraphic,$posNullY,$posNullX-130,600,130)

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

    GUICtrlSetData($lblDurchschnitt,'Durchs.: ' & Round($summe / 40,2))
    GUICtrlSetData($lblZuletzt,'Letzter Wert: ' & $arrAdr[$id][1])
    EndFunc

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


    [Setting]
    Count=5
    [Adressen]
    Adresse1=www.google.de
    Adresse2=www.google.com
    Adresse3=www.blog4it.de
    Adresse4=www.it-runde.de
    Adresse5=www.it-runde123321.de

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

  • Hey,

    genau das ist es was ich suche, verstehe GDi bloss nicht so richtig.

    Wie kann ich mehrer rechner anpingen und sie Gleichzeitig in der GUI darstellen und dabei die Antwortzeit von allen verbindungen einzeln sehen?
    Wie kann ich bei Überschreiten eines Schwellwertes ein Ereignis erzeugen z.B. Roter Label....

    Kannst du mir dabei helfen??

    Danke und Gruß
    SubZero

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

    Einmal editiert, zuletzt von subzero007 (26. August 2009 um 20:48)

  • Na, dann muss ich wohl noch mal meinen Quelltext etwas anpassen :whistling: Bin schon dabei :)

    Allerdings stelle ich grade fest, das ich da wirklich total durcheinander geskriptet habe, Mist. Mal sehen was ich da noch retten kann, so das man es auch nachvollziehen kann.

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

    Einmal editiert, zuletzt von McPoldy (26. August 2009 um 21:38)

  • So, ich habe mich noch mal dran gesetzt und eine halbwegs ansehnliche GUI zusammen gebastelt:

    Vorab, hier das Video wie es derzeit aussieht: VIDEO

    Quelltext
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GDIPlus.au3>
    #include <Array.au3>

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

    $FormInfo = GUICreate("Form1", 300, 50, -1, -1, $WS_POPUP, 0)
    GUISetBkColor(0xcccccc)
    GUICtrlCreateLabel("Daten werden geladen...",10,10,300,30)
    GUICtrlSetFont(-1,20)
    $hwnd = WinGetHandle($FormInfo)
    GUISetState(@SW_SHOW,$hwnd)

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

    Const $bgColor = 0x999999
    Const $totalwidth = 426
    Const $totalheight = 236
    Const $refreshTime = 2500
    Const $stdSchwellwert = 20

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

    Global $aPoints[42][2]

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

    ; 1. Adresse
    Global $ArrDat1[40]
    $ArrDat1 = _startupPing($ArrDat1,'www.google.de')

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

    ; 2. Adresse
    Global $ArrDat2[40]
    $ArrDat2 = _startupPing($ArrDat2,'www.blog4it.de')

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

    ; 3. Adresse
    Global $ArrDat3[40]
    $ArrDat3 = _startupPing($ArrDat3,'www.autoit.de')

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

    ; 4. Adresse
    Global $ArrDat4[40]
    $ArrDat4 = _startupPing($ArrDat4,'www.youtube.com')
    GUIDelete($hwnd)

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 852, 550)
    GUISetBkColor($bgColor)
    $hwnd = WinGetHandle($Form1)
    GUISetState(@SW_SHOW,$hwnd)
    #EndRegion ### END Koda GUI section ###

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

    ; GDI starten und Grafikobjekt erzeugen wo wir malen können.
    _GDIPlus_Startup()
    $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hwnd)
    Sleep(200)

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

    ; Grafik das erstemal laden
    $ArrDat1 = _PaintStatistik('www.google.de',0,20,$stdSchwellwert,$ArrDat1)
    $ArrDat2 = _PaintStatistik('www.blog4it.de',426,20,$stdSchwellwert,$ArrDat2)
    $ArrDat3 = _PaintStatistik('www.autoit.de',0,280,$stdSchwellwert,$ArrDat3)
    $ArrDat4 = _PaintStatistik('www.youtube.com',426,280,$stdSchwellwert,$ArrDat4)

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

    ; in einem Zeitintervall von x MS refresh
    AdlibEnable('_RePing',$refreshTime)

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

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

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

    EndSwitch
    WEnd

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

    Func _RePing()
    AdlibDisable()
    $ArrDat1 = _PaintStatistik('www.google.de',0,20,$stdSchwellwert,$ArrDat1)
    $ArrDat2 = _PaintStatistik('www.blog4it.de',426,20,$stdSchwellwert,$ArrDat2)
    $ArrDat3 = _PaintStatistik('www.autoit.de',0,280,$stdSchwellwert,$ArrDat3)
    $ArrDat4 = _PaintStatistik('www.youtube.com',426,280,$stdSchwellwert,$ArrDat4)
    AdlibEnable('_RePing',$refreshTime)
    EndFunc

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

    Func _PaintStatistik($adresse,$posX,$posY,$schwellwert,$datenArray,$titel = $adresse)
    ; Dekleration Variablen
    Dim $ping,$hBrushBackground,$hPenBoarder,$messwerteX = $posX+40,$messwerteY = $posY+131,$summe = 0

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

    ; Deklaration Zeichenwergzeuge
    $hBrushBackground = _GDIPlus_BrushCreateSolid(0xFFFFFFFF)
    $hBrushStatusOK = _GDIPlus_BrushCreateSolid(0xFF00FF00)
    $hBrushStatusFehler = _GDIPlus_BrushCreateSolid(0xFFFF0000)
    $hBrushKurveRot = _GDIPlus_BrushCreateSolid(0x22FF0000)
    $hBrushKurveGruen = _GDIPlus_BrushCreateSolid(0x2200FF00)
    $hPenBoarder = _GDIPlus_PenCreate(0xFF000000,3)

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

    ; Rahmen etc. zeichen, Grunddaten
    _GDIPlus_GraphicsFillRect($hGraphics,$posX,$posY,$totalwidth,$totalheight,$hBrushBackground)
    _GDIPlus_GraphicsDrawRect($hGraphics,$posX,$posY,$totalwidth,$totalheight,$hPenBoarder)
    _GDIPlus_GraphicsDrawLine($hGraphics,$posX,$posY+160,$posX+$totalwidth,$posY+160,$hPenBoarder)
    _GDIPlus_GraphicsDrawLine($hGraphics,$posX+40,$posY+31,$posX+419,$posY+31)
    _GDIPlus_GraphicsDrawLine($hGraphics,$posX+40,$posY+56,$posX+419,$posY+56)
    _GDIPlus_GraphicsDrawLine($hGraphics,$posX+40,$posY+81,$posX+419,$posY+81)
    _GDIPlus_GraphicsDrawLine($hGraphics,$posX+40,$posY+106,$posX+419,$posY+106)
    _GDIPlus_GraphicsDrawLine($hGraphics,$posX+40,$posY+131,$posX+419,$posY+131)

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

    ; DatenArray verschieben um eins (39 nach 40, 38 nach 39,.....)
    For $i = 39 To 1 Step -1
    $datenArray[$i] = $datenArray[$i - 1]
    Next

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

    $ping = Ping($adresse,125)
    If $ping > 125 Then $ping = 0
    $datenArray[0] = $ping

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

    ; Messwerte setzen
    $aPoints[0][0] = 41
    $aPoints[1][0] = $messwerteX
    $aPoints[1][1] = $messwerteY
    $summe = 0
    For $i = 2 to 40
    $summe += $datenArray[$i - 2]
    $aPoints[$i][0] = $messwerteX + (10 * ($i-2))
    $aPoints[$i][1] = $messwerteY - $datenArray[$i - 2]
    Next
    $aPoints[41][0] = ($messwerteX + (10 * (($i - 2))) -10)
    $aPoints[41][1] = $messwerteY

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

    If round($summe / 40,2) >= $schwellwert Then
    _GDIPlus_GraphicsFillPolygon ($hGraphics, $aPoints,$hBrushKurveRot)
    Else
    _GDIPlus_GraphicsFillPolygon ($hGraphics, $aPoints,$hBrushKurveGruen)
    EndIf

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

    ; Texte schreiben
    _GDIPlus_GraphicsDrawString($hGraphics,$titel,$posX + 10,$posY + 165,"Arial",14) ; Titel (Adresse)
    _GDIPlus_GraphicsDrawString($hGraphics,StringFormat('(%s)',$adresse),$posX + 10,$posY + 185,"Arial",10) ; (Adresse)
    _GDIPlus_GraphicsDrawString($hGraphics,StringFormat('Durchsch. Wert: %s',round($summe / 40,2)),$posX + 10,$posY + 210,"Arial",10) ; Durchsch. Wert:
    _GDIPlus_GraphicsDrawString($hGraphics,StringFormat('Letzter Wert: %s',$datenArray[0]),$posX + 210,$posY + 210,"Arial",10) ; Letzter Wert:
    _GDIPlus_GraphicsDrawString($hGraphics,'100',$posX + 5,$posY + 23,"Arial",10) ; 100 MS
    _GDIPlus_GraphicsDrawString($hGraphics,'75',$posX + 10,$posY + 48,"Arial",10) ; 75 MS
    _GDIPlus_GraphicsDrawString($hGraphics,'50',$posX + 10,$posY + 73,"Arial",10) ; 50 MS
    _GDIPlus_GraphicsDrawString($hGraphics,'25',$posX + 10,$posY + 98,"Arial",10) ; 25 MS
    _GDIPlus_GraphicsDrawString($hGraphics,'0',$posX + 17,$posY + 123,"Arial",10) ; 0 MS

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

    ; Status seten
    If round($summe / 40,2) >= $schwellwert Then
    _GDIPlus_GraphicsFillRect($hGraphics,$posX+355,$posY+166,65,65,$hBrushStatusFehler)
    Else
    _GDIPlus_GraphicsFillRect($hGraphics,$posX+355,$posY+166,65,65,$hBrushStatusOK)
    EndIf

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

    ; Das geänderte DatenArray zurückgeben
    Return $datenArray
    EndFunc

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

    Func _startupPing($arr,$adr)
    For $i = 39 To 0 Step -1
    $ping = Ping($adr,125)
    If $ping > 125 Then $ping = 0
    $arr[$i] = $ping
    Next
    Return $arr
    EndFunc

    [/autoit]

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)