- 在设计分布式应用时总会绕不开调用接口
- 而接口必然绕不开指令格式,编码方式等
- 一旦有了接口,就会衍生出两套附属的一些方法,例如客户端的SDK,以及设备端的解析等
- 互联网上通用的数据交换方式有XML和JSON
- 传统仪器领域定义了SCPI
- 所完成的都是数据的包装和拆包
- 在嵌入式中常用的指令方式:指令 <参数>,设计会引起相当复杂的指令系统和参数系统,约大型的系统,命令和参数约复杂(功能稍微全面的设备都拥有动辄千页的编程手册)
- 采用结构化接口的好处
- 命令格式统一:名称-数值对
- 解析简单:名-值对应,一目了然
- 自注释: 参数有明确的命名和含义
- 缺点
- 信息冗余:采用名称的方式,有固定的信息结构
- 手动调试不不方便:需要根据格式进行封包和拆解
- 利用Lua来进行拆包
- 利用Lua的解释器对输入进行解释省去了手动的词法,语法分析
lua_State *pState = luaL_newstate();
ret = luaL_loadstring( pState, "width=10 height=20");
ret = lua_pcall( pState, 0, 0, 0 );
ret = lua_getglobal( pState, "width" );
ret = lua_getglobal( pState, "height" );
int isNum;
int width = lua_tonumberx( pState, -2, &isNum );
int height = lua_tonumberx( pState, -1, &isNum );
lua_close( pState );
网友评论