Hardwareinformationen

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

 

barratator

Betreff: Hardwareinformationen

BeitragSa, Sep 27, 2008 19:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
ich bin zwar hier kaum Aktiv, aber möchte jetzt auch mal meinen Beitrag leisten.
Zurzeit gibt es noch nahezu keine Userlib, die kostenlos ist, die vom Mainboard Sensordaten auslesen kann.
Jedes Mainboard hat einen anderen Chip dafür und lässt sich anders auslesen. Dies soll jetzt kein Code-bettel-Thread sein, sondern jeder, der für sein Board mal soetwas gemacht hat, kann es hier Posten (sofortn solche Sammelthreads erwünscht sind).

Für mein aktuelles Projekt brauche ich auch soetwas, es liest über die inpout32.dll die Daten direkt aus dem ISA-Bus aus. Dieser Code ist Winbond-Chips geschrieben, getestet wurde es mit einem W83627, jedoch sollte es auch mit einem W83647 und einem W83697 klappen. Möglicherweise noch mehr Smile

Daten: CPU Temperatur, Fan Speeds (3 Stück), Spannung (leider noch zimlich verbuggt bei der umrechnung)

Code: [AUSKLAPPEN]

Global Fan1_div   = 7    , Fan2_div   = 7   , Fan3_div   = 7
Global Fan1_lenght= 4    , Fan2_lenght= 4   , Fan3_lenght= 4
Global Fan1_divpos= $47  , Fan2_divpos= $47 , Fan3_divpos= $47

Graphics 800,600,0,2
SetBuffer BackBuffer()

Repeat
  Cls
  Text 20,20,"Fan Speeds: (noch verbuggt)"

  Text 20, 48 ,"Fan 1: "+GetFanSpeed(1)+" RPM"
  Text 220,48, "Fan 2: "+GetFanSpeed(2)+" RPM"
  Text 420,48, "Fan 3: "+GetFanSpeed(3)+" RPM"

  Text 20,200, "Spannung: (noch verbuggt)"
  Text 20,214+(1*14) ,"VCore A: "+GetVoltage(1)
  Text 20,214+(2*14) ,"VCore B: "+GetVoltage(2)
  Text 20,214+(3*14) ,"+3.3 V : "+GetVoltage(3)
  Text 20,214+(4*14) ,"+5 V   : "+GetVoltage(4)
  Text 20,214+(5*14) ,"+12 V  : "+GetVoltage(5)
  Text 20,214+(6*14) ,"-12 V  : "+GetVoltage(6)
  Text 20,214+(7*14) ,"-5 V   : "+GetVoltage(7)

  Text 20,400, "Temperatur: (noch verbuggt)"
  Text 20,428, "CPU: "+GetCPUTemp()+" °C"
  Text 20,442, "MB : "+GetMBTemp() +" °C"


  Flip
  Delay 1000

Forever

Function GetVoltage#(id) ; 1="vcA"  2="vcB"  3="+3.3"  4="+5" 5="+12" 6="-12" 7="-5"
 Select id
   Case 1: Return ReadData($20)*Float(0.016)
   Case 2: Return ReadData($21)*Float(0.016)
   Case 3: Return ReadData($22)*Float(0.016)
   Case 4: Return ReadData($23)*Float(0.016) / Float(0.595238)
   Case 5: Return ReadData($24)*Float(0.016) / Float(0.263157)
   Case 6: a# = Float(0.0)
           d# = ReadData($25)*Float(0.016)
           v# = 3.5
           Return (d#+v#-a#)/(1-v#)*-1
 
   Case 7: Return ReadData($26)*Float(0.016)

 End Select
End Function

Function GetFanSpeed(id)
  Select id
   Case 1:
     count = ReadData(Fan1_count)
     div = Div2Num(ReadData(Fan1_divpos) Shr 4 And 3)

     Return Int(Float(Float(1.35)*10^6)/Float(count*div))

   Case 2:
     count = ReadData(Fan2_count)
     div = Div2Num(ReadData(Fan1_divpos) Shr 6  )
     Return Int(Float(Float(1.35)*10^6)/Float(count*div))

   Case 3:
     count = ReadData(Fan3_count)
     div = Div2Num(ReadData(Fan1_divpos) Shr 6)
     Return Int(Float(Float(1.35)*10^6)/Float(count*div))

  End Select
End Function

Function GetCPUTemp()
      Return ReadData($50)
End Function

Function GetMBTemp()
      Return ReadData($27)
End Function

Function ReadData(byte)
  Out32($295,$4e)
  Out32($296,Inp32($296) Or 1)
  Out32($295,byte)
  Return Inp32($296)
End Function

Function Div2Num(a)
  r = 1
  For i = 1 To a
    r = r*2
  Next
  Return r
End Function



Falls ihr die inpout32.dll noch nicht habt könnt ihr sie >hier< runterladen.
Die *.decls dazu ist:

Code: [AUSKLAPPEN]

.lib "INPOUT32.DLL"
Out32%(PortAddress%,Value%):"Out32"
Inp32%(PortAddress%):"Inp32"



Falls der Bedarf besteht, kann ich auch noch eine selbstgeschriebe ( Smile ) Userlib posten, welche Festplatteninformationen (Temperatur, Statistiken, Fehler,...) anzeigen kann, für diese Schnittstelle gibts zumglück auch einen Standart Smile


Viel Spaß beim Experimentieren und viel Erfolg, und bitte postet eure Ergebnisse, damit andere Leute auch etwas davon haben Smile


Gruß
Bastian[list=][/list]
  • Zuletzt bearbeitet von barratator am So, Sep 28, 2008 11:40, insgesamt 3-mal bearbeitet

Eingeproggt

BeitragSa, Sep 27, 2008 19:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Funktioniert bei mir zwar grundsätzlich, aber leider bin ich zu dumm dir jetzt zu sagen was ich für ein Motherboard hab Embarassed

Übrigens ist die Funktion "binary$" überflüssig. Du verwendest sie ja selber nicht Smile

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

barratator

BeitragSa, Sep 27, 2008 19:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh stimmt Sad
Die Funktion ist noch ein überbleibsel von vorherigen Tests.

Achja... Speedfan und Everest können sagen, welche Chips (SuperIO) man hat.


Gruß
Bastian
 

BadDeath

BeitragSo, Sep 28, 2008 0:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hatte da auch mal was gemacht:

Code: [AUSKLAPPEN]
SetBuffer BackBuffer()
Timer = CreateTimer(2)
Abst = 15

Dim ArrayCPU(455)
Dim ArraySys(455)

While Not KeyHit(1)
   ;Cls
   Origin 0,0
   Color 0,0,0
      Rect 0,0,480,55   
   
   Color 255,255,255
      Text 5,10, "CPU-Fan:   " + GetCPUFanSpeed() + " RPM"
      Text 5,25, "Sys-Fan:   " + GetNforceFanSpeed() + " RPM"
   Color 255,0,0
      Text 5,40, "CPU-Temp.: " + (GetCPUTemperature()-23040) + " °C"
   Color 0,255,0
      Text 5,55, "Sys-Temp.: " + (GetSystemTemperature()-11008) + " °C"
   
   AppTitle CurrentTime$()
   
   Color 100,100,100
      For i = 0 To 7
         Line 25,100+i*Abst,480,100+i*Abst
         Text 0, 95+i*Abst, 7*Abst-i*Abst
      Next
      
   ;Color 255,0,0
      LockBuffer BackBuffer()
         WritePixelFast Counter + 25, (100+7*Abst)-(GetCPUTemperature()-23040), argb_color(1,255,0,0)
         WritePixelFast Counter + 25, (100+7*Abst)-(GetSystemTemperature()-11008), argb_color(1,0,255,0)
      UnlockBuffer BackBuffer()
         
   Counter = Counter + 1
   Flip 0
   WaitTimer Timer
Wend
End

Function ARGB_Color(Alpha,Red,Green,Blue)
   Return (Alpha*$1000000+Red*$10000+Green*$100+Blue)
End Function


Dazu die .decls:
Code: [AUSKLAPPEN]
.lib "nvsulib.dll"
GetSystemTemperature%() : "GetSystemTemperatureDll"
GetCPUTemperature%() : "GetCPUTemperatureDll"
GetGpuAmbientTemperatureDll%(n%) : "GetGpuAmbientTemperatureDll"
GetNforceFanSpeed%(): "GetNforceFanSpeedDll"
GetCPUFanSpeed%():"GetCPUFanSpeedDll"
GetGpuCoolerLevelDll%():"GetGpuUtilizationPercentageDll"


Die dll ist bei der nVidia-Systemsteuerung (gratis) bei gewesen. Leider habe ich das Auslesen der GPU-Temperatur. nVidia hatte zwar eine PDF-Doku mal angeboten, aber das funktioniert nicht mehr - oder ich bin zu doof. Wenn Interesse besteht, kann ich sie mal hochladen.
-~= real coders just code in binary =~-
 

barratator

BeitragSo, Sep 28, 2008 9:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Cool, von der lib habe ich schon gehört Smile
Habe zwar keine nVidia-Karte, aber dafür einen nFrorce Chipsatz Smile
Unter welcher Lizenz steht diese Userlib denn??



Gruß
Bastian

Nicdel

BeitragSo, Sep 28, 2008 10:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei meinem Billigchipsatz funktionierts zu 100% nicht.
CPU Temperatur: 255 °C ???

Mfg Nicdel
 

ungebildeter Neuling

BeitragSo, Sep 28, 2008 10:13
Antworten mit Zitat
Benutzer-Profile anzeigen
cool vielen Dank, bei mir gehts auch
hab ASRock P4i65G,
MSI MS-6701 (Medion OEM)
und QDI Advance 9
kannst den Code auch so umschreiben,dass es auch die Temperatur vom Motherboard und der Festplatte anzeigt?
 

da_poller

BeitragSo, Sep 28, 2008 10:35
Antworten mit Zitat
Benutzer-Profile anzeigen
bei derfestplatte wird es nciht gehen....

mir ist keine festplatte bekannt die einen themperatursensor hat..
 

BadDeath

BeitragSo, Sep 28, 2008 10:50
Antworten mit Zitat
Benutzer-Profile anzeigen
@ barrator: Wie es mit der Verwendung der DLL aussieht, musst du nVidia fragen, aber ich denke für Freeware darf man sie verwenden, da sie immerhin eine API-Doku bereitstellten. Meinen Code könnt ihr aber frei benutzen.

@ da_poller: Also meine drei Festplatten haben je einen Sensor und Tools wie Everest oder HDD Thermometer lesen die auch ohne Probleme aus. Die meisten Festplatten haben nämlich S.M.A.R.T., womit sich die Daten auslesen lassen.
-~= real coders just code in binary =~-
  • Zuletzt bearbeitet von BadDeath am So, Sep 28, 2008 10:52, insgesamt 2-mal bearbeitet
 

barratator

BeitragSo, Sep 28, 2008 10:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Mainboard hab ich schin geschrieben Smile
Die Mainboard Temperatur liegt im register $27, d.h. ReadData($27) = Mainboardtemperatur

Die HDD Temperatur geht nur über SMART, dazu gibt es dann aber auch noch eine menge andere Infos. Das ist allerdings eine DLL und passt nichtmehr ganz ins CodeArchiv...


Achja, wenn die CPU Temperatur 255°C ist, ist es vermutlich nicht richtig Wink

gruß
Bastian
 

da_poller

BeitragSo, Sep 28, 2008 10:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
@ da_poller: Also meine drei Festplatten haben je einen Sensor und Tools wie Everest oder HDD Thermometer lesen die auch ohne Probleme aus. Die meisten Festplatten haben nämlich S.M.A.R.T., womit sich die Daten auslesen lassen.


interessant... hab ich gar nciht gewust bzw vermutet.. werd ich mir bei meinen auch mal ansehen obwohl es sinnlos wäre da der rechner eh immer eiskalt ist..^^
 

ungebildeter Neuling

BeitragSo, Sep 28, 2008 11:13
Antworten mit Zitat
Benutzer-Profile anzeigen
@ barratator: seit deiner Ändereung geht der code irgendwie nicht mehr
edit
achso, du hast den code einfach unter den alten kopiert
Theorie ist, wenn man alles weiß, aber nichts funktioniert.
Praxis ist, wenn alles funktioniert, aber keiner weiß warum.
Meine Kunstwerke vereinen beides, nichts funktioniert und keiner weiß warum.
 

barratator

BeitragSo, Sep 28, 2008 11:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh, tschuldigung, wollte ich nicht Wink

Wär schon wenn auch andere mal, bei denen das nicht klappt, versuchen würden für ihre Chips was zu schreiben Smile


gruß
Bastian

ozzi789

BeitragSo, Sep 28, 2008 12:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei mir geht der Fan Temp in etwa , doch der VCore stimmt ned ganz, jedoch der Rest von den Spannungen schon.

MB temp stimmt doch CPU schwankt rapide zwischen 70 und 130 Confused
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5
 

barratator

BeitragSo, Sep 28, 2008 12:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Welcher Chip?

ozzi789

BeitragSo, Sep 28, 2008 12:24
Antworten mit Zitat
Benutzer-Profile anzeigen
barratator hat Folgendes geschrieben:
Welcher Chip?


Steht oben (@home) also p5k-c von asus, meinste doch oda ? Confused



Hab die libary im net gefunden, für alle die es mal ausprobieren wollen
nvsulib.dll






Edit :

Bekomme beim Beispiel von Baddeath eine Temp anzeige von -13000 beim Cpu und bei MB Confused
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5
 

BadDeath

BeitragSo, Sep 28, 2008 12:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Versuche mal die richtigen Werte mit Everst o.Ä. auszulesen und pass die Werte an, die von den Temperaturen abgezogen werden müssen bei meinem Beispiel. Bei mir haut es jedenfalls hin...

Vielleicht hast du auch gar keinen nForce-Chipsatz drauf?
-~= real coders just code in binary =~-
 

barratator

BeitragSo, Sep 28, 2008 13:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bekomme ebenfalls keine richtigen Werte raus, obwohl ich einen nForce Chipsatz habe...



Gruß
Bastian

ozzi789

BeitragSo, Sep 28, 2008 13:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab keinen Nforce chip, nur nen Nforce internet controller, werd das mal abklären, im büro hab ich nen nforce chip (430 glaubs) Wink
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5
 

barratator

BeitragSo, Sep 28, 2008 14:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab meinen Code grade auf einem Asus K7VT4A Pro getestet, läuft ohne Probleme Smile


Gruß
Bastian



PS: Wär wirklich schon, wenn ihr auch für eure Chips soetwas schreiben würdet, damit es zu einer Art Sammlung kommen kann Smile

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group