Qt读写sysfs

本文介绍Qt读写sysfs。

在嵌入式Linux系统上开发Qt应用程序,经常会涉及到外设的控制,比如GPIO,PWM的控制,Linux环境下可以像操作文件一样操作它们,这通常会涉及到sysfs的读写。本文以读写GPIO为例,简要介绍下如何使用Qt读写sysfs。

1.写sysfs

Linux命令行指令(这里对gpio5写1):

bash 复制代码
echo 1 > /sys/class/gpio/gpio5/value

在Qt应用程序中,可以启动一个进程来执行上述指令,使用QProcess提供的静态函数来完成,参考代码如下:

cpp 复制代码
void writeIo(int pinNumber, int value)
{
    QProcess::execute("echo " + QString::number(value) + " > /sys/class/gpio/gpio" + QString::number(pinNumber) + "/value");
}

2.读sysfs

Linux命令行指令:

bash 复制代码
cat /sys/class/gpio/gpio5/value

参考代码如下:

cpp 复制代码
int readIo(int pinNumber)
{
    QProcess process;
    int value = 0;

    process.start("cat", QStringList() << "/sys/class/gpio/gpio" + QString::number(pinNumber) + "/value");
    process.waitForFinished();

    value = process.readAll().trimmed().toInt();

    return value;
}

这里是阻塞的方式执行的。如果读时间较长,也可以绑定finish信号,参考代码如下:

cpp 复制代码
QProcess *process = new QProcess(this);  
connect(process, &QProcess::finished, this, &MainWindow::read);

void MainWindow::read(int exitCode, QProcess::ExitStatus exitStatus)
{

}

注意:

不同的嵌入式Linux环境下外设的sysfs的路径和操作方法可能不一样,需根据实际情况修改。

总结,本文介绍了Qt读写sysfs。

相关推荐
牢七16 小时前
Slim-4.x php审计 报错分析
android·开发语言·ide·安全·php
认真的小羽❅16 小时前
JavaScript完全指南:从入门到精通
开发语言·javascript·ecmascript
xuhaoyu_cpp_java16 小时前
JAVA线程安全类
java·开发语言
香水5只用六神17 小时前
【TIM】基本定时器定时实验(2)
c语言·开发语言·stm32·单片机·嵌入式硬件·mcu·学习
BatyTao17 小时前
Python从零起步-数据容器
开发语言·python
承渊政道17 小时前
C++学习之旅【C++伸展树介绍以及红黑树的实现】
开发语言·c++·笔记·b树·学习·visual studio
郭涤生17 小时前
C++中设置函数与回调函数设值的性能差异及示例
开发语言·c++
m0_6356474817 小时前
Qt开发与MySQL数据库教程(二)——MySQL常用命令以及示例
java·开发语言·数据库·mysql
fie888917 小时前
Spinal码MATLAB实现(采用One-at-a-Time哈希函数)
开发语言·matlab·哈希算法
ZHOUPUYU17 小时前
PHP 8.6的底层革命。那些看不见的优化,才是真正的惊喜
开发语言·后端·php