其他分享
首页 > 其他分享> > 示例-luat示例-Luat框架

示例-luat示例-Luat框架

作者:互联网

作者:伍珈沁
更新时间:2021.2.1
关键词:架构,框架,内部消息,外部消息,消息驱动

Luat框架

目录名称

Luat代码架构和API

一、SDK目录结构

二、代码架构

三、API

Lua标准api:https://doc.openluat.com/wiki/21?wiki_page_id=2084
Luat扩展api:https://doc.openluat.com/wiki/21?wiki_page_id=2085
Luat script api:https://doc.openluat.com/wiki/21?wiki_page_id=2086

Luat应用脚本运行框架

一、单task应用


core在启动过程中,会创建一系列的task,例如音频、协议栈、串口等
其中有一个task,用来加载Lua虚拟机,解析运行用户编写的Lua脚本,这个task,我们称之为Lua virtual task(另外在Lua脚本中,利用Lua的协程特性封装了一个sys.taskInit接口,借用了task的概念,实际上并不是真正的task)
脚本中的所有应用,都运行在Lua virtual machine task中,属于单task应用

二、真假task、内外消息队列

一个真task

三、应用脚本运行流程

四、内部消息处理

五、外部消息处理

六、常见问题

6.1 为什么Lua版本运行某些功能会有延时
脚本中的应用属于单task应用,都运行在一个Lua virtual machine task中,由2.1章节可知,Lua主task一直在循环处理内部消息队列和外部消息队列中的消息,消息是先进先出先处理
即使有新消息到达,插入到内部消息队列或者外部消息队列中,必须等前面所有的消息处理结束,才能处理新消息
例如:首先产生了一个定时器消息,定时器消息的处理动作(新建一个文件,写500K数据)比较耗时,在写文件的过程中,core中的串口task产生了一个串口接收数据通知消息,虽然可以插入到Lua主task的外部消息队列中,但是由于Lua主task还在执行写文件的动作,所以串口消息只能等待,问题就表现为“我明明已经向模块串口发送了数据,为什么脚本在3秒后才开始处理串口数据呢?”

标签:task,Luat,luat,示例,队列,Lua,消息,串口
来源: https://blog.csdn.net/weixin_55371762/article/details/118331720