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。

相关推荐
小小测试开发几秒前
JMeter JSR223预处理程序高级用法:解锁自动化测试的灵活性上限
开发语言·jmeter·groovy
星释13 分钟前
Rust 练习册 22:映射函数与泛型的威力
开发语言·rust·机器人
云泽80830 分钟前
C++ List 容器详解:迭代器失效、排序与高效操作
开发语言·c++·list
云帆小二1 小时前
从开发语言出发如何选择学习考试系统
开发语言·学习
光泽雨1 小时前
python学习基础
开发语言·数据库·python
百***06012 小时前
python爬虫——爬取全年天气数据并做可视化分析
开发语言·爬虫·python
jghhh012 小时前
基于幅度的和差测角程序
开发语言·matlab
fruge2 小时前
自制浏览器插件:实现网页内容高亮、自动整理收藏夹功能
开发语言·前端·javascript
曹牧3 小时前
Java中处理URL转义并下载PDF文件
java·开发语言·pdf