| volta 
 
 
 Anmeldungsdatum: 04.05.2005
 Beiträge: 1876
 Wohnort: D59192
 
 | 
			
				|  Verfasst am: 04.11.2005, 11:00    Titel: Daten von SpeedFan nach freeBASIC |   |  
				| 
 |  
				| Edit/ Läuft nur auf PC´s deren BIOS dieTemperatur, Upm und Spannungen auch anzeigen kann!
 Hi,
 eigentlich sollte das mal wieder ein ganz anderes Programm werden,
 aber dann kam das dabei raus.
   
  	  | Code: |  	  | '11/04/2005  - Volta - ;erstellt mit FreeBasic  Version 015b win32 -test- 'So lassen sich die Daten von SpeedFan in freeBASIC-Programme einlesen
 'mit SpeedFan  4.26  (http://www.almico.com/speedfan.php) getestet.
 'Läuft nur auf PC´s deren BIOS die Temperatur, Upm und Spannungen auch anzeigen kann!
 Option Explicit
 #include "windows.bi"
 
 'SpeedFan_FileMapp "SFSharedMemory_ALM"
 '  version as ushort 'Hi 4 ;Lo 26
 '  flags as ushort
 '  MemSize As Integer '=402 Ok
 '  Handle As Integer '???
 '  xTemps As uShort 'Anzahl der Temperaturen
 '  xFans  As uShort 'Anzahl der Lüfter
 '  xVolts As uShort 'Anzahl der Spannungen
 '  Temps (32) As Integer 'LoWord = Werte der Temperaturen *100
 '  Fans  (32) As Integer 'LoWord = Drehzahl der Lüfter
 '  Volts (32) As Integer 'LoWord = Werte der Spannungen *100
 Declare Function SpeedFanStatus() As Integer
 
 Type SpeedFanDaten
 xTemp  As UShort
 xFan   As UShort
 xVolta As UShort
 Temp (31) As Single
 Fan  (31) As UShort
 Volta(31) As Single
 End Type
 Dim Shared temp As SpeedFanDaten
 
 Function SpeedFanStatus() As Integer
 Dim Mappi_Ptr As short Ptr
 Dim Mappi_H As Integer Ptr
 Dim n As Integer, m As Short
 Function = 0
 
 'Öffnen enes bereits erzeugten Dateiabbildungsobjektes mit Hilfe von OpenFileMapping.
 Mappi_H = OpenFileMapping(4, 0, "SFSharedMemory_ALM") 'Handle der FileMap
 'Die Funktion OpenFileMapping liefern im Erfolgsfall ein Handle zurück, das ungleich NULL ist,
 'und mit dem schließlich ein Zeiger auf die Abbildung der Daten im Prozeßaddressraum ermittelt wird.
 If Mappi_H = 0 Then Exit Function 'keine FileMap - dann raus!
 
 'Die Funktion MapViewOfFile liefert einen Zeiger zurück, mit dessen Hilfe der
 Mappi_Ptr = MapViewOfFile(Mappi_H, 4, 0, 0, 0) 'Pointer holen
 'Zugriff auf die Daten wie auf einen ganz normalen Speicherbereich erfolgen kann.
 'gleich nach SpeedFanDaten wandeln
 temp.xTemp =  Mappi_Ptr[6]
 temp.xFan  =  Mappi_Ptr[7]
 temp.xVolta=  Mappi_Ptr[8]
 For n = 0 To 31
 temp.Temp(n) = Mappi_Ptr[n*2 +  9] / 100
 temp.Fan (n) = Mappi_Ptr[n*2 + 73]
 m = Mappi_Ptr[n*2 + 137]' die Spannungen sind teilweise negativ
 temp.Volta(n)= m / 100
 Next
 
 'Selbstverständlich müssen alle reservierten Handles / Zeiger wieder freigegeben werden,
 'sobald die speicherbasierte Daten nicht mehr benötigt werden.
 'Dies geschieht im Fall des Filemapping-Handles mit der Funktion CloseHandle
 CloseHandle Mappi_H
 'und im Fall des Zeigers mit der Funktion UnmapViewOfFile.
 UnmapViewOfFile Mappi_Ptr
 Function = -1
 End Function
 
 
 Dim i As Integer
 If SpeedFanStatus Then
 Print temp.xTemp; " Temperaturen ";
 For i = 0 To temp.xTemp -1
 Print temp.Temp(i);"C ";
 Next
 Print
 Print temp.xFan; " Luefter ";
 For i = 0 To temp.xFan -1
 Print temp.Fan(i);"Upm ";
 Next
 Print
 Print temp.xVolta; " Spannungen ";
 For i = 0 To temp.xVolta -1
 Print temp.Volta(i);"V ";
 Next
 Print
 Else
 Print "SpeedFan nicht gefunden."
 End If
 sleep
 | 
 Hier noch einmal der Link auf SpeedFan http://www.almico.com/speedfan.php ohne das Programm geht es natürlich nicht.
 Probleme mit den Werten:
 manchmal hat meine Festplatte -8°C
   die -12V und -5V des Netzteils schwanken angeblich zwischen -3 und -8V.
 Welche Erfahrungen habt/macht Ihr mit dem Programm?
 Gruß
 Volta
 _________________
 Warnung an Choleriker:
 Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
 Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
 |  |