自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 问答 (7)
  • 收藏
  • 关注

原创 AWTK 嵌入式Linux平台实现多点触控缩放旋转以及触点丢点问题解决

最近涉及海图的功能交互,多点触摸又开始找麻烦。在PC/Web平台awtk是通过底层的sdl2库来实现多点触摸,但是在嵌入式Linux平台,可能是考虑到性能原因,awtk并没有采用sdl库来做事件处理,而是自己实现一个awtk-linux-fb来做适配,多点触摸的相关逻辑必须自己适配。去年11月的时候,匆忙赶工自己适配了一份tslib的代码,思路是循环线程内读取触点数据后直接调用awtk自带一个multi_gesture.inc文件去计算距离和旋转角度,在应用层注册EVT_MULTI_GESTURE事件。

2025-05-31 23:16:32 1290

原创 AWTK-MVVM 如何让多个View复用一个Model记录+关于app_conf的踩坑

有这么一个业务,主界面点击应用窗口进入声纳显示界面,声纳显示界面再通过按钮进入菜单界面,菜单界面有很多关于该声纳显示界面的设置项,比如量程,增益,时间显示,亮度,对比度等等,大概十几个设置。有些数值类的设置还有子预览菜单,在子预览菜单里面通过滑条去设置数值,回到菜单后,设置会显示子预览菜单设置的数值。声纳显示界面需要显示一些菜单的设置,比如量程,增益等等。也就是大概这么一个页面关系,其中后面三个页面之间还有数据依赖的关系。

2025-04-12 18:21:51 1083

原创 用esp32实现一个可配置的网关应用记录:通过网页进行OTA升级

ota升级是嵌入式应用的一个重要功能,能够让千里之外的用户不需烧录等开发知识就能轻松升级程序。

2025-02-19 22:17:00 909

原创 尝试把clang-tidy集成到AWTK项目

项目经过一段时间的耕耘终于进入了团队开发阶段,期间出现了很多问题,其中一个就是开会讨论团队的代码风格规范,目前项目代码风格比较混乱,有的模块是驼峰,有的模块是匈牙利,后面经过讨论,决定采用匈牙利,和awtk库的api风格一致。讨论完之后就是改代码了,有十几个模块几百个函数要改,一个个人工去改显然费时费力,改的时候就在想这种东西有没有自动化的做法了?于是下班开始探索一番,首先是尝试用AI写一个批量扫描文件,用正则匹配不符合规则的python脚本,结果费时费力,效果明显不好。

2025-02-04 22:38:09 1177 1

原创 AWTK项目编译问题整理(1)

awtk一些编译问题的踩坑整理。

2025-01-01 14:53:48 1061

原创 记AWTK一个不等长刻度条的实现和踩坑

业务有这么一个控件:​ 一开始没有细看,以为拿AWTK自带的滑动条控件搭配view就行了,然后框框框一趟下来,交给PR验收,结果PR说不对,仔细一看,才发现此滑动条非彼”滑动条“,AWTK自带的滑动条值是根据dragger矩形中线位置占整个进度条的百分比来判断的,增加同样的值,dragger走的是同样的长度,而这个进度条的值是根据右边的刻度对齐来的,这些刻度在位置上等距,但是刻度的值却和进度位置无关,dragger同样走一段距离,跨的值大小可能不一。

2024-12-29 15:38:28 647

原创 记一个framebuffer显示混乱的低级错误

在这个ub虚拟机的fb是个长为1176x885的一维数组,而且每1176字节为一行长度,而我只取了800x480的部分放到800x480的位图,在这个位图上,一行只显示800个像素,剩下的376个像素只能到800x480位图第二行去显示了,这样800x480位图两行才能存放1176x885位图的一行内容,后面的行以此类推,这就解释了为什么出来的800x480位图上出来的图像像是拧毛巾(不知道该怎么比喻。由于framebuffer的基础知识不扎实,这个任务上我多卡了两天,差点把我搞死,于此记录为后鉴。

2024-12-14 16:33:30 804

原创 AWTK实现多点触摸(Linux)

2.tslib中对于按下(down)事件,采用水平触发的方式处理,也就是手指压在触摸屏时,只检测一次down事件,后面手指的事件就都是(move)事件,直到手指离开(up),这样就造成一个问题,只有两个手指都移动的时候触摸屏才能检测到多点触摸,因为对于手指压下去没有移动的情况,tslib这端是无法检测的,判定为invalid,想搞一个手指不动另一个手指移动来“缩放”的操作,就得另寻办法。,可惜只有STM32的实现例子,跟Linux的差别还是比较大的,好在tslib有多点触摸的测试程序。

2024-11-09 21:37:33 632

原创 AWTK实现描边字体

写到这里差不多忙活了一天,原本打算到此为止时,忽然又想到,awtk的canvas_draw_text_in_rect貌似是矢量绘制,没有上面的清晰度和锯齿问题,重复绘制的思想也可以拿到这里,于是再试了一次,效果立竿见影!于是新加了个逻辑,用a值是不是255来区分是边缘还是字体,对于字体一律白色处理,边缘一律黑色处理,这下勉强能看,接近用freetype画的效果,但估计由于是通过字体的位图直接绘制的原因,清晰度很低,锯齿严重。,得到的回答居然也是不懂,无奈之下,只好自己探究,写自定义插件。

2024-10-30 21:15:11 508

原创 CMake+MinGW+vcpkg项目引入三方库的两种方式(手动路径,vcpkg)

就能一站解决,十分便利,vcpkg的构建系统包含CMake,自己在用vcpkg搭建项目的时候遇到了些问题,一时搜索无法解决,最后回去补了些CMake的基础,再回来用vcpkg,才终于走顺,这里把实验的过程特此记录。接到个新项目,用到很多三方库,从对接的同事那了解到vcpkg这个工具,周末试用了下,确实很方便,以前需要自己动手的源码下载,编译和打包安装,如今一个。, 告诉CMake,根据MinGW的生成方式,下载vcpkg.json依赖库的x64-mingw-dynamic版本,以Debug的构建类型调用。

2024-09-09 22:12:15 1541

原创 Cairo库移植到安卓记录

接Android Studio引入ndk编译的so库的故事,这个东西搞了两周以后,由于自己不熟悉Java和安卓开发,踩了不少坑,其中一周时间都是花在怎么用Android Studio上的。。。AS下的新版本Koala,结果网上资料全是旧版本,很多设置完全不同,遇了问题经常不知所措,后面不得已,换成了老一点的2021 dolphin版本,也学会了看安卓官网资料,逐渐才稳定下来。

2024-08-06 22:47:32 1505 1

原创 Python脚本批量将md文件转化成pdf

这个脚本我刚开始尝试下Windows的环境下使用,但不知道是Powershell解析问题还是什么,搞了半天latex出现各种莫名奇妙的错误,查网几个小时下来找不到解决方法,最后只得放弃。过了几个月,又想起这事,这次不走windows了,改到了wsl上,一些问题查网加上通义AI,总算走通了,做个记录,有windows路线打通了的朋友,告诉我一声。自己学编程时做了很多笔记,如今累积起来已经有几十个了,有很多图片链,怕哪天图床垮了图片就找不到了,于是就想把当时的 md 文件都转成 pdf。

2024-07-28 20:54:49 772

原创 小练习:def文件的使用

程序员的自我修养》

2024-07-28 19:33:56 463

原创 JNI在命令行的使用

开发环境为windows下wsl ubuntu22.04, java版本(原本打算用powershell纯windows环境弄,但不知道为什么。

2024-07-22 14:28:45 709

原创 Android Studio引入ndk编译的so库, 通过jni给Java程序使用

工作要求将一个C++老项目的函数用ndk打包成库给安卓同事的java程序调用。自己之前从来没接触过安卓开发,问了老板为什么不让安卓开发来干,老板说安卓开发不懂c++,公司就我一个是懂c++的。。。项目开发年限超过十年,只在32位系统编译过,一些32位可以通过的代码到了64位就不行了,很多的库多少有些兼容问题项目开发环境全程断网,给开发带来诸多不便NDK:Native Development Kit,是 Android 的一个工具开发包。

2024-07-17 12:01:47 1781

原创 awtk踩坑记录三:移植awtk-mvvm到Awtk Designer项目

使其awtk和awtk-mvvm指向上个步骤下载的路径,这样做的目的是使得designer编译调用正确的awtk路径,我的路径是转到。删掉, src下其他所有文件删除对navigator.h头文件引用, 因为mvvm库里也有和窗口导航有关的重名API, 容易引发冲突。跳转到view_models文件夹执行gen脚本, 生成。从github下载并编译awtk, awtk-mmvm。修改application.c,加入。修改src, 将common下的。, 以及idl.json.

2024-06-20 15:48:56 729

原创 用esp prog烧录ESP32-C3板踩坑

附ESP32C3的GPIO一览:按照发现仍旧无法烧录,设备管理器一看没有相关的jtag unit驱动,只好尝试改用esp prog。

2024-06-01 16:04:13 2354

原创 awtk踩坑记录二:移植jerryscript到awtk design项目

用awtk-designer新建项目,awtk和awtk-mmvm路径改为上一步github下载到的目录路径(如designer改不了,可在project.json上修改)工作要求,想尝试看看在awtk-designer设计界面的同时能不能用javascript开发逻辑层,以此和前端技术联动,本文是一种项目建构的思路。从awtk-jerryscript复制3rd/jerryscript,src改名为jerryscript_src到designer项目上。

2024-05-29 21:29:08 692

原创 awtk踩坑记录一:awtk-web build.py编译过程笔记

测试方法:vscode下用python插件F5 debug, debug方式选择command line arguments。

2024-05-29 18:35:36 806

原创 关于在Ubuntu上配置mysql踩的一些坑

最近准备换工作了,回顾了下学校时期做的那个webserver,又在linux下mysql踩了一些坑,特此记录下来如果出现404错误,但是检查source.list又没有问题,那可能你的镜像源很久没更新了,记得。

2024-04-05 20:49:50 608

原创 FreeRTOS-07任务切换 对vPortSVCHandler和xPortPendSVHandler的理解

其实看懂代码之后就知道上下文切换的实质是将哪个任务栈的数据加载入cpu寄存器中,新任务加载时,旧任务的数据将由cpu寄存器通过汇编代码加载回其任务栈,然后屏蔽中断,调用切换函数修改当前指向的TCB,再恢复中断,通过新任务的TCB将新任务的任务栈数据加载入cpu, 自此切换完成。

2023-12-19 21:19:41 2566

原创 过来人大学四年的教训小结

如果能去的学校都差不多,那么重要的就是你想干什么和你想去哪里了,优先选择离家乡近的学校,因为放假回乡十分省钱(个人反例,福建的选了西安的学校,结果放假坐飞机回去就特别花钱,一次900-1000,退票又麻烦)高考完三个月,如果做什么规划都迷茫,建议先把驾照考了,这个时候考时间最充足。对于对所处专业乃至社会常识一无所知的新人来说,大学四年是最好不过的试错环境,心态一定要放开,尽量尝试新的事物(考驾照,报社团,学证书等等),你在大学积累的这些阅历都会在后面的工作中给你重大的帮助!即将走入社会,尽快把学生思

2023-10-28 13:14:22 504 2

原创 用bash脚本实现openocd一次性烧录

有的时候eide扩展烧录莫名奇妙就会失灵,弹出"upload busy"的错误,网上也查不到是怎么回事,只好手动打指令,奈何openocd烧录指令又太过麻烦,于是多方查找整了个适合自己的脚本供自己实验,这里把脚本分享出来,方便自己在公司的时候就能在网上找到,也方便各位开发,有更好的方案欢迎提出哈。IDE:vscode+eide扩展。开发板:stm32f103c8t6。可根据自身实际情况做更改。烧录器:stlinkv2。

2023-10-03 20:18:01 869

原创 C语言实现贷款计算器

一个心血来潮的研究,避免以后买房被坑。捣鼓了半天才发现原来支付宝的那个利率是年利率不是月利率,坑了我半天。。。

2023-08-19 18:14:53 1675 3

原创 实现vscode上用gdb调试stm32

这周负责编写设备的某个模块,其中遇到了一些变量地址不正确的错误,按理这种底层变量错误用gdb一类的调试器就能很快查到,可是初入嵌入式一行,此C语言非彼C语言,对于gdb怎么对接到项目上根本一无所知,问了下周边同事,发现他们居然都是直接打串口日志来调试的,那岂不是每次遇到问题都得在代码上留一堆丑陋的printf?

2023-08-06 17:32:36 3202 4

原创 STM32 江协教程 EXTI外部中断(对射式红外传感器计次、旋转编码器计次)笔记补充 旋转编码器判断方向的两种实现方法记录

spm=1001.2014.3001.5502后的一点小补充。方法一,一方下降沿同时查看另一方电平,以A为例,A下降时若B为高电平则为正向,A下降时若B为低电平则为反向,这种判断方法有个问题另一方电平会有一定持续时间延迟,导致用很小的力扭旋钮也会触发中断,导致没有转到位就出现数字变化的情况,不推荐。方法二,官方方法,通过A,B电平变化的滞后性来判断,如果A下降之后B也下降就是正向,而B下降后A再下降就是反向,由于A,B变化都是即时性的,就很好的解决了上面方法一的问题。

2023-07-20 23:38:27 658 2

原创 图灵完备游戏:信号计数 解法记录

可以看看,不管是情形1还是情形2,由于输入2-4的输入情况都在两个亮及以上,全加器1的c端输出一定为1,由于全加器1的c端输出是半加器2的b端输入,因此可转化为半加器2的s端输出一定为1,而这个输出正好和数位2引脚绑定。**计数4的情况:**全加器1s端和c端都输出1,由于全加器1的s端输出是半加器1b端的输入,于是半加器1s端输出0,c端输出1, 半加器1c端输出和全加器1c端输出分别成为半加器2a端和b端的输入,于是半加器2 s端输出0, c端输出1,正好对应计数4的情况,和引脚为4的终点绑定。

2023-05-27 13:05:39 2670 1

原创 谈FANUC KAREL与C的几点区别

3.socket编程,karel是跟发那科机器人对接的,要注意的一点是机器人用的是server port,跟C的socket描述符差别还是挺大的,监听,读写对端都是用的这个port,还要开个file变量去OPEN才能发数据,而C accept得到client的fd后直接就能对client fd读写了,多客户端情况下对应到C服务端就是有多个client fd整数,karel的情况,我目前还没遇到多个客户端连接机器人的情况,但是示教器上S3-S8 5个port是空闲的,这种工业的情况应该连接管理会很简单。

2023-05-07 20:14:03 865

原创 20230420-上海广策信息技术笔试记录

思路:AC,其实就是自己实现一个快速排序,分别把数字字符串和字母字符串遍历提取出来,然后再遍历主串,数字串和字母串设两个指针在开头,主串遍历到字母则字母串指针值拷进去,然后前进一位;想法:两步,一.实现大数乘法,二.通过阶乘乘法求出阶乘结果字符串,然后遍历统计字符串末尾0的个数。特定一个字符串s,该字符串仅由字母与数字组成,即a-z,A-Z,0-9组成,脑筋急转弯,半天想不出来,其实当时也想到位运算的。LC的简单题,不知道为什么一直有3道用例错,枯了。序,并且不改变之前字母和数字所在的位置,即字母之。

2023-04-20 19:19:14 552

原创 浅谈Python装饰者模式与其他静态语言(C++,Java)装饰者的区别

2023-03-07 21:51:37 291

原创 WebServer重写(一):日志库双缓冲和阻塞队列压测对比

2023-01-31 20:56:00 1260 4

原创 对于Muduo主从Reactor模式的理解

2023-01-03 09:40:12 611

原创 C++ Primer 13.5练习:实现StrVec和String

A

2022-12-22 20:46:52 465

原创 实验模拟TCP连接的各种异常情况(三次握手丢包,两端异常)

2022-12-05 21:45:40 2663

原创 Effective STL 学习笔记

2022-12-03 20:10:16 462

原创 WebServer异步日志模块,Log类构析导致线程死锁解决分析

1

2022-09-30 20:32:10 392

原创 javascript随机生成邮箱,手机号,姓名,日期,密码供数据库使用

2022-09-22 21:59:34 5388

原创 20220911- LC第310场周赛

x

2022-09-11 13:32:41 833

原创 如何在vscode中使用gdb命令行与打印指针数组

.

2022-09-10 16:14:19 2539

原创 C++11 auto, decltype类型推断分析

2022-08-05 11:18:29 363

空空如也

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

TA关注的人

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