QT - Leer carga de Bateria laptop

   
Vista:

Leer carga de Bateria laptop

Publicado por alberto (7 intervenciones) el 10/11/2014 14:32:02
Hola estoy iniciandome en qt con qt creator
he adaptado el ejemplo del systray en linux debian squeeze (avLinux)
Todo bien, muy lindo y versatil.

A la hora de hacer que mi programita sepa cuanta carga le queda a la bateria del laptop
no se como obtener ese valor.

Si alguien me tira un datito, muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Leer carga de Bateria laptop

Publicado por xve (16 intervenciones) el 10/11/2014 19:58:50
Hola Alberto, el comando es acpi
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Leer carga de Bateria laptop

Publicado por alberto (7 intervenciones) el 11/11/2014 01:05:18
gracias por el dato.
no sabia que existia ese comando
pero eso funciona en la terminal
y lo que yo necesito es saber eso mismo
pero en mi programa hecho con qtdesigner
es que quiero que me avise cuando ya tengo que
conectarme a la corriente electrica
gracias de todos modos.... sigo buscando.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Leer carga de Bateria laptop

Publicado por xve (16 intervenciones) el 11/11/2014 10:33:47
no se con que lenguaje lo estas desarrollando, pero desde cualquier lenguaje puedes hacer una llamada a esa aplicación y obtener su resultado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Leer carga de Bateria laptop

Publicado por alberto (7 intervenciones) el 12/11/2014 10:18:19
Justamente lo estoy haciendo con qt creator y c++
Pero sigo sin poder consultar los valores de la bateria del laptop.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Leer carga de Bateria laptop

Publicado por alberto (7 intervenciones) el 12/11/2014 10:59:42
Ahora caigo en lo que pones.
de leer los valores que devuelve
la aplicacion del sistema llamada
acpi.


Bien que tan obvio es hacer
el llamado a acpi

una especie de exec("prgsQEjecuta","etc");


gracias por el apoyo sigo buscando...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Leer carga de Bateria laptop

Publicado por xve (16 intervenciones) el 12/11/2014 16:10:57
Con que lenguaje lo estas desarrollando con C++? o Python? o Java?..., con que lenguaje?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Leer carga de Bateria laptop

Publicado por alberto (7 intervenciones) el 12/11/2014 17:08:17
que pasa papi ya puse:"Justamente lo estoy haciendo con qt creator y c++"

gracias por el interes, disculpas x el sarcasmo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Leer carga de Bateria laptop

Publicado por xve (16 intervenciones) el 12/11/2014 17:28:04
Mil perdones Alberto... se me paso...

Prueba con esta función:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <string>
#include <iostream>
#include <stdio.h>
 
std::string exec(char* cmd) {
    FILE* pipe = popen(cmd, "r");
    if (!pipe) return "ERROR";
    char buffer[128];
    std::string result = "";
    while(!feof(pipe)) {
    	if(fgets(buffer, 128, pipe) != NULL)
    		result += buffer;
    }
    pclose(pipe);
    return result;
}

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Leer carga de Bateria laptop

Publicado por alberto (7 intervenciones) el 13/11/2014 04:11:01
Se cambian los puntos de vista. voy a intentar desmenuzar el codigo y probarlo claro.
otro millon de gracias xve!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Leer carga de Bateria laptop

Publicado por xve (16 intervenciones) el 13/11/2014 15:24:46
Ya nos comentaras Alberto!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Leer carga de Bateria laptop

Publicado por alberto (7 intervenciones) el 15/11/2014 12:36:11
Hola

he intentado usar la llamada al programa del sistema y no me funca.
Aprovecho a señalar que si hay que rescatar el retorno del programa
tratando con una string que devuelve un programa especifico de linux
que vaya a saber en las diferentes versiones como difiere.... hmmm.

He tenido que hacer algunas alteraciones para que funcione con qt pero no puedo
obtener el valor.

justo donde quiero recibir el valor me sale esto
warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
He tratado de convertir la std::string a QString y me enriedo sin poder resolverlo.

y el codigo queda recortado así

[Fichero .h]
private slots:
void tstActionFn();
private:
QString exec(char* cmd);


[Fichero .cpp]

void Window::tstActionFn()
{
//cargar_ui();

QSystemTrayIcon::MessageIcon icon = QSystemTrayIcon::MessageIcon(
typeComboBox->itemData(typeComboBox->currentIndex()).toInt());

//exec("acpi")
QString msg="tst";
msg = exec("acpi"); //warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
qDebug() << msg;
trayIcon->showMessage("titulo", msg, icon,
durationSpinBox->value() * 500);

// QString str = "Hello world";
// QChar *data = str.data();
// while (!data->isNull()) {
// qDebug() << data;//->unicode();
// ++data;
// }
}


//prueba leer bateria

#include <string>
#include <iostream>
#include <stdio.h>

//std::string exec(char* cmd) {
QString Window::exec(char* cmd)
{

FILE* pipe = popen(cmd, "r");
if (!pipe) return "ERROR";
char buffer[128];

std::string result = "";
while(!feof(pipe)) {
if(fgets(buffer, 128, pipe) != NULL)
result += buffer;
}
pclose(pipe);

QString ret;
ret.fromStdString(result);
return ret;
}
// fin prueba

//-------------------------------------------------

Insisto en que debe haber alguna funcion que no implique ejecutar un programa externo.

Bueno gracias por la atencion y si hace falta copio todo el programa que simplemente
es una burda modificacion del ejemplo que trae qtCreator systray.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar