QT5开发笔记(二)--几种常用的类


定时器

引用头文件

#include <QTimer>

在头文件中声明定时器指针及槽函数:

private slots:
    void on_timer1_timeout();
private:
    QTimer *Timer1;

创建初始化定时器:

Timer1=new QTimer(this);
// 连接信号与槽函数
QObject::connect(Timer1,SIGNAL(timeout()),this,SLOT(on_timer1_timeout()));

// 设置超时时间(单位为ms)
Timer1->setInterval(100);
// 启动定时器
Timer1->start();

// 也可以直接调用重载的方法来设置超时时间并启动定时器
// Timer1->start(100);

槽函数实现:

void MainWindow::on_timer1_timeout()
{     
    // 获取当前时间   
    QTime t = QTime::currentTime();
    QString str;
    str.sprintf("%02d:%02d:%02d", t.hour(),t.minute(),t.second());
    // 显示
    ui->lcdNumber->display(t.toString("hh:mm:ss")); 
}

日期与时间

#include <QDate>
#include <QTime>
#include <QDateTime>

获取当前日期/时间:

QTime t = QTime::currentTime();
QDate d = QDate::currentDate();
QDateTime q = QDateTime::currentDateTime();

转换为字符串:注意月份为大写MM

str = dt.toString("hh:mm:ss"); 
str = dt.toString("yyyy-MM-dd"); 
str = dt.toString("yyyy-MM-dd hh:mm:ss"); 
 
str = t.toString(("hh:mm:ss"));
str = d.toString(("yy-MM-dd"));

- 阅读全文 -

QT5开发笔记(一)--基础应用


下载地址:
https://download.qt.io/archive/qt/5.12/5.12.10/qt-opensource-windows-x86-5.12.10.exe

注意事项:
高版本的为everywhere版本安装包比较大。

选择安装组件:
MinGW 7.3.0 32-bit
MinGW 7.3.0 64-bit
MSVC 2017 32-bit
MSVC 2017 64-bit
选择其中一种即可(这里选MinGW 7.3.0 32-bit),Minimalist GNU for Windows,不依赖于第三方库。

安装编译器及运行环境: 安装MSVC组件时,需要安装
https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/
下载并安装Visual Studio 2010 VC++ Redistributable(实际上是vcredist_x64/vcredist_x86)
下载并安装Microsoft 生成工具 2015 (编译器)


修改应用程序图标:
修改.pro工程文件,指定RC_ICONS选项

QT  += core gui
#  添加RC_ICONS指定图标文件
RC_ICONS  = SerialPort.ico

# 指定生成应用程序的名称
TARGET=SerialPort

软件打包Windows
1.编译release版本,并将其复制到发布目录中;

2.复制依赖文件
打开MinGW 7.3.0 32-bit命令提示符(名称与安装版本有关)
切换至发布目录,执行windeployqt命令,把所需的依赖文件复制至应用程序目录下,然后将整个目录发布。

cd /d F:\publish\
windeployqt.exe SerialPort.exe

也可以不切切换目录,直接指定文件路径执行,也会将依赖文件复制至目标目录中。

3.生成单文件(Enigma Virtual Box),根据提示可将目录打包成单文件。


Linux打包程序

新建打包脚本pack.sh内容如下:

#!/bin/sh  
 #你需要发布的程序名称
exe="SerialPort"
#创建文件夹的位置
des="/opt/apps" 
# 通过ldd命令找出依赖的动态链接库文件
deplist=$(ldd $exe | awk  '{if (match($3,"/")){ printf("%s "),$3 } }')  
cp $deplist $des

然后向SerialPort.sh文件里添加以下内容(内容不需要更改):

#!/bin/sh  
# 带路径的情况下,提取可执行文件名
appname=`basename $0 | sed s,\.sh$,,`  
# 带路径的情况下,提取路径
dirname=`dirname $0`  
# 去除前边的根目录符号
tmp="${dirname#?}"  

if [ "${dirname%$tmp}" != "/" ]; then  
    dirname=$PWD/$dirname  
fi  

LD_LIBRARY_PATH=$dirname  
export LD_LIBRARY_PATH  

$dirname/$appname "$@"

- 阅读全文 -

串口屏开发笔记--迪文K6000


产品型号:
软件版本: DGUS V5.04


接口设置:
ON = TTL 短接连接跳线
OFF = RS232 断开跳线


工程说明:

1.K600不能使用高版本的DGUS(配置文件格式不同),测试V5.04工作正常

DWprj.hmi - 工程文件,文本格式,描述了图片关系
DWprj.tft - 二进制文件
TFT目录 - 显示组件的文件,二进制格式
DWIN_SET目录 - 生成的烧写文件,全部复制到SD卡中
image目录 - 原始图片素材
ICON目录 - 原始图标素材


修改背景图片: 新图片直接覆盖DWIN_SET目录中原图片,重新烧写即可。


复选框设计:

变量图标显示:
选择图标文件,设置变量地址,上限1设置图标,下限为0,不设置图标
添加增量调节:
设置变量地址,按字节写入,调节方式++,逾限处理方式: 循环调节;调节步长:1;下限:0;上限:1.

数字录入:
显示部分:数据变量显示,指定变量地址,变量类型,整数位,小数位等
触控部分:变量数据输入,设置变量地址
键盘设置-->其他页面,选定键盘区域(轮廓)),
设置键盘显示位置(左上角),录入显示区域(右上角)


键盘处理:
基本触控: 按照提示内容输入键值即可


RTC显示及设置:
显示部分: RTC文本显示,设置字库,字号及日期格式即可;
触控部分: RTC设置,设置键盘相关参数即可。


模拟钟表显示:
显示部分: 表盘时钟显示,设置时针,分针,秒针的图标及中心坐标,不需要触控部分。


寄存器宽度为8bit,每个地址对应1个字节

读寄存器: 命令81,cnt为期望返回的字节

5A A5 03 81 addr cnt

写寄存器: 命令80,长度需要根据寄存器类型来确定

5A A5 04 80 addr val

切换页面: 向寄存器03写入页面地址(寄存器为16位,需要2个字节)

5A A5 04 80 03 00 05

读写RAM: RAM字宽为16bit,每个地址对应2字节。


二维码显示:
显示部分: QR二维码控件,选择左上角位置,设置变量地址,设置单位相素(Unit Pixels)

二维码显示内容为字符串格式,需要发送0结尾;
根据手册二维码最多支持458个字节,但通讯协议最大帧长度为255 + 3,所以如果大于255个字节时,需要分两次写入;
二维码图形有 4545 单元像素(数据少于 155 字节)和 7373 单元像素(数据少于 459Bytes)两种。


曲线显示:
显示部分: 实时曲线显示,设置显示宽度(W)高度(H)
Y_Central - 设置水平中心轴位置
VD_Central - 中心值对应的数值,最大值和最小值中间的位置,(Vmax + Vmin) /2
纵轴放大倍数 - MUL_Y=(Ye-Ys)*256/(Vmax-Vmin) 向下取整
横轴间隔 - 一般取1

左上角坐标(Xs,Ys),右下角从标(Xe,Ye)
如果需要显示曲线线条比较粗,可在同一个位置放置多个上下(Y 轴)平移的曲线变量并引用同一个数据
源。

- 阅读全文 -

LWIP应用笔记--杂项


运行中更改IP地址: 只需要修改全局网络接口中的IP地址即可

lwip_netif.ip_addr = ip;
lwip_netif.netmask = netmask;
lwip_netif.gw = gw;

数据结构:

ip_addr_t - lwip中常用的ip地址格式(大端)
struct ip_addr - ip_addr_t的原型,实际上就是u32

几个重要的转换函数:

// IP点分格式字符串,转换成ip_addr_t
ipaddr_aton("224.0.2.8", &dst_ip);
// 将ip_addr_t格式的IP转换成点分字符串格式
ipaddr_ntoa(&dst_ip)

// 分别指定ip_addr_t各段的值
IP4_ADDR(&dst_ip,224,0,2,8);

// 将点分字符串,转换成问题u32格式返回(可以强制转换为ip_addr_t格式)
u32_t ipaddr_addr(const char *cp);

- 阅读全文 -

Jetson Xavier NX应用笔记


查询功耗模式:

$ nvpmodel -q --verbose

设置功耗模式:

$ nvpmodel -m 0

0: MAXN
1: MODE 10W
2: MODE 15W
3: MODE 30W ALL
4: MODE 30W 6CORE
5: MODE 30W 4CORE
6: MODE 30W 2CORE
7: MODE 15W DESKTOP


开启风扇:

sudo jetson_clocks

修改风扇转速: 0 - 表示不转,最大值需验证

$ sudo echo 150 > /sys/devices/pwm-fan/target_pwm

运行监测工具:

$ sudo jtop

需安装jetson-stats工具(pip3)
可以调整工作模式,风扇转速,CPU工作状态等参数。


- 阅读全文 -


Copyright©2025 春天花会开, All Rights Reserved. Email: webmaster@oroct.com