process.start("su"); process.waitForStarted(); // 读取GPIO口值 process.write("cat/sys/class/gpio/gpio23/value"); process.waitForReadyRead(); QString result = process.readAll(); //output_message(); qDebug() << "GPIO 23 value: " << result; // 关闭su命令 process.close();为什么result里面没有值
时间: 2024-02-05 18:04:48 浏览: 27
在执行 `process.write("cat/sys/class/gpio/gpio23/value");` 时,你需要在 `cat` 和 `/sys` 之间添加一个空格,即 `cat /sys/class/gpio/gpio23/value`。否则,这个命令会被识别为 `catsys/class/gpio/gpio23/value`,这是一个错误的路径,导致无法读取 GPIO 值。因此,你需要修改这行代码为 `process.write("cat /sys/class/gpio/gpio23/value");`。
此外,你需要在读取完 GPIO 值后调用 `process.waitForReadyRead();` 以等待数据的读取。所以你可以将 `process.waitForReadyRead();` 代码行移动到 `process.readAll();` 的前面,就像这样:
```
process.start("su");
process.waitForStarted();
// 读取GPIO口值
process.write("cat /sys/class/gpio/gpio23/value");
process.waitForReadyRead(); // 等待数据的读取
QString result = process.readAll();
//output_message();
qDebug() << "GPIO 23 value: " << result;
// 关闭su命令
process.close();
```
这样应该就可以读取到 GPIO 值并将其存储在 `result` 变量中了。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)