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。

相关推荐
凸-皿-凸7 分钟前
通过java将 word(.doc) 转 md
java·开发语言·word
爱吃生蚝的于勒18 分钟前
一文学会c++继承 组合
java·c语言·开发语言·数据结构·c++·算法·蓝桥杯
WSSWWWSSW19 分钟前
Numpy科学计算与数据分析:Numpy数据分析基础之统计函数应用
开发语言·python·数据挖掘·数据分析·numpy
西猫雷婶36 分钟前
python学智能算法(三十四)|SVM-KKT条件回顾
开发语言·人工智能·python·算法·机器学习·支持向量机
zgc124536744 分钟前
Linux学习-数据结构(链表)
linux·开发语言·数据结构·vscode·链表
OEC小胖胖1 小时前
幕后英雄 —— Background Scripts (Service Worker)
开发语言·前端·javascript·浏览器·web·扩展
mailtolaozhao4 小时前
C#入门--Hello world
开发语言·c#
王维志4 小时前
C# 中的 DateTime
开发语言·c#·.net
重生之我是Java开发战士4 小时前
【C语言】文件操作全解析
c语言·开发语言
歪歪1009 小时前
HTML 如何转 Markdown
开发语言·chrome·python·程序人生·html