繁体   English   中英

使用QT过程使用命令行从笔记本电脑获取传感器信息

[英]using QT process to get sensor information from the laptop using command line

我正在使用QT进程从我在笔记本电脑中安装和配置的lm-sensors库中获取信息。我想从命令行读取信息并将其显示在我的QT GUI上,这就是我正在做的事情:

首先,当我在控制台中使用此命令时,我得到此输出..

$ sensors | grep "Core "
Core 0:         +51.0°C  (high = +86.0°C, crit = +100.0°C)
Core 1:         +49.0°C  (high = +86.0°C, crit = +100.0°C)

我想在我的代码中解析这个...所以我这样做

process->start("sensors | grep \"Core\"");
process->waitForReadyRead();
QByteArray strdata = process->readLine();
qDebug() << strdata;

我在输出中得到了这个

"Try `sensors -h' for more information

当我将命令行更改为

process->start("watch \"sensors | grep \"Core \"\"")

我得到了上面的输出..我尝试了不同的功能,只获得Core 0:+51,没有额外的东西..

我尝试使用indexOf()函数获取索引,然后使用像mid()函数解析它.NOt正确的结果..然后我尝试了右()和左()函数,他们也给我错误的输出! !

任何帮助?

process->start("sensors | grep \"Core\"");

这里的问题是start函数将第一个参数作为要执行的程序,然后将后续参数作为参数传递给程序,因此| grep和“Core”正被传递给sensors命令,然后抱怨因为它不知道如何处理这些参数。

解决此问题的一种方法是使用readAllStandardOutput()调用传感器并获取返回的信息。 然后,您可以使用Qt字符串函数来搜索所需的信息,或者如果使用setStandardOutputFile设置标准输出文件,则可以使用该文件上的grep调用QProcess。 (注意QTemporaryFile可能在这里使用)。

但是,最简单的方法是创建一个调用命令的小命令行脚本

sensors | grep \"Core\"

然后启动一个调用脚本的QProcess。

你应该尝试类似的东西:

process->start("/bin/sh", "-c \"sensors | grep Core\");

问题是:

| SHELL一部分,所以shell运行第一个程序,然后运行第二个程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM