Hallo allerseits - ich wollte mal meine Entdeckungen und Entwicklungen bzgl. dem einlesen von Systeminformationen (im weitesten Sinne) bekannt machen. Es war Serendipität - ich suchte/suche eigentlich nach einer Möglichkeit die Temperatursensoren des Rechners auszulesen, dabei stieß ich auf diesen Post hier im Forum:
http://www.labviewforum.de/thread-2851.html
Das dort angehängte VI besitzt noch einige Bugs und den Wert den man von der 'WMI:MSAcpi_ThermalZoneTemperature'-Klasse bekommt hat nichts mit der aktuellen Temperatur der CPU zu tun, dieser Wert wird nur bei einem ThermalEvent aktualisiert (wie Systemstart, Übertemperatur)... Doch fiel mir beim weiteren stöbern, dem ansehen der Klassen und experimentellen auslesen der MOFs auf, dass sich in diesem WMI ('Windows Management Instrumentation') sehr interessante Informationen verstecken!
Alle erdenklichen Informationen/Parameter des Systems, des/der Prozessors/Prozessoren, der Datenträger, der Peripheriegeräte, Busse, ... alles hier dokumentiert:
http://msdn.microsoft.com/en-us/library/...85%29.aspx
Wenn es in die tiefere Hardwareebene geht, sind aber (leider) viele der vorhandenen Klasse nicht mehr mit Daten gefüllt - wobei das natürlich von System zu System unterschiedliche sein kann - bei den von mir getesteten Rechnern sind leider solche, für die Systemüberwachung interessanten, Klassen wie 'CIMV2:Win32_VoltageProbe', 'CIMV2:Win32_TemperatureProbe', 'CIMV2:Win32_Fan', ... leer!
Angehängt sind nun folgende VIs:
TestWMI.vi (Größe: 40,45 KB / Downloads: 648)
'
TestWMI.vi' ist ein Test/Hilfs-Programm und nicht zur Verwendung als Sub-VI bestimmt (es basiert auf dem 'Temperatur_der_CPU.vi' aus oben verlinktem Post, welches wohl von NI stammt) - es ließt keine einzelnen Parameter, nur gesamte MOFs der eingetragenen Klassen aus. Man kann sich so die in den einzelnen Klassen steckenden Parameter anschauen - eben sofern sie existieren.
Das VI ansich ist sicher verbesserungswürdig - zur Zeit muss man die Klassen die einen interessieren vor dem ausführen in das Array eintragen, man kann das VI, einmal gestartet, nur ein einziges mal durchlaufen lassen, ... doch ist es durchaus nützlich um interessante Informationen zu finden, welche man sich dann direkt mit folgenden (Sub-)VIs in das eigene VI holen kann:
WMI - Get Property from Class-Items.vi (Größe: 20,95 KB / Downloads: 531)
,
WMI - Get Properties from Class-Items.vi (Größe: 23,57 KB / Downloads: 562)
'
WMI - Get Property from Class-Items.vi' und '
WMI - Get Properties from Class-Items.vi' nehmen einen Klassennamen (z.B. 'root\CIMV2:Win32_DiskDrive') und einen einzelnen Parameternamen (z.B. 'Description') oder ein Array aus Parameternamen entgegen und liefern ein Array mit den angeforderten Parametern der gefundenen Items.
In der WMI scheinen unterschiedliche Datentypen unterzukommen, am einfachsten bekommt man sie allerdings heraus, wenn man alle pauschal als String anfordert, dh. arbeiten auch meine VIs ausschließlich mit Strings - der Anwender muss wissen von welchem Datentyp der angeforderte Parameter ist und die Ergebnisstring dementsprechend weiterverarbeiten.
Hier ein Bild von 'TestWMI.vi', es zeigt die MOF des ersten (Index 0) von sechs vorhandenen Items der Klasse 'CIMV2:\Win32_DiskDrive' - viele interessante Daten...
Hier noch ein Bild von der Anwendung des 'WMI - Get Properties from Class-Items.vi'-VIs, mit dem Ergebnis (die Daten in der Tabelle wurden noch aufbereitet...) - das Prinzip sollte zu erkennen sein.
Soo... Langes Pamphlet - Ich hoffe dieses 'Projekt' ist auch anderen von Nutzen - für Kommentare Verbesserungsvorschläge bin ich ganz Ohr!
Grüße
Sascha