c++ - 如何在 Ubuntu 中读取电池电量?
问题描述
我已经搜索了一段时间如何在没有任何特殊库或任何东西的情况下执行此操作,并且花了一段时间才找到可以正常工作的东西。
可以使用
/sys/class/power_supply/BAT0/subsystem/BAT0/charge_now
/sys/class/power_supply/BAT0/subsystem/BAT0/charge_full
我想知道,有没有更好的方法在 Ubuntu 18.04 中使用 C/C++获取电池状态?
解决方案
万一这从未得到回答..这是我的解决方案:
#define PATH_BATT_CHARGE_NOW "/sys/class/power_supply/BAT0/subsystem/BAT0/charge_now"
#define PATH_BATT_CHARGE_FULL "/sys/class/power_supply/BAT0/subsystem/BAT0/charge_full"
int getBattState(void)
{
int chargedPercent = 0;
FILE *battChargeNow;
FILE *battChargeFull;
long unsigned int battMax_mAh = 0;
long unsigned int battRemain_mAh = 0;
if (NULL == (battChargeNow = fopen(PATH_BATT_CHARGE_NOW, "r")))
{
fclose(battChargeNow);
return -1;
}
if (NULL == (battChargeFull = fopen(PATH_BATT_CHARGE_FULL, "r")))
{
fclose(battChargeNow);
fclose(battChargeFull);
return -1;
}
fscanf((FILE *)battChargeFull, "%lu", &battMax_mAh);
fscanf((FILE *)battChargeNow, "%lu", &battRemain_mAh);
chargedPercent = 100.00 * ((float)battRemain_mAh / (float)battMax_mAh);
return chargedPercent;
}
推荐阅读
- java - Unable to locate tools.jar for Java SE 14
- jupyter-notebook - Google Colab:如何关闭建议窗口?
- javascript - Get user input in table to send to database
- java - Libgdx:添加到特定场景时无法单击按钮或查看对话框窗口
- android - 如何解决公共抽象乐趣入队的参数过多(responseCallback:Callback):okhttp3.Call中定义的单位
- spring-cloud - 需要澄清将发现客户端与原生 Kubernetes 发现一起使用
- javafx - 如何在 JavaFX 渐变中插入颜色?
- android - 清单在哪里?
- javascript - 在 div 上拖放堆叠多个图像
- css - 在 react-split 中嵌入 react-ace