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。

相关推荐
larance15 分钟前
机器学习特征预处理之标准化/归一化
开发语言·python·机器学习
农村小镇哥31 分钟前
C#中的字符串格式化
服务器·开发语言·c#
Android洋芋1 小时前
AI辅助C盘清理
c语言·开发语言·人工智能·ai辅助c盘清理
灯澜忆梦3 小时前
Go 语言 _JSON---序列化与反序列化
开发语言·golang·json
麻瓜老宋3 小时前
AI开发C语言应用按步走,表达式计算器calc的第四步,交互式 REPL 模式
c语言·开发语言·atomcode
猫猫不是喵喵.3 小时前
双亲委派机制与类加载过程
java·开发语言
布朗克1683 小时前
Go入门到精通-22-同步原语
开发语言·后端·golang·同步原语
帅次4 小时前
Kotlin Flow 与 StateFlow:UI 单向数据流基础
开发语言·ui·kotlin·stateflow·onlifecycle
艾伦野鸽ggg4 小时前
JavaScript 浏览器本地存储
开发语言·javascript·ecmascript
杜子不疼.4 小时前
【Qt常用控件】WindowTitle 与 WindowIcon:窗口标题和图标
开发语言·qt