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。

相关推荐
随心点儿9 分钟前
使用python 将多个docx文件合并为一个word
开发语言·python·多个word合并为一个
不学无术の码农12 分钟前
《Effective Python》第十三章 测试与调试——使用 Mock 测试具有复杂依赖的代码
开发语言·python
tomcsdn3118 分钟前
SMTPman,smtp的端口号是多少全面解析配置
服务器·开发语言·php·smtp·邮件营销·域名邮箱·邮件服务器
EnigmaCoder23 分钟前
Java多线程:核心技术与实战指南
java·开发语言
大白的编程日记.2 小时前
【计算机基础理论知识】C++篇(二)
开发语言·c++·学习
网小鱼的学习笔记2 小时前
python中MongoDB操作实践:查询文档、批量插入文档、更新文档、删除文档
开发语言·python·mongodb
Q_Q5110082852 小时前
python的保险业务管理与数据分析系统
开发语言·spring boot·python·django·flask·node.js·php
亮1112 小时前
Maven 编译过程中发生了 Java Heap Space 内存溢出(OutOfMemoryError)
java·开发语言·maven
Chef_Chen2 小时前
从0开始学习R语言--Day40--Kruskal-Wallis检验
开发语言·学习·r语言
Zhu_S W2 小时前
深入理解Java虚拟机:Java内存区域与内存溢出异常
java·开发语言·jvm