一种机顶盒脚本调用c语言函数的方法

文档序号:7767048阅读:451来源:国知局
专利名称:一种机顶盒脚本调用c语言函数的方法
一种机顶盒脚本调用C语言函数的方法
技术领域
本发明涉及一种嵌入式技术领域,尤其涉及一种机顶盒脚本调用c语言函数的方法。
背景技术
随着数字电视机顶盒应用开发要求越来越快捷高效,使用脚本来编写机顶盒应 用程序成为快速开发的良好解决方法,而脚本程序如何利用机顶盒的原有的编译程序的 资源成为脚本应用的关键。传统机顶盒使用编译态方式直接调用各种C语言函数,当脚 本应用需要改变时,就必须重新编写代码,然后进行编译下载到目标机中,这样就加大 了编程人员的工作量,而且生产的成本也大大的增加。

发明内容本发明要解决的技术问题,在于提供一种机顶盒脚本调用C语言函数的方法,克 服了传统机顶盒使用编译态方式直接调用各种C语言函数,当脚本应用需要改变时,就必 须重新编写代码的问题。本发明是这样实现的一种机顶盒脚本调用C语言函数的方法,其特征在于 包括以下步骤步骤10、设计一带有一参数的函数接口,将C语言函数按照所述的函数接口来 编与;步骤20、将机顶盒的脚本解析引擎注册到所述的按函数接口编写的C语言函数 中,经注册过的C语言函数供脚本解析引擎调用;步骤30、当机顶盒的脚本程序调用C语言函数时,脚本解析引擎动态生成一私 有栈,所述私有栈用于交互C语言函数所需的参数和获取C语言函数运行返回的结果,并 按照从左到右的顺序把C语言函数所需的参数插入到私有栈中,再交给脚本解析引擎分 析;步骤40、脚本解析引擎分析机顶盒的脚本程序函数和所述的带有参数的私有栈 后,调用对应的C语言函数,同时把C语言函数运行返回的结果插入到私有栈内;步骤50、机顶盒的脚本解析引擎从私有栈内获取C语言函数运行返回的结果, 供脚本程序使用,同时将其对应的私有栈进行销毁操作。本发明具有如下优点使用了专门设计的私有栈结构用来完成机顶盒脚本程序与C语言函数之间的参数和函数运行返回值传递,同时设计了 C语言函数对接专用函数接 口,从而实现在机顶盒脚本中对C语言函数的直接调用。本发明减少了原有的繁琐工序, 减少了编程人员的工作量,提高了生产效率。

图1为本发明方法流程示意图。
具体实施方式
下面参照附图结合实施例对本发明作进一步的说明。一种机顶盒脚本调用C语言函数的方法,见图1所示包括以下步骤步骤10、设计一带有一参数的函数接口,将C语言函数按照所述的函数接口来 编与;步骤20、将机顶盒的脚本解析引擎注册到所述的按函数接口编写的C语言函数 中,经注册过的c语言函数供脚本解析引擎调用;步骤30、当机顶盒的脚本程序调用C语言函数时,脚本解析引擎动态生成一私 有栈,所述私有栈用于交互C语言函数所需的参数和获取C语言函数运行返回的结果,并 按照从左到右的顺序把C语言函数所需的参数插入到私有栈中,再交给脚本解析引擎分 析;步骤40、脚本解析引擎分析机顶盒的脚本程序函数和所述的带有参数的私有栈 后,调用对应的C语言函数,同时把C语言函数运行返回的结果插入到私有栈内;步骤50、机顶盒的脚本解析引擎从私有栈内获取C语言函数运行返回的结果, 供脚本程序使用,同时将其对应的私有栈进行销毁操作。下面结合一具体实施例对本发明作进一步说明设计一带有一参数的函数接口定义为typedefint (*script_CFunction) (script_State*L);其中SCript_State为定义的传递参数的数据结构,描述了函数共用几个参数,每 个参数的类型,每个参数的数值。参数的类型为Booleans、Numbers、Strings、Functions 类型,所述 Booleans 型描述数据真或假,Numbers型描述数据的类型包括整型、浮点型等,Strings型 描述字符串数据,Functions型描述是个注册的c语言函数。其中通过intSCript_ getNumbers(script_Value*v)函数得到这个 Numbers 类型数据的值。通过 bool script_ getBooleans(script_Value*v)函数得到这个 Booleans 类型数据的值。通过 char*script_ getStrings(script_Value*v)函数得到这个 Strings 类型数据的值。通过 script_CFunction script_getFunctions (script_Value*v)函数得到这个 Functions 类型数据的值。如函数 int add (int a, int b) {return a+b};例如需要传递的参数为整数2,和整数10,脚本解析引擎使用为Script_PUSh函数 分别把数据压入到临时分配的栈L中,script_Push (L, {Numbers, 2});script_Push (L, {Numbers, 10});对应这个函数经过带有一参数的函数接口的改写,应该是int add (script_State*L){inti ;int a, b, c ;script_Value ν ;
i = script_getNum (L);if ( ==2){ ν = script_getValue(script_State*L, 0);if (Numbers = = script_getType (v)){a = script_getNumbers (v);if (Numbers = = script_getType (v)){b = script_getNumbers (v);}script_Pop (L);script_Pop (L);c = a+b ;script_Push (L, {Numbers, c});return 1 ;}}return 0 ;}这样通过以上参数传递和操作,最后函数压入中的数据为Numbers类型,值为 12,供脚本程序使用。函数中script_Value为定义为一个类型的值,包括了这个value的类型和数值,如 script_Value value = {Numbers, 10}为 Numbers 类型,值为 10 ;私有栈(S卩SCript_State数据结构)使用先进后出的方式进行进栈和出栈的方式。通过script_Push(script_State*L,script_Value value)函数把按照从左到右的顺序
把c语言函数所需的参数压入栈中。通过script_Value script_Pop (script_State*L)函数把数据推出栈中。通过intscript_getNum(script_State*L)函数得到这个结构中参数的数量。通过 script_Value script_getValue(script_State*L, int num)函数得到某个参数的值。通过int = script_getType (script_Value*v)函数得到某个参数的值的类型。当c语言函数操作完参数后,要把私有栈中的数据清空,同时把返回结果压入栈 中,通过函数返回1表示函数操作成功,返回0表示函数操作失败。总之,本发明使用了专门设计的私有栈结构用来完成机顶盒脚本程序与c语言函 数之间的参数和函数运行返回值传递,同时设计了 C语言函数对接专用函数接口,从而实 现在机顶盒脚本中对C语言函数的直接调用。以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化 与修饰,皆应属本发明的涵盖范围。
权利要求
1.一种机顶盒脚本调用C语言函数的方法,其特征在于包括以下步骤步骤10、设计一带有一参数的函数接口,将c语言函数按照所述的函数接口来编写;步骤20、将机顶盒的脚本解析引擎注册到所述的按函数接口编写的c语言函数中, 经注册过的c语言函数供脚本解析引擎调用;步骤30、当机顶盒的脚本程序调用c语言函数时,脚本解析引擎动态生成一私有 栈,所述私有栈用于交互c语言函数所需的参数和获取c语言函数运行返回的结果,并 按照从左到右的顺序把c语言函数所需的参数插入到私有栈中,再交给脚本解析引擎分 析;步骤40、脚本解析引擎分析机顶盒的脚本程序函数和所述的带有参数的私有栈后, 调用对应的c语言函数,同时把c语言函数运行返回的结果插入到私有栈内;步骤50、机顶盒的脚本解析引擎从私有栈内获取c语言函数运行返回的结果,供脚 本程序使用,同时将其对应的私有栈进行销毁操作。
2.根据权利要求1所述的一种机顶盒脚本调用c语言函数的方法,其特征在于将c 语言函数中使用的数据类型分别定义为Booleans、Numbers、Strings、Functions类型, 所述Booleans型描述数据真或假,Numbers型描述数据的类型包括整型、浮点型,Strings 型描述字符串数据,Functions型描述是个注册的c语言函数。
3.根据权利要求1所述的一种机顶盒脚本调用c语言函数的方法,其特征在于所述 带有一参数的函数接口定义为 typedefint(*script_CFunction) (script_State*L);其中 script_ State为定义的传递参数的数据结构,描述了函数共用几个参数,每个参数的类型,每个 参数的数值。
全文摘要
本发明提供一种机顶盒脚本调用c语言函数的方法,该方法使用了专门设计的私有栈结构用来完成机顶盒脚本程序与c语言函数之间的参数和函数运行返回值传递,同时设计了c语言函数对接专用函数接口,从而实现在机顶盒脚本中对c语言函数的直接调用。本发明减少了原有的繁琐工序,减少了编程人员的工作量,提高了生产效率。
文档编号H04N21/40GK102026030SQ201010567078
公开日2011年4月20日 申请日期2010年12月1日 优先权日2010年12月1日
发明者方立 申请人:福建新大陆通信科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1