Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Acceso a sensores de pc

Estas en el tema de Acceso a sensores de pc en el foro de C/C++ en Foros del Web. Hola en esta ocasión escribo por un problema que tengo, debido a que en el desarrollo de una aplicación necesito adquirir datos del estado del ...
  #1 (permalink)  
Antiguo 16/12/2012, 10:10
 
Fecha de Ingreso: mayo-2011
Mensajes: 49
Antigüedad: 13 años
Puntos: 0
Acceso a sensores de pc

Hola en esta ocasión escribo por un problema que tengo, debido a que en el desarrollo de una aplicación necesito adquirir datos del estado del pc como la temperatura y el voltaje de la fuente etc...

Sé que es posible porque hay varios programas que lo hacen ,pero en la internet no he podido encontrado algo claro al respecto para desarrollarlo en c o c++.

agradezco cualquier ayuda.
  #2 (permalink)  
Antiguo 17/12/2012, 07:30
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 10 meses
Puntos: 127
Respuesta: Acceso a sensores de pc

Es algo difícil pero Microsoft pone a disposición documentación para realizar querys y recibir información WMI de la computadora:

http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

La WQL query a realizar en el punto 6 es en este caso

Código SQL:
Ver original
  1. SELECT * FROM MSAcpi_ThermalZoneTemperature

y he aquí una implementación de un código que podría servirte para el propósito

http://pastebin.com/sn3TjxCZ

Teniendo en cuenta que tienes que añadir las cabeceras correspondientes que van indicadas en el código.

Un saludo.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor
  #3 (permalink)  
Antiguo 17/12/2012, 09:04
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Acceso a sensores de pc

Tienes dos formas de hacerlo:
1) Usando la ayuda de windows mediante WMI
2) Haciendo la llamada "a bajo nivel" preguntando directamente a la placa.

Como la parte 1 ya te ha explicado "dontexplain" como hacerlo, te dejo el pdf de Intel donde indica, en el punto 14, como acceder a la informació de temperatura, energia, etc.:

http://www.intel.com/content/dam/doc...ing-manual.pdf
__________________
Aviso: No se resuelven dudas por MP!
  #4 (permalink)  
Antiguo 21/12/2012, 09:38
 
Fecha de Ingreso: mayo-2011
Mensajes: 49
Antigüedad: 13 años
Puntos: 0
Respuesta: Acceso a sensores de pc

hola muchas gracias por atender mi pregunta ,crei que no iva a tener respuesta .

les comento que primero probe la opcion de WMI que parecia mas facil pero al tratar de usarla con MINGW ,el compilador que uso tube problemas de incompatibilidad segun lo que pude leer en internet.

y la segunda opcion que es bajarme al ensamablador ya la habia contemplado y tengo un pequeño programa corriendo pero como tengo la mala costumbre de copy paste pues no comprendo muy bien como es que se jala la informacion.

tengo experiencia en ensamblador de microcontrolador motorola y pic pero la documentacion que gentilmante compartio Malenko es bastante extensa y compleja por lo cual veo que si me guio por esta se va a alargar mucho el desarrollo del proyecto.

a continuacion pego el codigo que esta funcionando usando asm(se me hace muy curioso que no existan librerias estandar en c que manejen este tema...:( )
/************************************************** **************

#include <stdio.h>

void cpuid(unsigned info, unsigned *eax, unsigned *ebx, unsigned *ecx, unsigned *edx)
{
*eax = info;
__asm volatile
("mov %%ebx, %%edi;" /* 32bit PIC: don't clobber ebx */
"cpuid;"
"mov %%ebx, %%esi;"
"mov %%edi, %%ebx;"
:"+a" (*eax), "=S" (*ebx), "=c" (*ecx), "=d" (*edx)
: :"edi");
}

int main()
{
unsigned int eax, ebx, ecx, edx;
int i;

for (i = 0; i < 6; ++i)
{
cpuid(i, &eax, &ebx, &ecx, &edx);
printf("eax=%i: %#010x %#010x %#010x %#010x\n", i, eax, ebx, ecx, edx);
}

return 0;
}
/************************************************** ******

teniendo como resultado lo siguiente

eax=0: 0x00000001 0x68747541 0x444d4163 0x69746e65
eax=1: 0x00060fb1 0x00020800 0x00002001 0x178bfbff
eax=2: 0000000000 0000000000 0000000000 0000000000
eax=3: 0000000000 0000000000 0000000000 0000000000
eax=4: 0000000000 0000000000 0000000000 0000000000
eax=5: 0000000000 0000000000 0000000000 0000000000


pero no conozco el significado del retorno de la funcion cpuid ,esoso numeros equivalen a un modelo de prosesador?????
  #5 (permalink)  
Antiguo 21/12/2012, 09:51
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Acceso a sensores de pc

Cita:
Iniciado por williamfj Ver Mensaje

pero no conozco el significado del retorno de la funcion cpuid ,esoso numeros equivalen a un modelo de prosesador?????
Aqui tienes información sobre el resultado de CPUID, creo que lo que te interesa es la gráfica 5.1 del documento.
__________________
Aviso: No se resuelven dudas por MP!

Etiquetas: int, pc, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:04.