Code : Tout sélectionner
#NoTrayIcon
#include <iWMILib.au3>
#include <GUIConstantsEx.au3>
_iWMI_Initialize()
GUICreate("WMI addon for EVEREST", 620, 314, -1, -1, -1, 0x2000000)
$contID = GUICtrlCreateLabel("Value", 575, 138)
Global $aData[101]
Global $gGraph = _Graph_Create(50, 18, 513, 254)
_Graph_SetRange_X($gGraph, 1, 100, 0)
_Graph_SetRange_Y($gGraph, 0, 100, 10)
_Redraw()
GUISetState()
Do
_Randomise()
_Redraw()
Until GUIGetMsg() = -3
Func _Randomise()
$cObjects = _iWMI_ExecQueryRaw( _iWMI_Connect("localhost",0,"","", "Root\WMI" ), "SELECT * FROM EVEREST_SensorValues", False )
For $oObject In $cObjects
Next
GUICtrlSetData($contID, $oObject.Value)
If $aData[100] <> $oObject.Value Then
For $i = 1 To 99
$aData[$i] = $aData[$i + 1]
Next
$aData[100] = $oObject.Value
EndIf
EndFunc ;==>_Randomise
Func _Redraw()
GUISetState(@SW_LOCK)
_Graph_Clear($gGraph)
_Graph_SetGrid_X($gGraph, 5, 0x468c2f)
_Graph_SetGrid_Y($gGraph, 10, 0x468c2f)
_Graph_Set_Color($gGraph, 0xF9F32B)
_Graph_Plot_Start($gGraph, 1, $gGraph[1])
For $i = 1 To 100
_Graph_Plot_Line($gGraph, $i, $aData[$i])
Next
_Graph_Refresh($gGraph)
GUISetState(@SW_UNLOCK)
EndFunc ;==>_Redraw
Func _Graph_Create($iLeft, $iTop, $iWidth, $iHeight, $hColourBorder = 0x000000, $hColorFill = 0xFFFFFF)
$hWnd = GUICtrlCreateGraphic($iLeft, $iTop, $iWidth + 1, $iHeight + 1)
GUICtrlSetColor(-1, $hColourBorder)
GUICtrlSetBkColor(-1, $hColorFill)
Local $ahTicksLabelsX[1]
Local $ahTicksLabelsY[1]
Local $ahTicksX[1]
Local $ahTicksY[1]
Dim $aGraphArray[16] = ["", $hWnd, $iLeft, $iTop, $iWidth, $iHeight, 0, 1, 0, 1, _
$ahTicksX, $ahTicksLabelsX, $ahTicksY, $ahTicksLabelsY, $hColourBorder, $hColorFill]
Return $aGraphArray
EndFunc ;==>_Graph_Create
Func _Graph_Clear(ByRef $aGraphArray)
GUICtrlDelete($aGraphArray[1])
$aGraphArray[1] = GUICtrlCreateGraphic($aGraphArray[2], $aGraphArray[3], _
$aGraphArray[4] + 1, $aGraphArray[5] + 1)
GUICtrlSetBkColor(-1, 0x000000)
GUICtrlSetColor(-1, 0x000000)
EndFunc ;==>_Graph_Clear
Func _Graph_SetRange_X(ByRef $aGraphArray, $iLow, $iHigh, $iXTicks = 1, $bLabels = 1, $iRound = 0)
;----- load user vars to array -----
$aGraphArray[6] = $iLow
$aGraphArray[7] = $iHigh
;----- prepare nested array -----
$ahTicksX = $aGraphArray[10]
$ahTicksLabelsX = $aGraphArray[11]
;----- delete any existing ticks -----
For $i = 1 to (UBound($ahTicksX) - 1)
GUICtrlDelete($ahTicksX[$i])
Next
Dim $ahTicksX[1]
;----- create new ticks -----
For $i = 1 To $iXTicks + 1
ReDim $ahTicksX[$i + 1]
$ahTicksX[$i] = GUICtrlCreateLabel("", (($i - 1) * ($aGraphArray[4] / $iXTicks)) + $aGraphArray[2], _
$aGraphArray[3] + $aGraphArray[5], 1, 5)
GUICtrlSetBkColor(-1, 0x000000)
GUICtrlSetState(-1, $GUI_DISABLE)
Next
;----- delete any existing labels -----
For $i = 1 to (UBound($ahTicksLabelsX) - 1)
GUICtrlDelete($ahTicksLabelsX[$i])
Next
Dim $ahTicksLabelsX[1]
;----- create new labels -----
For $i = 1 To $iXTicks + 1
ReDim $ahTicksLabelsX[$i + 1]
$ahTicksLabelsX[$i] = GUICtrlCreateLabel("", _
($aGraphArray[2] + (($aGraphArray[4] / $iXTicks) * ($i - 1))) - (($aGraphArray[4] / $iXTicks) / 2), _
$aGraphArray[3] + $aGraphArray[5] + 10, $aGraphArray[4] / $iXTicks, 13, 1)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
Next
;----- if labels are required, then fill -----
If $bLabels = 1 Then
For $i = 1 To (UBound($ahTicksLabelsX) - 1)
GUICtrlSetData($ahTicksLabelsX[$i], _
StringFormat("%." & $iRound & "f", _Graph_Reference_Pixel("p", (($i - 1) * ($aGraphArray[4] / $iXTicks)), _
$aGraphArray[6], $aGraphArray[7], $aGraphArray[4])))
Next
EndIf
;----- load created arrays back into array -----
$aGraphArray[10] = $ahTicksX
$aGraphArray[11] = $ahTicksLabelsX
EndFunc ;==>_Graph_SetRange_X
Func _Graph_SetRange_Y(ByRef $aGraphArray, $iLow, $iHigh, $iYTicks = 1, $bLabels = 1, $iRound = 0)
;----- load user vars to array -----
$aGraphArray[8] = $iLow
$aGraphArray[9] = $iHigh
;----- prepare nested array -----
$ahTicksY = $aGraphArray[12]
$ahTicksLabelsY = $aGraphArray[13]
;----- delete any existing ticks -----
For $i = 1 to (UBound($ahTicksY) - 1)
GUICtrlDelete($ahTicksY[$i])
Next
Dim $ahTicksY[1]
;----- create new ticks -----
For $i = 1 To $iYTicks + 1
ReDim $ahTicksY[$i + 1]
$ahTicksY[$i] = GUICtrlCreateLabel("", $aGraphArray[2] - 5, _
($aGraphArray[3] + $aGraphArray[5]) - (($aGraphArray[5] / $iYTicks) * ($i - 1)), 5, 1)
GUICtrlSetBkColor(-1, 0x000000)
GUICtrlSetState(-1, $GUI_DISABLE)
Next
;----- delete any existing labels -----
For $i = 1 to (UBound($ahTicksLabelsY) - 1)
GUICtrlDelete($ahTicksLabelsY[$i])
Next
Dim $ahTicksLabelsY[1]
;----- create new labels -----
For $i = 1 To $iYTicks + 1
ReDim $ahTicksLabelsY[$i + 1]
$ahTicksLabelsY[$i] = GUICtrlCreateLabel("", $aGraphArray[2] - 40, _
($aGraphArray[3] + $aGraphArray[5]) - (($aGraphArray[5] / $iYTicks) * ($i - 1)) - 6, 30, 13, 2)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
Next
;----- if labels are required, then fill -----
If $bLabels = 1 Then
For $i = 1 To (UBound($ahTicksLabelsY) - 1)
GUICtrlSetData($ahTicksLabelsY[$i], StringFormat("%." & $iRound & "f", _Graph_Reference_Pixel("p", _
(($i - 1) * ($aGraphArray[5] / $iYTicks)), $aGraphArray[8], $aGraphArray[9], $aGraphArray[5])))
Next
EndIf
;----- load created arrays back into array -----
$aGraphArray[12] = $ahTicksY
$aGraphArray[13] = $ahTicksLabelsY
EndFunc ;==>_Graph_SetRange_Y
Func _Graph_Plot_Start(ByRef $aGraphArray, $iX, $iY)
;----- MOVE pen to start point -----
GUICtrlSetGraphic($aGraphArray[1], $GUI_GR_MOVE, _
_Graph_Reference_Pixel("x", $iX, $aGraphArray[6], $aGraphArray[7], $aGraphArray[4]), _
_Graph_Reference_Pixel("y", $iY, $aGraphArray[8], $aGraphArray[9], $aGraphArray[5]))
EndFunc ;==>_Graph_Plot_Start
Func _Graph_Plot_Line(ByRef $aGraphArray, $iX, $iY)
;----- Draw line from previous point to new point -----
GUICtrlSetGraphic($aGraphArray[1], $GUI_GR_LINE, _
_Graph_Reference_Pixel("x", $iX, $aGraphArray[6], $aGraphArray[7], $aGraphArray[4]), _
_Graph_Reference_Pixel("y", $iY, $aGraphArray[8], $aGraphArray[9], $aGraphArray[5]))
EndFunc ;==>_Graph_Plot_Line
Func _Graph_Set_Color(ByRef $aGraphArray, $hColor, $hBkGrdColor = $GUI_GR_NOBKCOLOR)
GUICtrlSetGraphic($aGraphArray[1], $GUI_GR_COLOR, $hColor, $hBkGrdColor)
EndFunc ;==>_Graph_Set_Color
Func _Graph_SetGrid_X(ByRef $aGraphArray, $Ticks = 1, $hColor = 0xf0f0f0)
_Graph_Set_Color($aGraphArray, $hColor, $GUI_GR_NOBKCOLOR)
Select
Case $Ticks > 0
For $i = $aGraphArray[6] To $aGraphArray[7] Step $Ticks
If $i = Number($aGraphArray[6]) Or $i = Number($aGraphArray[7]) Then ContinueLoop
GUICtrlSetGraphic($aGraphArray[1], $GUI_GR_RECT, _ ;rectangle
_Graph_Reference_Pixel("x", $i, $aGraphArray[6], $aGraphArray[7], $aGraphArray[4]), _ ;x
1, _ ;y
1, _ ;width
$aGraphArray[5] - 1) ;height
Next
EndSelect
_Graph_Set_Color($aGraphArray, 0x000000)
EndFunc ;==>_Graph_SetGrid_X
Func _Graph_SetGrid_Y(ByRef $aGraphArray, $Ticks = 1, $hColor = 0xf0f0f0)
_Graph_Set_Color($aGraphArray, $hColor, $GUI_GR_NOBKCOLOR)
Select
Case $Ticks > 0
For $i = $aGraphArray[8] To $aGraphArray[9] Step $Ticks
If $i = Number($aGraphArray[8]) Or $i = Number($aGraphArray[9]) Then ContinueLoop
GUICtrlSetGraphic($aGraphArray[1], $GUI_GR_RECT, _ ;rectangle
1, _ ;x
_Graph_Reference_Pixel("y", $i, $aGraphArray[8], $aGraphArray[9], $aGraphArray[5]), _ ;y
$aGraphArray[4] - 1, _ ;width
1) ;height
Next
EndSelect
_Graph_Set_Color($aGraphArray, 0x000000)
EndFunc ;==>_Graph_SetGrid_Y
Func _Graph_Refresh(ByRef $aGraphArray)
GUICtrlSetGraphic($aGraphArray[1], $GUI_GR_REFRESH)
EndFunc ;==>_Graph_Refresh
Func _Graph_Reference_Pixel($iType, $iValue, $iLow, $iHigh, $iTotalPixels)
;----- perform pixel reference calculations -----
Switch $iType
Case "x"
Return (($iTotalPixels / ($iHigh - $iLow)) * (($iHigh - $iLow) * (($iValue - $iLow) / ($iHigh - $iLow))))
Case "y"
Return ($iTotalPixels - (($iTotalPixels / ($iHigh - $iLow)) * (($iHigh - $iLow) * (($iValue - $iLow) / ($iHigh - $iLow)))))
Case "p"
Return ($iValue / ($iTotalPixels / ($iHigh - $iLow))) + $iLow
EndSwitch
EndFunc ;==>_Graph_Reference_Pixel