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。

相关推荐
aramae21 小时前
模拟实现strlen()函数 (C语言)
c语言·开发语言·后端
Quz1 天前
QML 常见的四种导航布局
qt
jimy11 天前
readelf 查看“派生类”的vtable符号
开发语言·c++
ctlover1 天前
排序与查找算法详解
开发语言·python
YYYing.1 天前
【C++进阶系列 (七)】C++ RTTI 深度剖析:从 typeid 到 dynamic_cast 的底层之旅
开发语言·c++·c/c++·rtti
江湖人称菠萝包1 天前
【Qt】《Qt 5.9 C++开发指南》笔记-Chapter2-GUI应用程序设计基础
笔记·qt·qt5
nvvas1 天前
Java 入门(四):数组——数据的集合管理
java·开发语言
重生的黑客1 天前
Qt 常用控件精讲(1):QWidget 核心属性全解 —— 从 geometry 到 qrc 与 QSS
c++·qt·qwidget·qss·常用控件
江湖人称菠萝包1 天前
【Qt】《Qt 5.9 C++开发指南》笔记-Chapter1-认识Qt
笔记·qt·qt5
Y3815326621 天前
SERP 数据清洗实战:字段标准化、日期解析与去重键
开发语言·数据库·python·python数据库