☰
SBC‑TLT153 工控单板图形用户界面开发指南(中)
2026/11/5 3:52:52 网站建设 项目流程

1.2通过网络调试Qt工程

本小节使用led_control案例演示通过网络调试Qt工程的方法。

配置环境

点击"Devices -> Devices -> Add…",选择"Generic Linux Device",然后点击"Start Wizard"确认。

在弹出的界面中,将"The name to identify this configuration"修改为"T153-Device","The device's host name or IP address"修改为单板机IP地址,本次操作单板机IP地址为"192.168.12.37","The username to log into the device"修改为"root",然后点击"Next >"。

弹出配置密钥界面,此处无需密钥文件,配置为空即可,继续点击"Next >"。

然后点击Finish连接单板机。

再次查看Devices,可见添加了一个新设备。

请打开led_control工程源码目录的led_control.pro文件,并在文件中添加以下内容。该内容作用是将编译生成的led_control可执行程序安装至单板机系统的"root"目录下。

qnx: target.path = /root

else: unix:!android: target.path = /root

!isEmpty(target.path): INSTALLS += target

点击"Projects -> Run -> Add Deploy Step",选中"Deploy files via rsync",通过rsync部署文件。

点击"Projects -> Run",选中"Environment",点击"Fetch Device Environment"获取设备环境。

点击调试按钮。目前未设置断点,所以无信息打印。

设置断点

打开led_control工程源码目录的mainwindow.cpp文件,点击代码行号的左侧边框栏即可设置断点,或直接按下F9进行设置。断点将以红色实心圆点显示,表示程序执行到该行时将暂停。本次以分别在65、166处设置断点为例进行演示。

启动调试,点击工具栏的调试按钮

(或按F5),观察程序运行。程序会执行到第一个断点处暂停,此时可观察变量的值,可调用堆栈、线程状态等信息。

调试操作

单步调试

使用单步跳过(F10)、单步进入(F11),单步跳出(Shift + F11)按键来逐行执行代码,观察程序的执行流程。按下F11可以进入函数里面进行调试,按下"Shift + F11"可跳出。可见黄色箭头已跳至对应函数。

按下F10进行调试,需重复按下F10,直到显示如下界面即停下。

然后点击led_control程序按键,可通过状态栏查看信息。

查看变量和表达式

点击led_control程序按键,可见按钮被按下时,LED的值为0。

继续执行

目前断点已是最后一个,若还存在断点,则按下F10让程序继续执行,直到遇到下一个断点或者程序结束。

调试结束

当调试完后,点击工具栏上的停止按钮,结束当前会话。

分析调试结果

可根据调试过程中观察到的信息,分析程序的执行流程和潜在问题,并进行相应的修改和优化。

1.3基于命令行方式开发

本章节使用led_control案例进行演示。演示基于命令行方式开发Qt程序的方法。

进入led_control工程源码目录,配置交叉编译工具链环境变量,执行qmake命令生成Makefile文件,再执行make命令编译生成可在单板机上正常运行的ARM端Qt程序镜像,如下图所示。

Host# source /home/tronlong/T153/environment

Host# qmake

Host# make

1.4Qt显示与触摸说明

当前系统默认采用Xorg桌面方案,Qt应用在不同运行模式下,适配不同的显示组件、触摸组件及校准工具,具体配置策略如下表所示。

其中,SBC-TLT153单板机适配的XT070YTA23R_A6 LVDS电阻屏需进行触摸校准,XT070YTD23C LVDS电容屏和TL070MIPI显示屏无需进行触摸校准。

桌面环境测试

在桌面环境下,Qt应用基于X11窗口系统运行。设备Qt编译默认搭载XCB平台插件,依托Xorg底层evdev驱动完成触摸输入识别,无需额外配置环境变量或运行参数,直接在终端执行Qt程序即可正常运行。

若使用需进行触摸校准的显示屏,请执行如下命令运行xinput_calibrator程序进行校准,根据屏幕提示,依次点击屏幕上出现的光标,校准后生成配置文件。

Target# xinput-calibrate.sh

非桌面环境测试

在非桌面环境下,Qt应用直接操作Linux帧缓冲(Framebuffer)显示画面,并依赖tslib处理触摸数据。运行Qt程序前,需正确配置tslib相关的环境变量,并在运行参数中指定运行插件。

备注:当前LVDS电阻屏运行Qt程序前,需执行export QT_QPA_FB_DISABLE_INPUT=1命令关闭Qt framebuffer输入处理,避免与tslib冲突。运行export QT_QPA_FB_DISABLE_INPUT=1后无法使用鼠标进行案例测试。

若使用需进行触摸校准的显示屏,请执行如下命令,关闭桌面环境。

Target# systemctl stop lightdm

执行如下命令,使用tslib提供的校准工具进行屏幕校准。

备注:若出现偏差,请重新校准。

Target# ts_calibrate

1.5Qt程序自启动说明

本章节以led_control案例为例,演示Qt程序自启动功能。

请将案例bin目录下可执行程序led_control拷贝至单板机系统"/root/"目录下。单板机上电启动进入系统后,执行如下命令,在"/etc/default/"下新建qtapp文件,并添加以下内容设置Qt程序运行依赖环境变量。

Target# vim /etc/default/qtapp

新增内容如下:

UNTIME_DIR=/run/user/0

DISPLAY=":0"

QT_ROOT=/usr/lib/qt-5.15.8

QT_QPA_FONTDIR=/usr/share/fonts

QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/qt-5.15.8/plugins

QT_PLUGIN_PATH=/usr/lib/qt-5.15.8/plugins

LD_LIBRARY_PATH=/usr/lib/qt-5.15.8/lib:/usr/lib/qt-5.15.8/plugins/platforms

XAUTHORITY=/root/.Xauthority

执行如下命令,在"/etc/systemd/system/"目录下新建qtapp.service文件,并添加以下内容设置qt程序自启动服务依赖环境以及qt程序的路径。

Target# vim /etc/systemd/system/qtapp.service

新增内容如下:

[Unit]

Description=Qt App Service

Requisite=display-manager.service

After=display-manager.service

[Service]

EnvironmentFile=-/etc/default/qtapp

ExecStart=/root/led_control

Restart=always

[Install]

WantedBy=multi-user.target

执行如下命令,开启Qt程序自启动,并重启单板机。

Target# systemctl enable qtapp

Target# sync

Target# reboot

单板机重启后,Qt程序将会自启动。Qt程序运行成功后,可观察到LVDS显示屏显示LED控制界面,可通过点击下方的按钮控制LED的亮灭。如下图所示。

执行如下命令,可取消led_control程序自启动。

Target# systemctl disable qtapp

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询