g15 app mit advlcd-udf und coretemp

  • Moin

    das Applet funktioniert über die ADVLCD-UDF von chip.
    Es zeigt die CPU Temperatur, Auslastung, Mhz, RAM Auslastung und Zeit an,
    die CPU Infos bekomme ich durch die CoreTempInfo-udf ( weis nicht mehr von wem ich die hab, wurde von mir aber auch überarbeitet)
    Core Temp muss dafür natürlich laufen und die dll muss vorhanden sein

    Spoiler anzeigen
    [autoit]

    ; Diese UDF benötigt die GetCoreTempInfo.dll
    ; sowie das installierte CoreTemp programm.

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

    #include-once

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

    ;If Not FileExists(@ScriptDir & "\GetCoreTempInfo.dll") Or Not ProcessExists("Core Temp.exe") Then
    ; MsgBox(16,"Error", "Core Temp.exe läuft und/oder GetCoreTempInfo.dll existiert nicht", 20)
    ; Exit
    ;EndIf

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

    Global $dll
    Global $CORE_TEMP_SHARED_DATA

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: _CoreTemp_DLLOpen()
    ; Beschreibung ..: öffnet die coretemp.dll
    ; Syntax ........:
    ; Parameter .....: $path - Speicherort der dll, Standart ist Speicherort der UDF
    ; Rückgabewerte .: Erfolg - Handle
    ; Fehler - -1 und Msgbox Fehlermeldung
    ; Bemerkungen ...:
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func _CoreTemp_DLLOpen($path = "GetCoreTempInfo.dll")
    If FileExists($path) Or ProcessExists("Core Temp.exe") Then
    $dll = DllOpen($path)
    $CORE_TEMP_SHARED_DATA = DllStructCreate("uint uiLoad[256];uint uiTjMax[128];uint uiCoreCnt;uint uiCPUCnt;float fTemp[256];float fVID;float fCPUSpeed;float fFSBSpeed;float fMultipier;char sCPUName[100];ubyte ucFahrenheit;ubyte ucDeltaToTjMax")
    Return $dll
    Else
    MsgBox(16, "Error", "Core Temp.exe läuft und/oder GetCoreTempInfo.dll existiert nicht", 20)
    Return (-1)
    EndIf
    EndFunc ;==>_CoreTemp_DLLOpen

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: _CoreTemp_CLLClose()
    ; Beschreibung ..: schließt die dll
    ; Syntax ........:
    ; Parameter .....:
    ; Rückgabewerte .: Erfolg
    ; Fehler
    ; Bemerkungen ...:
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func _CoreTemp_DllClose()
    $CORE_TEMP_SHARED_DATA = 0
    DllClose($dll)
    EndFunc ;==>_CoreTemp_DllClose

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: _CoreTemp_GetData()
    ; Beschreibung ..: Aktualisiert alle Infos die abgefragt werden können
    ; Syntax ........:
    ; Parameter .....:
    ; Rückgabewerte .: Erfolg
    ; Fehler
    ; Bemerkungen ...: muss aufgerufen werden bevor Infos abgefragt werden
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func _CoreTemp_GetData()
    $call = DllCall($dll, "int", "fnGetCoreTempInfoAlt", "ptr", DllStructGetPtr($CORE_TEMP_SHARED_DATA))
    Return $call
    EndFunc ;==>_CoreTemp_GetData

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: _CoreTemp_VID()
    ; Beschreibung ..: CPU Spannung
    ; Syntax ........:
    ; Parameter .....:
    ; Rückgabewerte .: Erfolg - gibt CPU Spannung mit 4 Nachkommastellen
    ; Fehler
    ; Bemerkungen ...:
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func _CoreTemp_VID()
    $CPU_VID = DllStructGetData($CORE_TEMP_SHARED_DATA, "fVID")
    Return Round($CPU_VID, 4)
    EndFunc ;==>_CoreTemp_VID

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: _CoreTemp_Load()
    ; Beschreibung ..: gibt die CPU Auslastung wieder
    ; Syntax ........:
    ; Parameter .....: $return - 0 gibt Auslastung als Array aus, 1 als String mit | als Trennzeichen
    ; Rückgabewerte .: Erfolg - CPU Auslastung von jedem Kern
    ; Fehler
    ; Bemerkungen ...:
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func _CoreTemp_Load($return = 0)
    Select
    Case $return = 0
    Local $CPU_Load[_CoreTemp_Cores()]
    For $i = 1 To UBound($CPU_Load)
    $CPU_Load[$i - 1] = DllStructGetData($CORE_TEMP_SHARED_DATA, "uiLoad", $i)
    Next
    Case $return = 1
    $CPU_Load = ""
    For $i = 1 To _CoreTemp_Cores()
    $CPU_Load &= DllStructGetData($CORE_TEMP_SHARED_DATA, "uiLoad", $i) & "|"
    Next
    $CPU_Load = StringMid($CPU_Load, 1, StringLen($CPU_Load) - 1)
    EndSelect
    Return $CPU_Load
    EndFunc ;==>_CoreTemp_Load

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: _CoreTemp_Name()
    ; Beschreibung ..: gibt den CPU Namen wieder
    ; Syntax ........:
    ; Parameter .....:
    ; Rückgabewerte .: Erfolg - CPU Name
    ; Fehler
    ; Bemerkungen ...:
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func _CoreTemp_Name()
    $CPU_Name = DllStructGetData($CORE_TEMP_SHARED_DATA, "sCPUName")
    Return $CPU_Name
    EndFunc ;==>_CoreTemp_Name

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: _CoreTemp_SPEED()
    ; Beschreibung ..: CPU Frequenz in Mhz
    ; Syntax ........:
    ; Parameter .....:
    ; Rückgabewerte .: Erfolg - CPU Frequenz in Mhz
    ; Fehler
    ; Bemerkungen ...:
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func _CoreTemp_Speed()
    $CPU_Speed = Round(DllStructGetData($CORE_TEMP_SHARED_DATA, "fCPUSpeed"), 0)
    Return $CPU_Speed
    EndFunc ;==>_CoreTemp_Speed

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: _CoreTemp_Cores()
    ; Beschreibung ..: Ließt wie viele physikalische Kerne vorhanden sind
    ; Syntax ........:
    ; Parameter .....:
    ; Rückgabewerte .: Erfolg - Anzahl Kerne
    ; Fehler
    ; Bemerkungen ...:
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func _CoreTemp_Cores()
    $CPU_Cores = DllStructGetData($CORE_TEMP_SHARED_DATA, "uiCoreCnt")
    Return $CPU_Cores
    EndFunc ;==>_CoreTemp_Cores

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: _CoreTemp_FSB_Speed()
    ; Beschreibung ..: liest die FSB Frequenz
    ; Syntax ........:
    ; Parameter .....:
    ; Rückgabewerte .: Erfolg - FSB Frequenz in MHz
    ; Fehler
    ; Bemerkungen ...:
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func _CoreTemp_FSB_Speed()
    $CPU_FSB_Speed = Round(DllStructGetData($CORE_TEMP_SHARED_DATA, "fFSBSpeed"), 0)
    Return $CPU_FSB_Speed
    EndFunc ;==>_CoreTemp_FSB_Speed

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: _CoreTemp_Multiplicator()
    ; Beschreibung ..: Liest den Multiplicator aus
    ; Syntax ........:
    ; Parameter .....:
    ; Rückgabewerte .: Erfolg - Multiplicator
    ; Fehler
    ; Bemerkungen ...:
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func _CoreTemp_Multiplicator()
    $CPU_Multiplicator = DllStructGetData($CORE_TEMP_SHARED_DATA, "fMultipier")
    Return $CPU_Multiplicator
    EndFunc ;==>_CoreTemp_Multiplicator

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: _CoreTemp_Temp()
    ; Beschreibung ..: Liest die CPU Temperatur von jedem Kern
    ; Syntax ........:
    ; Parameter .....: $return - 0 gibt Temperatur als Array aus, 1 als String mit | als Trennzeichen
    ; Rückgabewerte .: Erfolg - Temperatur in °C
    ; Fehler
    ; Bemerkungen ...:
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func _CoreTemp_Temp($return = 0)
    Select
    Case $return = 0
    Local $CPU_Temp[_CoreTemp_Cores()]
    For $i = 1 To UBound($CPU_Temp)
    $CPU_Temp[$i - 1] = DllStructGetData($CORE_TEMP_SHARED_DATA, "fTemp", $i)
    Next
    Case $return = 1
    $CPU_Temp = ""
    For $i = 1 To _CoreTemp_Cores()
    $CPU_Temp &= DllStructGetData($CORE_TEMP_SHARED_DATA, "fTemp", $i) & "|"
    Next
    $CPU_Temp = StringMid($CPU_Temp, 1, StringLen($CPU_Temp) - 1)
    EndSelect
    Return $CPU_Temp
    EndFunc ;==>_CoreTemp_Temp

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

    ; #FUNKTION# ====================================================================================================================
    ; Name ..........: _CoreTemp_Test()
    ; Beschreibung ..: erstellt eine Msgbox mit allen CPU Infos
    ; Syntax ........:
    ; Parameter .....:
    ; Rückgabewerte .: Erfolg - Msgbox mit allen CPU Infos
    ; Fehler
    ; Bemerkungen ...:
    ; Verwandt ......:
    ; ===============================================================================================================================
    Func _CoreTemp_Test()
    _CoreTemp_GetData()
    MsgBox(0, "Core Temp", _
    "CPU Name: " & _CoreTemp_Name() & @CRLF & _
    "CPU Speed: " & _CoreTemp_Speed() & " MHz" & @CRLF & _
    "CPU Cores: " & _CoreTemp_Cores() & @CRLF & _
    "CPU FSB Speed: " & _CoreTemp_FSB_Speed() & " MHz" & @CRLF & _
    "CPU Multiplicator: " & _CoreTemp_Multiplicator() & @CRLF & _
    "CPU Temp: " & _CoreTemp_Temp(1) & " °C" & @CRLF & _
    "CPU VID: " & _CoreTemp_VID() & " V" & @CRLF & _
    "CPU Load: " & _CoreTemp_Load(1) & " %")
    EndFunc ;==>_CoreTemp_Test

    [/autoit]


    kommen wir zu meinen 2 Problemen
    1. ich lade ein bmp Bild als Design auf den g15 LCD, jetzt möchte ich darauf die Infos schreiben.
    Natürlich funktioniert das nicht wie ich das mir gedacht hatte,
    einfach das Bild laden den Text schreiben und lcdupdate.
    Das Problem ist das der Text in "weiß" geschrieben wird und das Bild an der stelle auch "weiß" ist.
    Kann ich die Schrift Farbe nicht verstellen?

    2. Wenn ich das Script so laufen lasse, wird das Applet nicht richtig erstellt.
    Im LCD Manager wird es als ausgeführt angezeigt, jedoch läst es sich nicht am LCD auswählen.
    Wenn ich jedoch die Coretemp Geschichte ausklammer (heißt dll init und die info funktionen) funktioniert es auf einmal.
    Ich habe die Coretemp udf schon getestet (deswegen gibt es auch eine test funktion in der udf) sie funktioniert problemlos jedoch nicht in dem Script.
    Es scheint so als ob das Script irgendwo zwischen _CoreTemp_DLLOpen() und _CoreTemp_Load() hängen bleibt.
    Woran liegt das?

    Spoiler anzeigen
    [autoit]

    ;#include "\AtiAdl-UDF.au3"
    #include "AVDLCD-UDF.au3"
    #include "GetCoreTempInfo.au3"
    #Include <String.au3>

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

    OnAutoItExitRegister("_Exit")

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

    $appname = "Multi-LCD"
    $pixmap = @scriptdir & "\G15 app.bmp"
    $fontsize = 13
    Global $loadxy[4] = [13,21,29,36]
    Global $tempxy[4] = [11,19,27,35]

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

    $lcdinit = LcdInitialize(@ScriptDir & "\advlcd.dll")
    If @error Then
    MsgBox(0, $appname, "LCDInitialize konnte nicht ausgeführt werden")
    _Exit()
    EndIf

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

    Global $hApplet = LcdCreateApplet($appname, $LCD_DEVICE_MONO, 0, 1)
    If @error Then
    MsgBox(0, $appname, "LcdCreateApplet ist fehlgeschlagen")
    _Exit()
    EndIf

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

    $pixmapdesign = LcdLoadPixmap($pixmap)
    If @error Then
    MsgBox(0, $appname, "LcdLoadPixmap ist fehlgeschlagen")
    _Exit()
    EndIf

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

    $font = LcdLoadFont("Arial", $fontsize, $LCD_FONT_DEFAULT, "arial.ttf")
    LcdSetFont($hApplet, $font)
    #cs
    $hcoretemp = _CoreTemp_DLLOpen()
    If @error Then
    MsgBox(0, $appname, "Coretemp.dll konnte nicht gestartet werden")
    _Exit()
    EndIf
    #ce
    LcdSetPriority($hApplet, $LCD_PRIORITY_NORMAL, True)
    LcdClear($hApplet)

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

    While 1
    LcdWaitActivation($hApplet)
    If LcdAppletOpened($hApplet) Then
    Do
    _CoreTemp_GetData()
    $cputemp = _CoreTemp_Temp()
    $cpuspeed = _CoreTemp_Speed()
    $cpuload = _CoreTemp_Load()
    #ce
    ;ati adl abfragen

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

    $Ram = MemGetStats()

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

    LcdDrawPixmap($hApplet, $pixmapdesign)
    #cs
    For $i = 1 To _CoreTemp_Cores()
    LcdDrawText($hApplet, $cpuload[$i-1] & " %", 3, $loadxy[$i-1])
    LcdDrawText($hApplet, $cputemp[$i-1], 49, $tempxy[$i-1])
    Next

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

    LcdDrawText($hApplet, $cpuspeed, 22, 2)
    #ce
    ;LcdDrawRect($hApplet, 78, 1, Round(28/100*$gpuload+78), 2, True)
    ;LcdDrawRect($hApplet, 78, 6, Round(28/100*$gpufan+78), 7, True)

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

    ;LcdDrawText($hApplet, $gputemp, 71, 36)
    ;LcdDrawText($hApplet, $gpuvolt, 71, 27)

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

    LcdDrawText($hApplet, @HOUR & ":" & @MIN & ":" & @SEC, 115, 1)

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

    LcdDrawText($hApplet, $Ram[0], 118, 14)

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

    ;LcdDrawText($hApplet, $upload, 113, 24)
    ;LcdDrawText($hApplet, $download, 113, 33)

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

    LcdUpdate($hApplet, False)
    Sleep(500)
    LcdClear($hApplet)
    Until LcdAppletOpened($hApplet) = False
    LcdClear($hApplet)
    EndIf
    WEnd

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

    Func _Exit()
    LcdClear($hApplet)
    LcdDeleteApplet($hApplet)
    LcdDeInitialize()
    _CoreTemp_DllClose()
    Exit
    EndFunc

    [/autoit]


    ich hoffe ihr könnt mir helfen :thumbup:
    mfg bulli