volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1875 Wohnort: D59192
|
Verfasst am: 04.11.2005, 12: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. |
|