自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(90)
  • 收藏
  • 关注

原创 qt将文件压缩成zip包

目前已经使用Qzipwriter实现文件和文件夹的压缩和解压缩。

2025-03-03 09:23:15 226

原创 QObject——Q_PROPERTY的使用

另不同控件类型,也会有不同属性,具体可以翻阅qt类头文件。

2025-03-03 09:19:50 179

原创 ok113i——系统快速启动优化方法

经过上面的更改后,从开机到qt程序界面显示大概只需5秒时间;另外,设备树里还启动了很多没有用到的外设,这里并没有优化设备树;

2025-02-19 17:03:00 331

原创 ok113i平台——多媒体播放器适配

gpt解释是:SDL2 可能会尝试设置的音频采样率与系统支持的采样率不兼容。解决方案:SDL_OpenAudioDevice调用时指定采样率为48000HZ,但是如果音频文件是其他采样率的,则声音会变;上面采样次数计算错误的公式是gpt和文心一言都推荐的计算方法,且它在x86_64平台运行的很正常;可以在Ubuntu下编译qt程序,得到可执行文件后,用ldd命令查看可执行程序的关联库;当视频卡顿时,声音会一顿一顿的,此时就会这个报错。这就是由于卡顿导致的。声音会变的原因是重解码时采样次数计算错误了;

2025-02-19 16:59:12 505

原创 ok113i——交叉编译音视频动态库

buildroot支持ffmpeg和SDL,但博主的ffmpeg是按下面方法编译通过,SDL使用buildroot直接编译也通过;

2025-02-19 16:58:00 540

原创 将QMessagebox等控件的默认按钮显示为中文

qt_zh_CN.ts的打开方式有两种:一是用文本打开,直接更改;二是用qt自带的翻译家工具:linguist.exe,该工具在编译器目录C:\Qt\Qt5.12.12\5.12.12\mingw73_64\bin。另外,还可以找到qt_zh_CN.ts文件自己针对某些控件的按钮进行定制化更改;qt_zh_CN.ts是要到官网下载,qt安装目录找不到。

2025-02-19 16:48:02 286

原创 ok113i平台——交叉编译器增加QScript模块

编译完成后,在OK113i-linux-sdk/out/t113_i/ok113i/longan/buildroot/build/qt5script-5.12.5目录会找到对应的库文件;如果编译失败,可以根据失败原因一个个解决,最简单的办法是清空所有编译结果(make clean),会导致编译时间很长(2个小时以上)可以看到删除的内容都在out里面,也就是说编译的过程文件都在out里面,不在buildroot里面;qtcreator配置新的编译器,新的编译器目录在buildroot编译输出目录。

2025-02-19 16:19:51 243

原创 ok113i平台——更改根目录分区大小

home/forlinx/OK113i-linux-sdk/device/config/chips/t113_i/configs/ok113i/longan/的软连接,/home/forlinx/OK113i-linux-sdk/ok113i/longan/sys_partition.fex (这个是第一个的软连接)另外,/home/forlinx/OK113i-linux-sdk/ok113i/longan/是。

2025-02-19 16:07:46 303

原创 ok113i平台——usb触摸屏驱动开发

在嵌入式Linux系统中,如果USB触摸屏能够检测到并且在手指移动时有数据,但点击无法触发,这可能是因为触摸屏驱动或配置的问题。

2025-02-19 15:55:01 735

原创 ok113i平台——qt+tslib支持usb触摸屏热插拔功能实现

参考:https://blog.youkuaiyun.com/alone4together/article/details/115269753。需要注意单独编译的buildroot后,还需要全编译,才会将根文件系统镜像rootfs.ext2更新到系统镜像;所以重新插拔usb后,qt程序并没有重新连接usb触摸设备,导致没有触摸数据接收;问题:重新插拔设备,需要软件重启才能接收到触摸事件。

2025-02-19 15:45:52 375

原创 qt显示图片

解决方法2:参考:https://blog.youkuaiyun.com/weixin_39834568/article/details/111500808。只是存为bmp后,文件的头信息还是png,将文件后缀改为.bin用二进制的形式打开文件,能看到文件头信息。原因:bmp图片是在windows下用微信截图后另存的,微信截图默认是png,可以另存为jpg和bmp;问题:使用QImage和QPixmap的load方法加载bmp图片失败,png和jpg都没问题。主要用于进行I/O处理,对I/O操作进行了优化;

2025-02-19 14:15:07 207

原创 Linux常用命令——du

用途:estimate file space usage, 查看文件或文件夹大小。du # 如果在目录下直接输入du则会把当前目录和子目录按字节大小显示;du -sh # 输入该命令则会按K,M,G的单位列出目录总大小;du -s # 输入该命令则按字节格式显示当前目录的总大小;

2025-02-19 11:03:33 83

原创 python协程在多线程中的使用示例

根据协程的含义,本来是想使用协程实现多个IO同时访问的效果,但按照例程的方法并不能实现同时访问多个IO,仍然是阻塞性访问IO的方式。另外,也尝试了在主线程使用协程多任务的方式,也是阻塞性访问IO。

2024-03-22 19:29:58 298

原创 QSqlTableModel使用简介

【代码】QSqlTableModel使用简介。

2023-10-07 09:05:04 559

原创 qt creator常用快捷键

以上是部分qt creator默认的快捷键;在同名.cpp和.h文件中切换。在设计师界面,可以预览当前UI。详情可以打开creator的。自动对齐代码,要选中才有效。弹出选择类的qt帮助文档。

2023-07-06 19:40:24 624

原创 xml核心概念——元素和属性

是一个子元素,其中id是他的属性,请注意属性id的格式,id=号后面的属性内容必须用双引号包含,这个note子元素也有对应的结束符;- 元素的内容中'', '&', '\'', '\"',这几个符号需要分别被 ,&,',"替换;其中第一行是xml的文件头部,不是xml的数据内容,主要作用是用于识别xml文件。是根元素,这是xml中必须的一个元素,元素必须有一个开始和一个结束;- 元素的命名应该避免'-', '.' ,':'等符合。是message的子元素,是的兄弟(姐妹)元素;

2023-06-19 09:19:07 292

原创 数据库sqlite特性研究

参考:https://blog.youkuaiyun.com/rach09/article/details/120887937。从sqlite历史数据表130w行中读取300行,再画到Qcustomplot上,绘图的动作耗时1ms左右。事务和锁是相关联的,没有显示的调用事务时,每执行一条sqlite语句就会自动提交一个事务。这个语句只在当前操作有效;

2023-06-06 18:38:38 14

原创 qt creator添加build步骤删除某个文件

参考:https://blog.youkuaiyun.com/weixin_44436546/article/details/113587115。

2023-05-10 19:30:13 1072

原创 获取QTableWidget中某个单元格的坐标

请注意,单元格的坐标是相对于QTableWidget的左上角的。如果您需要使用全局坐标,请使用QTableWidget的mapToGlobal()方法将单元格的坐标转换为全局坐标。其中,tableWidget是您的QTableWidget对象,item是获取的QTableWidgetItem对象,rect是单元格的矩形区域,x和y是该单元格的坐标。要获取QTableWidget中某个单元格的坐标,您可以使用QTableWidget的item()方法来获取该单元格的QTableWidgetItem对象,

2023-04-06 09:03:59 1873

原创 QSqlError(“5“, “Unable to fetch row“, “database is locked“)问题解决

多线程同时写数据库;多线程写数据库,当有事务产生时就会出现该问题;原因:当前上锁逻辑是对数据库API上锁,即开启事务时上锁-事务开启处理完后解锁;插入数据上锁-数据插入执行完解锁;提交事务上锁-提交逻辑处理完解锁;事务处理过程有两次解锁都可能被其它线程去执行写入数据库,所以导致问题出现。Begin tran付出的代价是在提交之前,所有SQL语句锁住的资源都不能释放,直到commit掉。可见,如果Begin tran套住的SQL语句太多,那数据库的性能就糟糕了。

2023-03-21 09:58:08 1224 1

原创 QCustomPlot滚轮缩放事件处理逻辑

【代码】QCustomPlot滚轮缩放事件处理逻辑。

2023-03-13 11:51:02 1761

原创 qt控件增加渐变色效果

在qt creator设计师界面设置样式中可以添加渐变,里面有预设的15种效果可参考。

2023-03-09 09:49:18 1878

原创 使用std::sort自定义比较条件

参考:https://blog.youkuaiyun.com/jiangdong2007/article/details/81008279。:比较接口函数需要用静态的,即可以是类外定义的函数,也可以是类里的静态成员函数;

2023-02-24 09:28:58 371

原创 qt获取事件过滤器的当前鼠标坐标

【代码】获取事件过滤器的当前鼠标坐标。

2023-02-23 09:08:49 673

原创 qt定位sqlite最后一条记录,计算表格总行数

/这行应该是建立数据库连接 QSqlQuery query(db);该方法随着数据量增加会耗时会越来越多。不推荐使用。//这行应该是建立数据库连接 QSqlQuery query(db);");

2023-02-14 09:46:18 1993 1

原创 vscode的使用经验总结

在编辑区,用快捷键点击不同的行,会在对起止行中所有的行做相同的操作,插入操作光标。这种模式下不仅可以选择竖列,同时还可以非常灵活的在多个地方插入光标。Ctrl+光标点击 选择多个编辑位点。Alt+Shift 竖列选择。Shift+Ctrl 竖列选择。正则表达式选择行首行尾。

2023-01-13 09:26:06 4509

原创 ubuntu下打包qt程序

参考:https://blog.youkuaiyun.com/qq_39072246/article/details/125254270。(暂未测试)这里记录下手动打包步骤,参考:https://blog.youkuaiyun.com/m0_47166254/article/details/125322365。这个更详细,参考:https://blog.youkuaiyun.com/zyhse/article/details/106381937/问题:用Linuxdeployqt工具打包的qt程序会缺少qml的库文件。注意分号是一定要的。

2022-12-26 11:26:38 3310

原创 QDialog窗口弹出时,软键盘不能使用问题解决

Dialog 窗口在调用exec前,先调用setWindowModality(Qt::WindowModal)这一句话;如果窗口变成非模态,就在该窗口的构造函数调用setWindowFlags(Qt::Dialog);

2022-12-13 21:46:22 622

原创 vmware-ubuntu使用问题记录

或者将/etc/NetworkManager/NetworkManager.conf文件中managed = false 改为 managed = true再重启网络;解决方法:先输入密码点一下登录,再按ctrl+alt+f2就可以进入命令行,再按ctrl+alt+f1就切换回图像界面;然后重新打开网络:sudo service network-manager start;原因:ubuntu没装ftp服务,或者没打开相关使能。问题:无网络图标,网络连不上。方案一,简单直接,效果明显。解决方法:重装系统;

2022-11-28 09:49:42 1627

原创 gdb core dump使用简介

这个命令只对当前有效,重启后就失效。

2022-11-27 10:54:33 1949

原创 QT中sqlite的使用

,括号里面的字符串是SQLite的命令语句,通过该函数几乎可以运行SQLite的所有命令。使用名称占位符插入记录,这样就可以使用变量,可以同时插入多条记录。int size():获取当前连接下,正在查询的表格的记录数,并不是所有数据库都支。at():返回当前跟踪的表格的索引index,类似于数组的下标。3. 创建多个连接,一个数据库可以创建多个连接,当然一个连接也可以创建多个表格。):获取当前索引下记录中某个字段的值,输入参数表示几号字段。不一样,字段的值都是自己输入到表格,字段名也可改为不叫id。

2022-11-19 10:36:23 4632

原创 Ubuntu下qt编译问题

linux下安装qt不会关联安装编译器,如果装Linux系统时没安装gcc或g++则会提示缺少编译器。提示缺少编译器,kit: Desktop Qt 5.12.12 GCC 64bit。下面两个步骤暂时未知是否必需,只是刚好做了。打开示例工程,构建后提示如下错误。下面两个步骤是必需的。

2022-11-16 10:24:25 1652 3

原创 imx6ull烧写系统固件

参考《【正点原子】I.MX6U 开发板文件拷贝及固件更新参考手册V1.2.pdf》-第二章I.MX6U更新固件。

2022-11-02 13:46:05 1379

原创 imx6ull-arm开发板和电脑网线直连通信

根据最后结果,该问题的根本原因是网线没接对开发板的网口。而确认linux驱动中的eth0和eth1对应的硬件网口方法是:使用ifconfig eth0 up/down命令开关一个网口,对应网口的led会有反应。

2022-10-28 20:18:28 3160

原创 步进电机积累

细分驱动器是通过控制电机的相电流,让电机保持在某一个位置,实际上如果电机不在一个完整的步距角位置时,关电,电机会移到一个步距角的平衡位置。细分数:驱动器将一个步距角细分后的值;如:2细分,则一个脉冲就走步距角/2的角度值;步距角:一个脉冲对应电机运动的角度,常用的有1.8°,0.9°;1. 步进电机基础参数。2. 细分的控制原理。

2022-10-25 10:38:02 315

原创 c文件操作接口

【代码】c文件操作接口。

2022-10-20 10:56:25 222

原创 PID控制理论

积分饱和就是,积分项数值一直朝一个方向累加(一直减小或一直增大)。导致积分项的值非常大或非常小。下次改变目标值后,由于积分项绝对值太大,导致控制器调整输出的速度变慢。PID参数整定绝对是PID最核心的内容了。笔者用的最多的就是试凑法,其它方法笔者也不懂。增量PID用的比较少,所以调试就不熟练,虽然可能对积分饱和有改善但会引入其它问题。当pid计算得到的值大于系统输出值时,就将积分项减去多余的值。将基础代码段中的err_sum限制在一定的取值范围内。......

2022-08-13 14:42:36 688

原创 bootloader的原理分析

1.1.2 定分区 bootloader分区:boot程序存储区,通常0x8000000开始 数据存储取:标志位等固件基本信息存储区,通常在boot分区和app分区中间; app分区:app程序存储区,前面两个分区留足空间后,剩下的即可定义为app区;.........

2022-07-17 13:03:55 2284

原创 can总线仲裁

如图,单元1和单元2同时开始向总线发送数据,开始部分他们的数据格式是一样的,故无法区分优先级,直到T时刻,单元1输出隐性电平,而单元2输出显性电平,此时单元1仲裁失利,立刻转入接收状态工作,不再与单元2竞争,而单元2则顺利获得总线使用权,继续发送自己的数据。这就实现了仲裁,让连续发送显性电平多的单元获得总线使用权。...

2022-06-05 00:19:46 953

原创 stm32-can简介

推荐阅读:【stm32f407】CAN总线_Wireless_Link的博客-优快云博客 根据图中信息,tPCLK = 1/APB1_CLK;所以can波特率的计算公式如下:CAN_Baudrate = 1/(tq + tBS1 + tBS2) = 1/(tq*(1 + CAN_BS1 + CAN_BS2))CAN_Baudrate = APB1_CLK / CAN_Prescaler / (1 + CAN_BS1 + CAN_BS2)参考:STM32中CAN波特率的计算_Nan_Key的博客-CS

2022-06-04 11:36:51 2485

空空如也

libmodbus-tcp

2023-03-02

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除