- 博客(90)
- 收藏
- 关注
原创 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
原创 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
原创 使用std::sort自定义比较条件
参考:https://blog.youkuaiyun.com/jiangdong2007/article/details/81008279。:比较接口函数需要用静态的,即可以是类外定义的函数,也可以是类里的静态成员函数;
2023-02-24 09:28:58
371
原创 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
原创 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-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
原创 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关注的人