自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Linux mobile development & HTML5 Games/App

主要致力于基于linux的嵌入式系统的学习和研究,包括内核、驱动、GUI、MMI、软件设计方法和软件优化等方面....

原创 AWTK 输入事件记录与重放

输入事件记录与重放 1. 用途 输入事件记录与重放的常见用途有: 自动演示功能。 长时间运行进行压力测试。 辅助手工测试。有时出现崩溃的 BUG 时,往往忘记之前是如何操作的了,输入事件记录与重放可以精确重现问题。同时也可以减轻手工测试的工作量。 2.API /** * @method ev...

2020-05-26 11:29:57 91 0

原创 AWTK 在 STM32H743 上的移植笔记(集成RTOS和文件系统)

STM32H743 移植笔记 本项目除了实现基本功能的移植外,还提供了如下功能: 集成实时操作系统 (RTOS)(腾讯的 TinyOS) 集成 FATFS 文件系统,访问 SD 卡的数据。 实现从文件系统加载应用程序的资源。 1. 介绍 在移植的时候,不管是什么板子,拿到板子的资料后,先找...

2020-05-07 16:32:07 330 0

原创 awtk-linux-fb 使用 double framebuffer 闪烁的问题

awtk-linux-fb 使用 double framebuffer 闪烁的问题 有朋友说 awtk-linux-fb 在某某平台闪烁很厉害,log 显示该平台使用的双帧缓冲。从代码和网上查的资料来看,目前的处理方法没有问题:无非就是通过 FBIOPUT_VSCREENINFO 或 FBIOPA...

2020-04-01 11:28:34 438 0

原创 AWTK-MVVM:用 C 语言实现 Model

9.1 介绍 用 AWTK-MVVM 开发应用程序时,开发者的主要工作是编写 Model 的代码,而 ViewModel 则由代码产生器自动生成。 在版本 1.0 中,我们提供了一个代码生成器,该代码生成器根据提供的 json 文件,自动生成 Model 和 ViewModel 的代码的框架代...

2020-03-22 08:13:27 541 4

原创 如何在C++中嵌入JAVA

如何在C++中嵌入JAVA 最近在为 AWTK 增加 JAVA 绑定,在 Windows 和 Linux 下工作正常,但是在 MACOS 上运行起来遇到下列问题: java[5714:260503] WARNING: NSWindow drag regions should only be inv...

2019-12-20 17:51:18 869 0

原创 MVVM模式在嵌入式GUI AWTK 中的实现

AWTK-MVVM是一套为AWTK用C语言开发,并支持各种脚本语言的MVVM框架,实现了数据绑定、命令绑定和窗口导航等基本功能,使用AWTK-MVVM开发应用程序,无需学习AWTK本身的API,只需学习绑定规则和Model的实现方式即可。 1.1 分离用户界面和业务逻辑 在开发应用程序时,要把用户...

2019-12-12 14:25:13 883 0

原创 AWTK 控件焦点相关问题

AWTK 控件焦点相关问题 一、启用焦点停留 (tab stop) 除了 edit 控件外,其它控件如果需要焦点停留功能,可以指定控件的 focusable 属性为 true 来实现。 在 XML 中,可以这样指定: <button ... focusable="true&quo...

2019-11-20 15:49:22 748 0

原创 在 AWTK 中 如何让文本滚动起来

如何让文本滚动起来 在很多时候,特别是在小屏幕的硬件上,控件比较小而要显示的文本比较长。 此时,我们需要在控件获得焦点时/或点击时,让文本滚动起来,以便让用户看到完整的信息。 AWTK 提供了 hscroll_label_t 控件,可以轻松满足文本滚动的需求。 一、基本用法 示例: <win...

2019-11-15 18:17:12 873 0

原创 AWTK 中 LCD 接口的四种实现方式

LCD 接口的四种实现方式 LCD 是对显示设备的抽象,提供了基本的绘图函数。自己去实现 LCD 接口虽然不难,但是需要花费不少功夫,AWTK 提供了几种缺省的实现,利用这些缺省的实现,在移植到新的平台时,一般只需要很少的代码就行了。 下面我们介绍一下几种常见的 LCD 实现方式: 一、基于寄存器...

2019-11-14 17:21:01 1006 0

原创 AWTK 在腾讯 TOS 上的移植笔记

AWTK 在腾讯 TOS 上的移植笔记 本文以 STM32f103ze 为例,介绍了 AWTK 在 RTOS 上移植的经验。与其说移植,倒不如说是集成。因为 RTOS 通常没有提供标准的 LCD 驱动接口,显示部分并不需要特别的改动。所做的事情不过是把 AWTK 放到 RTOS 的一个线程中执行而...

2019-11-09 08:49:43 853 0

原创 AWTK 在 RT-Thread 上的移植笔记

AWTK 在 RT-Thread 上的移植笔记 本文以 STM32f103ze 为例,介绍了 AWTK 在 RTOS 上移植的经验。与其说移植,倒不如说是集成。所做的事情不过是把 AWTK 放到 RTOS 的一个线程中执行而已。 1. 加入 RT-Thread 相关文件。 AWTK 已经移植到 S...

2019-11-09 08:31:47 1101 0

原创 AWTK WEB版移植笔记-基础

AWTK WEB版移植笔记-基础 将一个C语言写的hello world编译成web版本是很简单的,网上有大量这样的例子。写这样的例子是必要的,让我们能够快速入门,但是实际项目则要复杂的多,这里会介绍一些emscripten的基础知识,同时强调移植AWTK过程中遇到的问题,希望能让大家少走弯路。 ...

2019-09-12 07:16:08 1055 0

原创 NanoVG 优化笔记:性能提高5倍的秘密

NanoVG 优化笔记 nanovg正如其名称所示的那样,是一个非常小巧的矢量绘图函数库。相比cairo和skia的数十万行代码,nanovg不足5000行的C语言代码,称为nano也是名副其实了。nanovg的设计、接口和代码质量都堪称典范,唯一美中不足的就是性能不太理想。特别是在Android...

2019-08-06 10:54:01 1181 0

转载 国产开源 GUI 引擎AWTK 1.2 发布

AWTK全称为Toolkit AnyWhere,是ZLG倾心打造的一套基于C语言开发的GUI框架。旨在为用户提供一个功能强大、高效可靠、简单易用、可轻松做出炫酷效果的GUI引擎,并支持跨平台同步开发,一次编程,终生使用。 AWTK当前升级到了v1.2版本,相对于v1.1,我们完善了许多细节,增加了...

2019-08-06 10:52:23 1593 2

原创 AWTK WEB版移植笔记-序

AWTK WEB版移植笔记-序 一、WEB版本对AWTK意义 AWTK-WEB版本对AWTK是很重要的,主要原因有: 让用C语言开发的AWTK应用程序,在不需要修改源码的情况下,能在浏览器中运行。这样做的好主要在于,可以很方便的向客户展示项目。你只需分享一个链接,客户就可以在浏览器中打开,并看...

2019-07-10 10:55:48 1627 1

原创 集成 armcc 到 scons

集成 armcc 到 scons 集成 armcc 到 scons 中并不是件容易的事情,如果只是修改 CC/CXX/AR/LINK 几个环境变量,scons 会用 Visual C++的参数调用方式,比如-c 成了/c,导致 armcc 无法识别。 花了半天时间去阅读 scons 的源码后,在 ...

2019-06-28 16:49:03 1341 0

原创 物联网 GUI 开发套件 AWTK-IOTJS

一、介绍 关于 iotjs iotjs 是三星开源的 javascript 物联网开发平台。它为 javascript 应用程序提供了访问硬件、网络、文件系统和异步化的能力,功能类似于 nodejs,但无论是代码体积还是内存需求,iotjs 都要小很多,是用 javascript 开...

2019-06-18 14:19:57 3396 5

原创 集成 AWTK 到 iotjs

集成 AWTK 到 iotjs iotjs 是三星开源的 javascript 物联网开发平台。它为 javascript 应用程序提供了访问硬件、网络、文件系统和异步化的能力,功能类似于 nodejs,但无论是代码体积还是内存需求,iotjs 都要小很多,是用 javascript 开发 io...

2019-06-10 17:20:08 1348 0

原创 为 iotjs 开发原生模块

为 iotjs 开发原生模块 iotjs 是三星开源的 javascript 物联网开发平台。它为 javascript 应用程序提供了访问硬件、网络、文件系统和异步化的能力,功能类似于 nodejs,但无论是代码体积还是内存需求,iotjs 都要小很多,是用 javascript 开发 iot...

2019-06-07 12:46:21 1523 0

原创 ZLG开源GUI引擎AWTK发布1.1版本

ZLG开源GUI引擎AWTK发布1.1版本 一、介绍 AWTK全称Toolkit AnyWhere,是ZLG开发的开源GUI引擎,旨在为嵌入式系统、WEB、各种小程序、手机和PC打造的通用GUI引擎,为用户提供一个功能强大、高效可靠、简单易用、可轻松做出炫酷效果的GUI引擎。 AWTK寓意有两个方...

2019-04-25 09:19:52 2361 1

原创 AWTK javascript绑定原理

AWTK javascript绑定原理 一、基本架构 Javascript的绑定方法和lua的绑定方法有些不同,主要原因是javascript的引擎有很多种,比如嵌入式系统常用的jerryscript和PC上常用的V8。不同的引擎提供注册C/C++函数的能力不同,所以在绑定时我们只对引擎做一个最低...

2019-04-24 15:14:11 1641 0

原创 AWTK实现自定义软键盘的方法

有时需要把软键盘嵌入到窗口内部(比如计算器和密码输入等),这时可以使用自定义软键盘。 一、编辑器设置input_type为"custom"(它会禁止内置的软键盘)。 &lt;edit x="c" y="10" w="90...

2019-03-14 11:39:43 2123 0

原创 AWTK是如何保证代码质量的

AWTK是如何保证代码质量的 这是不少朋友关心的问题,这里统一回复一下。我们在保证AWTK的代码质量方面,主要采用了下列措施: 架构设计。 软件架构对代码的质量有决定性的影响,但好的架构不是预先设计出来的,而是在应对各种需求和变化时,不断完善和优化出来的。常常见到,有人花十年时间打造一件绝世作...

2019-01-18 16:49:51 2861 0

原创 AWTK(Toolkit AnyWhere): 为嵌入式、手机和桌面开发的通用GUI

AWTK = Toolkit AnyWhere AWTK是吸取了FTK和CanTK的精华,重新开发的GUI,计划分以下几个阶段实施: 第一阶段专注于嵌入式系统,到达并超越TouchGfx/Embedded Wizard的功能。计划在2018/9底完成。 第二阶段用AWTK本身开发界面编辑器(...

2018-07-08 12:19:42 10976 5

原创 SDL + OpenGL使用笔记

SDL + OpenGL使用笔记LFTK 是一个嵌入式GUI,为了开发方便,需要提供PC运行环境。我选择了SDL2+OpenGL+nanovg来实现底层的渲染,让LFTK可以运行在各个平台上。GLFW+OpenGL也是一个不错的选择,但是GLFW没有Android和iOS的移植,而且没有提供原生输...

2018-04-14 08:10:38 6132 0

原创 用Qemu运行/调试arm linux

用Qemu运行/调试arm linux 用Qemu运行/调试arm linux,这事情干过好几次了,久了就忘记了,每次都要重新去查资料,浪费不少时间。这次把整个过程弄成个脚本,放到github上,需要是拿下来运行一下即可,方便自己也方便有需要的朋友。这里解释一下脚本的内容(运行系统Ubuntu ...

2018-01-05 18:47:24 6502 0

原创 开源固件下载工具

开发板固件下载工具:开发板固件下载工具: https://github.com/ZHIYUAN-Electronics/zyDownloader主要特色: 采用自描述的插件式设计,支持不同的下载方式,增加新的下载方式不需要修改界面。 界面用JS开发,实现用C/C++开发。界面和实现完全分离,同时支...

2017-02-05 20:29:39 9372 0

原创 Makefile/cmake/node-gyp中区分不同平台的方法

最近用QTK开发一个下载(下载到开发板)工具,同时用到了Makefile/cmake和node-gyp,而且都要针对不同平台做不同的处理。这里做个记录,以备以后有需要时查阅。

2017-01-08 18:08:21 9218 0

原创 node-bindings无法在Electron中使用的解决办法

node-bindings非常好用,但是在Electron中无法使用,我查了一下,是因为fileName以file://开头导致无法定位动态库的根目录。已经提交给作者了,可以临时修改一下node_modules/bindings/bindings.js。

2017-01-08 11:27:02 9094 6

原创 用C++扩展Electron(node-ffi版)

用C++扩展Electron(node-ffi版) Electron内置的node.js,理论上可以通过扩展node.js来扩展Electron。但是通常由于系统中存在的node.js与Electron内置的node.js的版本号不同,给node.js编译的扩展是无法在Electron中使用的,...

2016-12-24 07:40:59 12317 0

原创 用C++扩展Electron(node-nan版)

用C++扩展Electron(node-nan版) Electron内置的node.js,理论上可以通过扩展node.js来扩展Electron。但是通常由于系统中存在的node.js与Electron内置的node.js的版本号不同,给node.js编译的扩展是无法在Electron中使用的,...

2016-12-24 07:36:44 12891 0

原创 用C++扩展node.js(node-ffi版)

用C++扩展node.js(node-ffi版)

2016-12-24 07:28:13 10506 0

原创 用C++扩展node.js(node-nan版)

用C++扩展node.js(node-nan版)

2016-12-24 07:24:57 10168 0

原创 再谈面向对象的三大特性

面向对象的三大特性:封装、继承和多态。这是任何一本面向对象设计的书里都会介绍的,但鲜有讲清楚的,新手看了之后除了记住几个概念外,并没真正了解他们的意义。前几天在youtune上看了Bob大叔讲解的SOLID原则,其中有一段提到面向对象的三大特性,收获很多,但是我并不完全赞同他的观点,这里谈谈我的想法

2016-12-12 17:01:57 9222 2

原创 动态内存分配导致Javascript性能的问题

内存分配对性能的影响是很大的,分配内存本身需要时间,垃圾回收器回收内存也需要时间,所以应该尽量避免在堆里分配内存。不过直到最近优化HoLa cantk时,我才深刻的体会到内存分配对性能的影响,其中有一个关于arguments的问题挺有意思,写在这里和大家分享一下。我要做的事情是用webgl实现ca...

2016-06-05 16:10:55 9553 0

原创 gameui-for-phaser-js更新到最新版本

Hola Cantk是一个功能强大的游戏引擎,它拥有丰富的GUI控件,配合Hola Studio可以快速开发出游戏的UI界面。Phaser是一个流行而且强大的游戏引擎,但是它的GUI控件很少,而且缺乏界面编辑器,导出开发游戏UI界面比较低效。gameui-for-phaser-js就是为了发挥两者...

2016-04-18 16:06:00 8935 0

原创 LocalStorage在Chrome里的实现

前段时间我们在实现CanTK-Runtime时,也曾在V8基础上模拟过浏览器的LocaleStorage功能,其实现非常简单:每个domain的数据使用的单独文件存储,因为同一时间只有一个游戏运行,所以文件操作只是放到了后台线程执行。但是Chrome里的实现就非常复杂了,它主要包括四部分

2015-10-03 18:05:58 9638 0

原创 requestAnimationFrame在Chrome里的实现

requestAnimationFrame是HTML5游戏和动画必不可少的函数,相对于setTimeout或setInterval它有两个优势,一是它注册的回调函数与浏览器的渲染同步,不用担心Timer的时间间隔太长或太短。二是时间间隔相对与Timer要稳定,requestAnimationFra...

2015-10-02 07:19:57 8880 0

原创 游戏震屏效果的实现

震屏效果在游戏里使用相当广泛的,特别在被物体撞击的时候,震屏效果能大大提高游戏的真实感。我开始以为实现震屏效果很简单,通过正弦函数去设置场景位置偏移量即可,但真正去做时发现还是有一点点挑战。

2015-10-01 06:40:50 12359 0

原创 集成骨骼动画Spine的几点经验

最近开始用cantk做些复杂的游戏,其中一个游戏的DragonBones骨骼动画的JSON文件就达600K,导出之后显示各种不正常,可能是太复杂了,有些方面达到了DragonBones的极限。拿到官方的补丁仍然还有些问题,不爽的是新版本有一万多行代码,是老版本的三倍之多。据说骨骼动画Spine做得...

2015-09-26 17:32:19 10269 3

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