。/ 最终的UI源代码参考如下,将对应的mainwindow.ui文件复制到Apalis iMX6 Python应用相同路径下
https://github.com/simonqin09/libsoc-examples/blob/master/python/mainwindow.ui
c)。 程序源代码参考如下:
https://github.com/simonqin09/libsoc-examples/blob/master/python/gpiotest_pyqt5.py
说明如下:
。/ class ApplicationWindow 用于实现Qt5界面以及相关按键操作:
// 首先通过 loadUi 函数来加载之前制作好的UI文件 mainwindow.ui,然后初始化界面显示,连接各个按键对应的处理程序
// 最后开启一个新的Qthread线程self.thread,用于处理外部GPIO按键中断相应,连接新线程反馈信号的处理程序,最后启动新线程
// LedStatusChange 函数为处理新线程反馈回来的LED状态变化信号而同步改变界面显示状态的函数
// Button_On_clicked 和 Button_Off_clicked 函数用于根据界面按键的点击来对应改变LED GPIO输出以及界面显示的函数
// Button_Exit_clicked 和 closeEvent 函数用于处理退出程序包括子线程的退出等相关的函数
。/ class gpioInterrupt 为用于处理GPIO中断同时对于改变LED GPIO输出以及将LED状态变化反馈给界面主程序
// 首先定义反馈信号,并初始化所需要使用的GPIO引脚
// run 函数部分基本就是上面第3章节的阻塞模式Python应用的代码,这里就不做赘述了
d)。 测试运行结果如下:
-----------------------
root@apalis-imx6:~# 。/gpiotest_pyqt5.py
The LED initial status is ON
set LOW
set HIGH
The LED turns OFF
button clicked for setting LOW
The LED turns ON
button clicked for setting HIGH
root@apalis-imx6:~#
-----------------------
5)。 总结
如上述示例,使用Python和PyQt5非常方便了创建一个嵌入式界面应用程序示例,相对于传统C语言开机要配置交叉编译环境,整个流程更加快捷方便,同时在实现比较简单的控制的时候其运行效率也是可以接受的,另外Python还可以集成大量的组件方便开发,就更加简化了比如设计机器视觉、人工智能等领域的嵌入式应用开发流程。