08-22-2013 01:23 AM
Dear LabView programmers
I work with a ADLINK PXI controller, which is located in an inaccessible place. This controller has an Intel CPU.
Now I would like to monitor and other things, e.g. the CPU load and the voltages of the mainboard.
In the internet I found out that the SMBus supplies lot of information about this controller by software.
There are also programs (eg SpeedFan) with which I can read the voltages and temperatures of the CPU.
I also know that the information about:
SMB device I / O = 0xE040, address 0x2E, channel = 0
and then to form the corresponding registers are read.
Now I do not know how can I get the corresponding data with LabView.
Does anyone of you have any experience?
I'm using LV2012, but possibly also access to older versions.
MFG Rüdiger
08-22-2013 02:37 AM - edited 08-22-2013 02:48 AM
Unfortunately there is no easy solution to this. Basically each board manufacturer has his own way of accessing the SMbus on the board. There are sometimes DLLs from the board manufacturer to access this information but you will normally only find these DLLs and API documentation for boards that are meant to be used in industrial applications. Still a new board often also means a new DLL and a different API.
Windows doesn't give a generic API either to access all these values. Some of it can be accessed through WMI but that is a somewhat complicated thing to interface, too.
Applications like SpeedFan implement their own low level driver to get at this information. And information about this driver and its implementation is normally guarded well by their respective developers.
See here for a thread on the MSDN forums about reading CPU temperatures: http://social.msdn.microsoft.com/Forums/en-US/19520825-b1fc-4778-8704-c492124bc029/getting-cpu-temp
Disregard the mentioning of inp() and outp() functions there. That is not a feasable option on modern OSes since Vista without installing a special general purpose IO port device driver and simply impossible for 64 bit Windows.