某程序员退休后决定练习书法,于是重金购买文房四宝。一日,饭后突生雅兴,一番研墨拟纸,并点上上好檀香。定神片刻,泼墨挥毫,郑重地写下一行字:hello world!
上一章讲到如何验证开发板,使用的是官方提供的固件和脚本。本章先不讲Luat的运行原理,先写个Hello World压压惊。
在此之前必须先理解几个名词:
底层软件,也叫基础软件(core),基础软件编译后的文件称为lod。底层lod,不同功能不同lod,合宙官方提供,详见core文件中。用C语言开发完成,内嵌了Lua虚拟机,支持上层软件的运行。参见模块固件版本
上层软件(script),二次开发部分,详见script。文件采用 Lua 脚本语言开发,是模块的应用例程源码。脚本分为两部分:Lib和demo。其中:
Lib中是库文件,对AT命令封装成API,lib 实现公用的服务,比如sms,call,audio,mqtt,gps等等;
脚本:开发者二次开发的代码,自行编写。demo代码合宙官方提供的一些常用接口的脚本例程,用户可以在demo基础上修改糅合,实现自己的业务功能。
基础软件和上层软件,两部分软件缺一不可,一起运行于模块之中,完成各种功能和应用。
量产工具:用于工厂生产和远程升级。
画了一张图来描述几者之间的关系:
image接下来进入正题:
1、从https://github.com/openLuat/Luat 下载源码
2、目录结构如下:
imagecore:存放基础软件
demo:一些例子
doc:说明文档
drive:第三方模块驱动
img:存放lcd显示的图片
lib:库文件
mp3:存放播放的音乐
main.lua:主文件
3、打开demo文件夹,新建一个test.lua,用自己喜欢的编辑器打开编辑(比如sublime text ,vs code,根据自己的爱好),这儿以sublime text 为例,输入
module(..., package.seeall) --必须,目的是让其他文件能包含该文件
sys.taskInit(function() --任务1
while true do
print("Hello World")
sys.wait(1000)
end
end)
sys.taskInit(function() --任务2
while true do
print("Luat is esay")
sys.wait(2000)
end
end)
打开main.lua,添加
require "test"
这样就将test文件包含到了main.lua里面,可以理解为C语言中的#include \
4、下载lod,教程可在wiki上找到,就不在这儿累赘
5、下载脚本
image添加lib下面的全部Lua文件,main.lua以及自己写的test.lua。添加完成后点下载即可
6、查看结果
关闭下载框,进入主界面,点击开始打印
image可以看到,输出两次Hello World才会输出一次Luat is esay,这是为什么呢?看一下sys.wait里面的延时就知道了。
本章教程到此结束。有兴趣的尝试修改print的数据,增加多个任务,或者修改sys.wait的时间看看会有什么变化,下一章将会讲解运行原理。
网友评论