基于Lua脚本语言的嵌入式UART通信方案设计

时间:2012-05-03来源:网络

如需在C中访问参数1,则既可以通过索引号1进行,也可通过索引号-3进行。其中,正索引按入栈顺序从1依次递增,负索引按出栈顺序从-1依次递减。
通常情况下,串口的配置主要有以下几项:是否使能、数据位数、停止位数、奇偶校验标志位和波特率。因此,在Lua脚本中,本文采用Lua的表结构对其进行设置,示例如下(本文中斜体代码表示为Lua脚本,以下同):
f.JPG
该例表示对UART芯片的P0 口进行使能,并且采用8位数据位、1位停止位、偶校验(本文定义parityBit的值取0为无校验,取1为奇校验,取2为偶校验)的帧格式,波特率为9 600 bps。
在C语言中,要获取表中enable属性字段的值,可采用以下步骤:
①调用接口函数并以表名称作为参数,将该表入栈:
lua_getglobal(L,“uart_p0”);
②调用接口函数将enable属性字段的属性名称入栈:
lua_pushstring(L,“enable”);
③调用接口函数提取属性值,该操作在C中可看作是一个先出栈再入栈的过程,结果将在②中已入栈的属性名称所在位置填入属性值:
lua_gettable(L,-2);
其中,参数“-2”为栈中的索引号。
④调用接口函数取出栈顶中该属性字段的值,并调用出栈函数,以恢复调用环境:
p0_enable=(int)lua_tonumber(L,-1);
lua_pop(L,1);
其中,lua_tonumber函数的参数“-1”也为栈中的索引号,该操作将取出栈顶元素的数值,鉴于Lua中的数据都为浮点数,所以需将其强制转换为整型数据。lua_pop中参数“1”为非索引,仅说明从栈顶将1个元素出栈。

g.JPG


通过以上操作,就可以正确地取出脚本中p0口参数没置表中cnable属性字段的值。其他属性字段的提取与其相同。虚拟栈中的内容变化如图4所示。
3.3 调用Lua函数设置发送缓冲区
为通过Lua脚本对串口发送缓冲区进行设置,在脚本中定义了如下函数:
h.JPG

1 2 3 4

关键词: UART 通信 方案设计 嵌入式 语言 Lua 脚本 基于

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版