- 博客(30)
- 收藏
- 关注
原创 如何将VSCode中C项目工程运行到开发板上
本文记录了将LVGL界面应用从VSCode模拟器迁移到开发板的过程。首先配置编译环境,包括导出SVN预编译工具链和SDK到指定目录。然后基于hellolvgl模板进行工程配置,修改CMakeLists.txt和main.c文件,调整build.bat脚本使其能正确生成可执行文件。最后通过adb将编译产物推送到开发板并赋予执行权限。虽然当前屏幕显示存在问题,但已完成了从模拟环境到真实硬件环境的完整移植流程,为后续调试奠定了基础。
2025-11-25 10:43:47
828
原创 在 VSCode 中:Label标签中添加时间显示
摘要:本文介绍了在嵌入式GUI中实现实时时间显示功能的代码实现。通过在events_init.c中添加事件处理函数,当屏幕加载/卸载时分别启动/停止时间更新。核心功能包括:1)使用lv_timer创建1秒间隔的定时器;2)通过localtime获取系统时间并格式化显示;3)提供start_time_update和stop_time_update函数控制时间更新。代码实现了简洁的"%H:%M"时间格式显示,并确保初始显示不空白。相关函数声明需添加到events_init.h头文件中。
2025-11-21 11:37:39
205
原创 Windows C下使用winsock库实现tcp客户端通信
本文介绍了使用Winsock库实现TCP客户端通信的步骤。首先初始化Winsock库并创建TCP套接字,然后配置服务器地址信息(包括地址族、IP和端口),接着建立连接并实现数据收发功能(使用send和recv函数)。最后关闭连接并清理资源。文中提供了完整的C语言代码实现,包括错误处理机制,演示了从连接服务器到发送"Hello, server!"消息并接收响应的完整流程。该程序适用于基本的TCP客户端开发场景。
2025-11-17 13:33:19
277
原创 在 VSCode 中:lvgl库函数和lv_drivers以静态链接库的形式参与c应用项目的运行
文章摘要:本文介绍了从动态链接库转为静态链接库方式加载LVGL和lv_drivers的实现过程。首先展示了原有的模拟器运行效果,然后说明了改用静态库的原因(便于系统升级和减小应用体积),详细描述了环境搭建步骤:包括MinGW安装、SDL2配置、prebuilts部署等。重点阐述了在自有工程中的实现方法:创建lib目录存放静态库、配置CMakeLists.txt文件、替换关键配置文件等。最后解决了TFT模拟器显示异常问题,通过替换lv_conf.h和lv_drv_conf.h文件实现了预期效果。整个过程为嵌入
2025-11-13 15:32:04
897
原创 在GUi-Guider中:创建应用模版,分析模版代码
文章摘要:本文介绍了通过官方demo学习应用开发的实用方法。主要内容包括:1)效果展示部分强调通过逆向学习已完成的代码和界面来掌握设计技巧;2)界面分析环节详细说明如何通过鼠标悬停获取控件信息,并依次查看各类控件的属性配置;3)代码分析部分指出导入工程时需要修改的关键位置,建议从首页开始逐步分析结构体中的UI定义。全文提供了从界面到代码的完整学习路径。
2025-11-10 17:19:53
310
原创 在GUi-Guider中:加标识 Event Bubble的作用
GUIGuider中的EventBubble(事件冒泡)机制允许子控件事件向上传递给父容器处理,简化了事件管理。其优势包括:单一父容器事件处理替代多个子控件绑定、支持动态内容统一处理。典型应用如列表项点击,只需为父容器设置事件监听,子元素(图片/标签/按钮)通过勾选属性面板的EventBubble选项即可实现事件传递。该机制显著提升开发效率,尤其适用于含动态元素或复杂嵌套的GUI场景。
2025-11-07 15:08:07
202
原创 在 VSCode 中:修改快捷键
VSCode修改删除行快捷键方法:针对Ctrl+Shift+k与输入法冲突问题,可通过"文件-首选项-键盘快捷方式",将删除行快捷键修改为习惯的Ctrl+d。操作步骤简单,满足个性化需求。
2025-11-06 17:14:14
336
原创 在 VSCode 中:引入开源cJSon解析库+示例demo
本文介绍了在VSCode中使用cJSON库处理JSON数据的完整流程。首先从GitHub获取cJSON库文件,配置项目路径后,通过五个实例演示了cJSON的核心功能:1)创建包含嵌套结构和数组的JSON对象;2)解析JSON字符串并提取数据;3)处理复杂嵌套JSON;4)操作JSON数组;5)JSON文件读写操作。文中提供了详细的代码实现,包括创建用户信息JSON、解析产品数据、处理公司部门结构等示例,并封装了安全的JSON解析和打印工具函数。最后展示了在终端运行后的输出效果。
2025-11-06 15:04:26
828
原创 在 VSCode 中:如何主动生成c_cpp_properties.json文件
摘要:本文介绍在VSCode中生成c_cpp_properties.json配置文件的步骤。首先需确认该文件不会自动创建,必须手动配置。具体操作:1)打开命令面板(Ctrl+Shift+P);2)输入"EditConfigurations(UI)"命令;3)若无此命令,需先安装Microsoft的C/C++扩展;4)完成安装后即可生成配置文件。整个过程解决了C/C++开发环境配置的基本需求。
2025-11-06 14:15:35
376
原创 在VSCode中:解决终端输出中文乱码问题
VSCode中C语言源文件添加中文注释出现乱码的解决方法。当在代码中添加包含中文的注释或字符串时,显示会出现乱码问题。解决方法是:在项目工程的.vscode/settings.json配置文件中添加特定编码设置。修改后重新编译运行,中文内容即可正常显示,解决了原本的乱码问题。该方法简单有效,适用于VSCode环境下处理中文编码问题。
2025-11-06 14:03:26
351
原创 C语法: 知识点持续更新中...
C语言中函数声明规则:1)函数定义在使用前时可隐式声明,但不推荐;2)定义在使用后或跨文件时必须显式声明,最佳实践是始终使用头文件声明。typedef作用:为结构体创建简洁的类型别名(如lv_ui替代struct lv_ui),提升代码可读性。建议将typedef与头文件声明结合使用,遵循现代C语言开发规范。
2025-11-05 11:35:26
249
原创 在VSCode+Guider基础上:拖动滑条控件,显示滑条数值
本文介绍了在LVGL 8.3版本中实现滑动条控件的步骤:首先从指定网址查找8.3版本的示例代码,复制后使用VSCode进行修改,最终实现拖动滑条时数值实时变动的效果。重点强调了必须使用对应8.3版本的API,否则会出现错误。文中包含四个主要操作步骤,从查找代码到最终运行测试,并附有效果图示说明。
2025-11-04 17:27:18
180
原创 在VSCode+Guider基础上:实现页面跳转
本文介绍使用GUI-Guider创建多页面系统的步骤。首先新建项目并创建5个页面(1个主页面+4个子页面),然后设计各页面组件:主页面含标题和5个功能按钮,子页面均包含返回按钮和特定组件。接着配置页面跳转逻辑,为按钮添加Clicked事件实现页面切换。特别提醒中文显示需选择SourceHanSerifSC_Regular字体避免乱码。最后将工程导出到VSCode模拟器运行调试。该教程完整演示了从页面创建、设计到交互实现的GUI开发流程。
2025-11-03 15:06:58
351
原创 在VSCode+Guider基础上 运行Button圆角demo
本文介绍了一个基于LVGL图形库的屏幕界面设置代码。主要功能是在480x272像素的屏幕上创建GUI界面,包含基础屏幕设置和按钮控件样式配置。代码实现了两种风格的按钮创建:标准灰色渐变按钮和红色按钮,并为按钮添加了按下状态效果。其中,setup_scr_screen函数负责屏幕初始化,style_init函数定义按钮样式,包括圆角、背景色、边框等属性。该代码使用LVGL的样式系统进行界面设计,创建了响应式按钮元素,并支持自定义事件处理,为嵌入式设备提供了灵活的用户界面解决方案。
2025-10-31 16:57:35
245
原创 在VSCode+Guider基础上 运行Button点击事件Demo
本文介绍了如何在LVGL 8.3版本中查找和使用按钮点击事件代码的方法。作者建议新手通过"站在巨人肩膀上"的方式学习,具体步骤包括:在LVGL官网查找8.3版本API示例代码,从GitHub复制代码到VSCode中进行修改,最终实现点击按钮数字累加的效果。文章特别强调了版本匹配的重要性,并提供了示例图片说明操作过程。该方法适合初学者快速掌握基础交互功能开发。
2025-10-31 15:37:26
147
原创 在VSCode+Guider基础上运行Hello World :如何移植官方小demo进自已工程代码
本文介绍了在VSCode中配置LVGL模拟环境的后续操作步骤。首先提供了前两篇参考文章的链接,并列出相关手册资料(包括中文/英文版LVGL手册和Gui-Guider使用指南)。主要内容为如何在工程中实现显示"HelloWorld":从GitHub获取代码后,在VSCode工程中修改gui-guider.h和setup_src_screen.c文件,最后展示运行效果。文章配有操作截图指导,帮助读者快速完成代码移植和显示效果验证。
2025-10-31 14:07:22
301
原创 VSCode版LVGL模拟器:移植Guider生成的代码
本文介绍了将GUI-Guider生成的LVGL界面代码移植到VSCode模拟器的完整流程。主要包括:1)安装GUI-Guider 1.7.0并创建1.8.3版本工程;2)导出RT-Thread格式代码;3)在VSCode项目中配置头文件路径和CMakeLists;4)解决编译错误和CMake配置问题。文中提供了多个参考链接,包括VSCode安装、LVGL模拟器移植等详细教程。特别提醒需注意版本兼容性,并给出了常见错误的解决方法。
2025-10-28 16:27:05
990
原创 VScode中模拟lvgl运行环境配置
本文介绍了在Windows系统下搭建LVGL图形库开发环境的完整流程。主要包括:1)下载安装VSCode、CMake、SDL2和MinGW64等必要软件;2)VSCode插件安装(C/C++支持包、CMake相关工具);3)环境配置(目录复制、环境变量设置);4)通过gcc和cmake命令验证环境安装;5)下载LVGL演示工程及相关库文件;6)在VSCode中导入工程并编译运行。文中提供了详细的软件下载地址和配置步骤说明,并提及了可能遇到的gcc路径问题解决方案。
2025-10-28 15:29:04
839
原创 android面试题目合集二
Fragment是Activity中的一个模块化部分,拥有自己的生命周期,类似于Activity的生命周期,但多了onAttach()、onCreateView()、onActivityCreated()等方法。LiveData是不可变的数据持有者,而MutableLiveData是可变的,允许通过postValue()或setValue()更新数据。避免在Activity或Fragment中持有长生命周期的引用,使用弱引用或软引用,及时释放资源,使用LeakCanary检测内存泄漏。
2025-02-10 09:38:28
471
原创 android面试题集合
使用合适的线程和异步机制:在进行网络请求时,使用合适的线程和异步机制(如AsyncTask、Handler、RxJava等),以避免在主线程上进行网络请求,防止阻塞UI线程。在使用单例模式时,如果单例对象持有Activity或Application的引用,并且单例的生命周期比Activity或Application更长,那么会导致内存泄漏。线程:线程可以理解为进程中独立运行的子任务,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。
2025-01-21 09:40:58
504
原创 解析APK中CERT.RSA文件,获取公钥证书
有三个文件MANIFEST.MF、CERT.SF、CERT.RSA分别保存着不同的签名信息。将CERT.RSA 后缀名修改为p7b, 然后双击CERT.p7b---》点击逻辑存储名---》点击证书---》双击颁发给--》详细信息---》公钥 即可得到公钥信息(此处显示的是16进制)比较签名文件 CERT.RSA里的公钥证书和预置到设备里的公钥证书 LZ.cer(PEM格式)是否相等。3.获取预置到设备里的公钥证书,比如 LZ.cer (PEM格式) 数据以Base64表示。1.apk解压后的目录结构。
2023-06-06 13:40:40
9007
3
原创 个人命令整理(二)
1.git操作 /////////////////////////////git操作/////////////////////////////1.查看分支--->git branch2.创建分支--->git branch nwl3.切换分支--->git checko...
2019-10-16 10:38:13
344
原创 Android自定义EditText实现手机号码和银行卡号自动分隔、自动设置分隔格式
1. 在原作者的基础上,删除了多余的功能,以及不依赖任何资源等文件;要用的话直接把自定义的类放进项目中即可,,,也不用 加入jar包。2.功能点* 按自己想要的格式自动分割显示的EditText 默认手机格式:xxx xxxx xxxx* 也可自定义任意格式,如信用卡格式:xxxx-xxxx-xxxx-xxxx 或 xxxx xxxx xxxx xxxx* 使用patter...
2018-12-13 00:16:00
1593
原创 输入框中-------禁止输入表情
最近遇到了一个需求,就是在设置账号名称中禁止输入表情,就把该知识点整理了一下,记录以便下次查找. 可能还有不完善之处,请各位补充。方法1:此方法个别表情识别不出来 比如我的华为手机 电话表情 不能识别 //此方法个别表情识别不出来 比如我的华为手机 电话表情 不能识别//去除表情规则// \u0020-\\u007E 标点符号,大小写字母,数字// \u00...
2018-12-12 17:46:45
5559
原创 AndroidStudio打jar包(包含META-INF文件)
最近在研究sdk的开发,遇到了AndroidStudio打jar的问题,,,执行打jar包的操作我们都可以生成一个jar包,但是这个jar包里面的呈现内容 和 eclipse打jar包的呈现内容是不是一样呢,有三种执行操作,但是打的jar包内容不同(eclipse 打jar包非常简单) //1.此种打包方式 jar包没有META-INF文件 不会存在 task makeJar(
2017-12-09 11:00:00
4369
原创 个人命令整理(一)
记录一下常用的命令:1.从Android 5.0开始,前台运行的service必须在通知栏有一个常驻通知 Notification noti = new Notification.Builder(this) .setContentTitle("Reg google id service") .setContentText("Always in fo
2017-11-14 10:53:14
234
转载 几种获取应用程序/apk安装包版本信息的方法
在做项目时,用到获取sd卡目录apk的版本,用到了 http://flycatdeng.iteye.com/blog/2265183 ,这里就记录了一下一、应用程序得到自己的版本信息 获取到PackageInfo之后,那么包名,版本号什么的都可以得到 /** * 得到当前应用版本名称的方法 * * @param conte
2017-11-14 10:41:50
3762
转载 Android6.0没有权限读取外部存储的问题
转载自http://blog.youkuaiyun.com/zhigangs/article/details/50630011
2017-11-11 17:05:50
1715
原创 定时刷新界面
方式一、使用Timer(定时器)和TimerTask实现示例代码:public class MainActivity extends Activity { private TextView msg; final Handler handler = new Handler() { public void handleMessage(Message
2017-11-11 14:20:01
533
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅