Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi CPU Temperatur Auslesen (https://www.delphipraxis.net/89408-cpu-temperatur-auslesen.html)

Robert Marquardt 31. Mär 2007 04:42

Re: CPU Temperatur Auslesen
 
Ich wollte darauf aufmerksam machen das es nicht einfach ist die Temperaturen zu bekommen.

richard_boderich 31. Mär 2007 08:11

Re: CPU Temperatur Auslesen
 
achtung !!!!

du solltest sehr vorsichtig sein mit dem was du tust. einfach rumprobieren und auf irgendwelche adressen des smbus schreiben mit
directem Port IO zugriff kann nach hinten losgehen und eventuell zu hardwareschaeden fuehren. bei vielen sensorchips benoetigst
du eine berechnungsformel fuer die temperatur die sich aus mehreren registerwerten zusammensetzt. war bei meinem programm auch so.
(Poseidon Hardwaremonitor). mein rat an dich ermittele genau welchen chip du auf dem mainboard hast und suche dir dafuer im internet die specs raus. da stehen dann alle registeradressen und berechnungsformeln drinn die du benoetigst inkl. reservierter
register. einfach alle sensortypen durchzuprobieren bringt es nicht. da dort sehr feine unterschiede bestehen, auch in den chips eines herstellers.

gruß richard

Corpsman 31. Mär 2007 08:31

Re: CPU Temperatur Auslesen
 
Liste der Anhänge anzeigen (Anzahl: 1)
@Muetze1

Den HWMonitor hab ich ausprobiert, er Zeigt meine CPU Temp auch an. Allerdings unter Abschaltung des CPU Lüfters. => UNBRAUCHBAR

@richard_boderich

Wie kriegt man den genau ras was für einen Chippsatz man hat ?

Das Board weis ich ja das ist das ASUS P5B.

Und mein Win GeräteManager zeigt mir nu ettliche Chipsätze an, welcher ist da der Richtige ?

Hab mal nen Screenshot mit hochgeladen.

bitsetter 31. Mär 2007 09:18

Re: CPU Temperatur Auslesen
 
Hi,

@Corpsman wenn du schon ein Asus Mainboard hast, dann bietet sich doch das Programm ASUS PCProbe von Asus doch an, bei dem Programm soll eine Asus.dll beiliegen. Hier sind alle Funktionen der DLL aufgelistet. Und hier ist das ganze mit Code für die Funktion 'GetCPUTemperature' auch wenn nicht in Delphi. Das wird man bestimmt auch in Delphi hinbekommen oder einfach mal im Netz suchen.

richard_boderich 31. Mär 2007 10:15

Re: CPU Temperatur Auslesen
 
@corp

es geht um den sensorchip, nicht um den chipsatz des mainboards. der chipsatz ist nur wichtig fuer das ansprechen des SMbus.
der sensorcchiptyp ist wichtig um die genauen portadressen zu ermitteln. bei neueren cpu's kannst du aber auch das integrierte
temperaturregister der cpu auslesen.

richard

//edit dein screeni zeigt , das du einen Intel ICH8 SMbus hast.

Corpsman 31. Mär 2007 13:20

Re: CPU Temperatur Auslesen
 
Also Asus.dll behauptet das ich einen Unbekannten Chipsatz hätte.



Und wo Kriege ich nu die Numer des Sensor Chips her ?

Auf Meiner CPU steht 6700 etho aber mir sagt das man Gar nix

richard_boderich 31. Mär 2007 14:03

Re: CPU Temperatur Auslesen
 
oh je,

das is ein winziger chip auf dem motherboard. einige hersteller typen LM, winbound,ITE am besten du googgelst mal.
es kann auch sein das die asussoftware dein boaerd nicht unterstuetzt, obwohl es von asus war. sowas hatte ich auch schon mal
und haengt mit den unterschieedlichen verbauten sensortypen und chipsaetzen zusammen. es gab von dem monitortool auch 2 versionen bei asus. keine ahnung ob das immernoch so ist.

richard

Corpsman 2. Apr 2007 20:02

Re: CPU Temperatur Auslesen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Also ich habe nun mal das Asus Probe II installiert und das Kann mein Board Problemlos auslesen.

Ich habe auch schon rausgefunden das es das mit Hilfe der 2 Dateien macht die ich angehängt habe.

Das eine ist ne DLL die meines erachtens das ganze macht. die Sys file dürfte nur zum Ports öffnen sein.

Gibts nu ne Möglichkeit sage wir mal eine "Pseudo" dll zu schreiben die sich für die DLL ausgibt und dann sichtbar macht welche Ports das Asus Probe anfordert ?

Bzw kann mir einer von euch sagen wie ich die Import Export Teile aus dieser DLL in Delphi übernehme ?

bitsetter 2. Apr 2007 20:41

Re: CPU Temperatur Auslesen
 
Hi,

die Export Tabelle deiner Dll sieht nicht gerade erfolgsversprechend aus:

ASIO_Close
ASIO_GetCpuID
ASIO_InPortB
ASIO_InPortD
ASIO_MapMem
ASIO_Open
ASIO_OutPortB
ASIO_OutPortD
ASIO_ReadMSR
ASIO_UnmapMem
ASIO_WriteMSR
OC_GetCurrentCpuFrequency

Was bei Asus Asus Probe ist, ist bei Gigabyte das Tool SIV (System Information Viewer). Das Tool hatte Gigabyte mit auf die Treiber CD des Mainboards gelegt, dort lagen auch 2 Dll's bei, die eine hatte folgende Export Tabelle:

LX_Get_CPUFanCount
LX_Get_CPUTempValue
LX_Get_SystemFanValue
LX_Get_VoltageCPUValue
LX_Get_VoltageP12Value
LX_Get_VoltageP33Value
LX_Get_VoltageP5Value

Auch wenn Corpsman das nicht viel nutzen wird, aber mit folgender Funktion konnte ich ohne weiteres die CPU Temperatur und auch den Rest auslesen:

Delphi-Quellcode:
function GetCpuTemp: cardinal;
type
  LX_Get_CPUTempValue = function(pCpuTemp: Pointer): cardinal stdcall;
var
  hInstDll: THandle;
  Get_CPUTempValue: LX_Get_CPUTempValue;
  Pfad: AnsiString;
begin
  Result := 0;
  Pfad := ExtractFilePath(application.ExeName) + 'w83781d.dll';
  if FileExists(Pfad) then
  begin
    hInstDll := LoadLibrary(PChar(Pfad));
    if hInstDll <> 0 then
    try
      Get_CPUTempValue:= GetProcAddress(hInstDll, 'LX_Get_CPUTempValue');
      if Assigned(Get_CPUTempValue) then
        Get_CPUTempValue(Addr(Result));
    finally
      FreeLibrary(hInstDll);
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  form1.caption:= inttostr(GetCpuTemp);
end;

Corpsman 2. Apr 2007 21:00

Re: CPU Temperatur Auslesen
 
@ bitsetter

Ich Versuch alles wenn nur irgendwas mal zum Erfolg führt.

Kannst diese w83781d.dll auch mal Hochladen, dann Probiere ich es aus.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:07 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz