wordpress 站群模板,网站建设目的,外贸网站做多少钱的,电子商务网站整体策划本文介绍Qt读写sysfs。
在嵌入式Linux系统上开发Qt应用程序#xff0c;经常会涉及到外设的控制#xff0c;比如GPIO#xff0c;PWM的控制#xff0c;Linux环境下可以像操作文件一样操作它们#xff0c;这通常会涉及到sysfs的读写。本文以读写GPIO为例#xff0c;简要介绍…本文介绍Qt读写sysfs。
在嵌入式Linux系统上开发Qt应用程序经常会涉及到外设的控制比如GPIOPWM的控制Linux环境下可以像操作文件一样操作它们这通常会涉及到sysfs的读写。本文以读写GPIO为例简要介绍下如何使用Qt读写sysfs。
1.配置
Linux命令行指令这里导出gpio5
echo 5 /sys/class/gpio/export
在Qt应用程序中可以启动一个进程来执行上述指令使用QProcess提供的静态函数来完成参考代码如下
void exportIo(int pinNumber)
{QProcess::execute(echo QString::number(pinNumber) /sys/class/gpio/export);
}void unexportIo(int pinNumber)
{QProcess::execute(echo QString::number(pinNumber) /sys/class/gpio/unexport);
}
2.写sysfs
Linux命令行指令这里对gpio5写1
echo 1 /sys/class/gpio/gpio5/value
参考代码如下
void writeIo(int pinNumber, int value)
{QProcess::execute(echo QString::number(value) /sys/class/gpio/gpio QString::number(pinNumber) /value);
} 3.读sysfs
Linux命令行指令
cat /sys/class/gpio/gpio5/value
参考代码如下
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信号参考代码如下
QProcess *process new QProcess(this);
connect(process, QProcess::finished, this, MainWindow::read);void MainWindow::read(int exitCode, QProcess::ExitStatus exitStatus)
{}注意
不同的嵌入式Linux环境下外设的sysfs的路径和操作方法可能不一样需根据实际情况修改。 总结本文介绍了Qt读写sysfs。