搜索
bottom↓
回复: 44

LUA脚本虚拟机和ucGUI以及嵌入式

[复制链接]

出0入0汤圆

发表于 2012-1-11 22:06:44 | 显示全部楼层 |阅读模式
在NiosII系统和Cortex-M3系统上测试过,NiosII目前仅仅用LUA脚本控制了LED,STM32平台是测试SD卡读写和LUA脚本装载器的。

打算做一个NiosII加大液晶的板子,但是在做之前还是先在PC上仿真下。

玩LUA虚拟机是需要大内存的(脚本复杂的话,要100K或以上在干放心使用),所以选择NiosII,例化一个SDRAM控制器……
CM4不错,有浮点指令,要知道Lua解析器默认只有一种数据类型,就是浮点,刚好手里有STM32F4 Discoery,但是现在没有底板,还是放一放。

lua抽象程度比C要高,如果用lua来描述应用程序需求,用C来弥补细节问题,再配合一个好的构架,做出来的东西应该比较好玩。于是,今天尝试了一下lua和ucGUI的绑定

先来看一张图:

(原文件名:捕获.PNG)

这个是VisualStudio 2010 + lua 5.20 + ucGUI 3.90a 的测试效果。

出0入0汤圆

 楼主| 发表于 2012-1-11 22:14:39 | 显示全部楼层
这三个C函数会被注_册进LUA环境:

(原文件名:C函数.PNG)
主要作用是创建按钮,显示消息框和修改按钮的文本。
在主程序中依次注_册各个部分:

(原文件名:main.PNG)

出0入0汤圆

 楼主| 发表于 2012-1-11 22:22:32 | 显示全部楼层
这个是C语言的事件分发代码:
先筛选事件类型,然后将控件ID发送到LUA环境。

(原文件名:事件.PNG)
这个是系统程序的lua部分:
Event = {}; --事件列表。
CtlId = 100; --控件ID计数,ucGUI每一个空间都有唯一的一个ID号,初始值设定为100

function Button(b)
    local B = ButtonCreate(b.x, b.y, b.width, b.height, CtlId);
    SetText(B, b.text);
    Event[CtlId] = b.onclick; --添加时间处理记录
    CtlId = CtlId + 1;
end

function DoEvent(id)
    local fn = Event[id] --根据控件ID获取事件处理程序
    if fn then fn() end --如果事件处理程序不为空,则执行。
end
在系统程序的LUA代码部分,各个控件的事件处理程序在创建控件的同时就以控件ID为索引被登记,所以只要收到C语言部分发送过来的ID号就可以直接找到对应的程序。

出0入0汤圆

 楼主| 发表于 2012-1-11 22:38:07 | 显示全部楼层
使用LUA可以在不引入操作系统的情况下可以获得协作式线程,闭包,动态类型等高级抽象,能简化应用程序的开发。类似Andorid
这个是在:STM32F103RBT6上面的测试结果:

(原文件名:IMAG0410.jpg)

=============================================================
for i = 20,200,20 do
        show(10, i, "Lua is Runing.. " .. i);
end
show(10, 220, "Memory Used: " .. mem_use() .. "KB");
=============================================================

其中,LUA仅加载数学函数库和字符串库,在IAR中,堆被设定为14KB,栈设定为2KB,LUA装载部分为自定义的基于FatFS与SD卡的装载器。

=============================================================

出0入0汤圆

发表于 2012-1-11 23:04:52 | 显示全部楼层
想法挺好!

出10入10汤圆

发表于 2012-1-11 23:25:33 | 显示全部楼层
正在看elua.

出0入0汤圆

发表于 2012-1-12 03:36:34 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-1-12 05:22:49 | 显示全部楼层
mark。

出0入0汤圆

发表于 2012-1-12 08:33:09 | 显示全部楼层
关注

出0入12汤圆

发表于 2012-1-12 09:50:29 | 显示全部楼层
不错,支持LZ

出0入0汤圆

 楼主| 发表于 2012-1-12 12:48:35 | 显示全部楼层
在不变动C语言部分的情况下,完成一个类似密码锁的东西:

(原文件名:pwd.PNG)


(原文件名:sys.PNG)


(原文件名:app.PNG)

出0入0汤圆

发表于 2012-1-12 13:34:36 | 显示全部楼层
牛啊。

也有 同样的STM32开发板,试试。

出0入0汤圆

 楼主| 发表于 2012-1-12 22:29:54 | 显示全部楼层
这个是为编写及测试lua脚本启动以及事件框架(而非仅仅在计算机上仿真)设计的电路板,

(原文件名:1.JPG)
现在就等年终奖了,拿到就做板。
实验成功后释放所有技术资料!

出0入0汤圆

 楼主| 发表于 2012-1-13 00:06:26 | 显示全部楼层

(原文件名:未命名.jpg)

出0入0汤圆

发表于 2012-1-13 00:41:58 | 显示全部楼层
亮点是LZ的效果图!

出0入0汤圆

发表于 2012-1-13 06:14:08 | 显示全部楼层
引用图片【12楼】linhaimi
-----------------------------------------------------------------------

(原文件名:1.JPG)
回复【12楼】linhaimi
这个是为编写及测试lua脚本启动以及事件框架(而非仅仅在计算机上仿真)设计的电路板,


(原文件名:1.jpg)
引用图片
现在就等年终奖了,拿到就做板。
实验成功后释放所有技术资料!

-----------------------------------------------------------------------

好啊。顶楼主。

出0入0汤圆

发表于 2012-1-13 07:10:10 | 显示全部楼层
帅气。。。楼主好人,坐等楼主实验结果

出0入0汤圆

发表于 2012-1-13 07:57:02 | 显示全部楼层
这个3d效果确实nb

出0入0汤圆

发表于 2012-1-13 08:52:14 | 显示全部楼层
怎么不搞rt-gui呢?

出0入0汤圆

发表于 2012-1-13 09:19:54 | 显示全部楼层
狠实!

出0入0汤圆

 楼主| 发表于 2012-1-13 09:52:19 | 显示全部楼层
回复【18楼】ljt80158015  
怎么不搞rt-gui呢?
-----------------------------------------------------------------------
以目前的打算,脚本是前端,绑定的gui是后端,计划上是可以切换的。
打算做成和具体的gui实现无关的一种设计,到时候打交道的是按钮,是窗口,而不是具体的gui环境。这是一个想法,个人能力有限,很多东西到时候还需要大家的帮助的。

出0入0汤圆

发表于 2012-1-13 11:06:13 | 显示全部楼层
有了Lua,使用Lua的XML装载器,就可以用xml文件来描述界面了!~
然后做一个UI设计器,设计生成xml文件,下载到下位机,下位机解析xml文件,哈哈!~


嵌入式GUI框架 FTK 就是这样的

FTK(funny tool kit) 是一个用在嵌入式平台的 GUI 开发框架。
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4300395

出0入0汤圆

发表于 2012-1-13 17:09:27 | 显示全部楼层
再次MARK.

出0入0汤圆

发表于 2012-1-31 09:26:54 | 显示全部楼层
好,非常好。期待搂主的大作。

出0入0汤圆

发表于 2012-1-31 09:31:56 | 显示全部楼层
不懂,mark 之

出0入0汤圆

发表于 2012-1-31 09:45:22 | 显示全部楼层
期待lz大作。

出0入0汤圆

发表于 2012-1-31 09:50:35 | 显示全部楼层
Mark LUA.

出0入0汤圆

发表于 2012-1-31 09:51:56 | 显示全部楼层
mk

出0入0汤圆

发表于 2012-1-31 10:10:58 | 显示全部楼层
回复【10楼】linhaimi  
-----------------------------------------------------------------------

想法很好,期待LZ大作!
LUA感觉还是有点大,
如果有专为单片机设计的
脚本语言就更好了!eLUA不知如何?
有人玩没?

出0入0汤圆

发表于 2012-1-31 10:13:52 | 显示全部楼层

出0入0汤圆

发表于 2012-1-31 14:57:30 | 显示全部楼层
这个不错。有一个用lua来做的xml GUI界面的开源项目.

出0入0汤圆

发表于 2012-2-19 22:21:58 | 显示全部楼层
期待楼主!

出0入0汤圆

发表于 2012-3-11 14:15:05 | 显示全部楼层
楼主,2012了,期待你的开源。

出0入0汤圆

发表于 2012-3-11 14:30:40 | 显示全部楼层
回复【30楼】blueaglemg  
这个不错。有一个用lua来做的xml gui界面的开源项目.
-----------------------------------------------------------------------

啥开源项目?

出0入0汤圆

发表于 2012-4-17 14:29:58 | 显示全部楼层
linhaimi 发表于 2012-1-12 22:29
这个是为编写及测试lua脚本启动以及事件框架(而非仅仅在计算机上仿真)设计的电路板,

(原文件名:1.JPG)

看来现在公司发年终奖都不积极。

出0入0汤圆

发表于 2012-6-28 11:20:47 | 显示全部楼层
再顶,不错,不知何时能见真容

出0入0汤圆

发表于 2012-7-4 22:15:53 | 显示全部楼层
MARK

出0入0汤圆

发表于 2012-8-29 19:55:49 | 显示全部楼层
mark一下,估计LZ去年的年终奖……

出0入0汤圆

发表于 2012-8-29 20:00:57 来自手机 | 显示全部楼层
不错呀!!!

出0入0汤圆

发表于 2012-8-29 20:02:19 | 显示全部楼层
高手!!!!

出0入0汤圆

发表于 2012-9-8 01:04:04 | 显示全部楼层
楼主能否共享一下代码?

出0入0汤圆

发表于 2012-10-16 14:56:41 | 显示全部楼层
您好 , 请问下楼主用的iar是哪个版本的   为什么我的代码运行不了

出0入0汤圆

发表于 2012-10-31 09:02:52 | 显示全部楼层
楼主的年终奖没了?

出0入0汤圆

发表于 2013-9-7 10:44:09 | 显示全部楼层
foxbat0502 发表于 2012-10-16 14:56
您好 , 请问下楼主用的iar是哪个版本的   为什么我的代码运行不了

应该是icf文件没有修改吧

出0入10汤圆

发表于 2015-12-6 17:39:08 | 显示全部楼层
然后没有然后了吗?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-18 19:42

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表