CN1731361A - 一种跨平台函数调用系统 - Google Patents
一种跨平台函数调用系统 Download PDFInfo
- Publication number
- CN1731361A CN1731361A CN 200510092964 CN200510092964A CN1731361A CN 1731361 A CN1731361 A CN 1731361A CN 200510092964 CN200510092964 CN 200510092964 CN 200510092964 A CN200510092964 A CN 200510092964A CN 1731361 A CN1731361 A CN 1731361A
- Authority
- CN
- China
- Prior art keywords
- platform
- parameter
- function
- mission
- processing unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000006870 function Effects 0.000 claims abstract description 281
- 238000012545 processing Methods 0.000 claims description 98
- 230000005540 biological transmission Effects 0.000 claims description 73
- 238000004891 communication Methods 0.000 claims description 12
- 238000013507 mapping Methods 0.000 claims description 12
- 238000005538 encapsulation Methods 0.000 claims description 11
- 239000002674 ointment Substances 0.000 abstract 1
- 238000000034 method Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 239000012467 final product Substances 0.000 description 2
- 230000007812 deficiency Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 210000001503 joint Anatomy 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种跨平台函数调用系统,包括发送平台和接收平台,所述接收平台内存储有若干用于执行不同任务的任务函数,所述接收平台内设置有消息号映射表,其中存储各个消息号分别与任务函数的一一对应关系,所述发送平台将跨平台的任务函数调用封装成一至少带有消息号的接口函数,并发送该接口函数至所述接收平台,接收平台执行接口函数,从而根据消息号自消息号映射表内查找出对应的任务函数,以执行。相对现有技术,本发明实现了跨平台的多功能任务函数调用,系统结构简单、易于实现,且大大增强了任务函数调用的灵活性。
Description
技术领域
本发明涉及一种可实现不同运行平台之间通讯的系统,特别是一种跨平台函数调用系统。
技术背景
公知的,一个运行平台上可以处理若干任务,其处理任务的过程是通过执行任务函数来完成的,其任务函数的调用则是通过该运行平台的控制系统来实现。然而,如果想要实现不同的运行平台之间的函数调用,达到多功能通讯的目的,由于各个函数调用的情况不同,如函数名不同、函数调用时是否需要参数、函数调用后是否返回结果等等,因此,发送平台必须将这些信息全部发送到接收平台,才能在接收平台上正确的实现函数调用,这样就造成运行平台之间通讯的数据传输量大。并且,目前不同运行平台之间通讯的方法中,一般都是对于不同的任务或函数,采用不同的通讯接口,因此随着不同任务增多,通讯接口也必将随着增加,增加了系统的负荷。由于上述原因的限制,目前的跨平台通讯进行函数调用的过程,一般都仅仅限于几个常用任务函数的调用,跨平台可实现的功能单一,不利于技术的发展。
发明内容
本发明的目的是:针对现有技术的不足,提供一种采用统一接口函数即可实现一平台对另一平台上多种任务函数调用的跨平台函数调用系统。
为了解决上述技术问题,本发明所采取的技术方案是:一种跨平台函数调用系统,包括发送平台和接收平台,所述接收平台内存储有若干用于执行不同任务的任务函数,所述接收平台内设置有消息号映射表,其中存储各个消息号分别与任务函数的一一对应关系,所述发送平台将跨平台的任务函数调用封装成一至少带有消息号的接口函数,并发送该接口函数至所述接收平台,接收平台执行接口函数,从而根据消息号自消息号映射表内查找出对应的任务函数,以执行。
所述发送平台可以包括平台运行主控单元、存储单元以及发送平台消息处理单元,其中,
所述平台运行主控单元用于发送平台的整体控制,并获得跨平台的任务函数调用的消息号和其它任务函数调用信息;
所述发送平台消息处理单元根据来自平台主控单元的消息号和其它任务函数调用信息,进行接口函数的封装,并发送封装后的接口函数;
所述存储单元用于存储跨平台的任务函数调用的发送数据和/或接收数据。
所述接收平台还可以包括平台运行主控单元、存储单元以及接收平台消息处理单元,其中:
所述平台运行主控单元用于对接收平台的整体控制,并且实现任务函数的执行;
所述接收平台消息处理单元用于与所述发送平台通讯,从而接收并执行来自发送平台的接口函数,实现任务函数的调用,并将接口函数执行结果和/或任务函数执行结果返回所述发送平台;
所述存储单元用于存储所述消息号映射表,和/或来自发送平台的参数实体,和/或所述任务函数执行结果。
所述发送平台消息处理单元封装后的接口函数可以仅带有消息号;
所述接收平台消息处理单元接收的接口函数仅带消息号,则接收平台消息处理单元在执行该接口函数时,根据消息号,自所述存储单元的消息号映射表中查找获得对应的任务函数,并使接收平台的平台运行主控单元执行该任务函数,最后接收平台消息处理单元结束接口函数的执行,并返回接口函数执行结果至所述发送平台。
所述其它任务函数调用信息指示任务函数调用带参数时,所述发送平台可以在所述存储单元内开辟一内存空间,用于存储作为发送数据的任务函数调用的参数实体,和/或预留作为接收数据的存储空间。
所述发送平台消息处理单元可以根据所述其它任务函数调用信息,产生任务函数调用的相关参数信息,并与消息号一起封装到接口函数中。
所述任务函数调用的相关参数信息可以包括参数所占存储空间大小值、发送平台是否需要发送参数实体、发送平台是否需要获得任务函数执行结果并存储于指定内存空间,并且,
所述发送平台消息处理单元当发送平台需要发送参数实体时,自存储单元的内存空间中读出相应的参数实体,并发送;当发送平台需要获得任务函数执行结果并存储于指定内存空间中时,等待接收来自接收平台的任务函数执行结果,并存储在相应的内存空间中;
所述接收平台消息处理单元在执行接收到的接口函数时,将根据所述参数所占空间大小值在接收平台的存储单元内开辟一内存空间;并根据发送平台需要发送参数实体的信息,接收来自发送平台消息处理单元发送的参数实体,存入所开辟的内存空间中;当任务函数执行完成后,还根据发送平台需要获得任务函数执行结果并存储于指定内存空间的信息,将任务函数执行结果发送给所述发送平台消息处理单元。
所述函数调用带有的参数中含有指针参数时,所述任务函数调用的相关参数信息还可以包括指针参数的位置信息、指针参数所指向的参数实体所占存储空间大小值、发送平台是否需要发送指针参数所指向的参数实体,以及发送平台是否需要获得任务函数执行结果并存储于指针参数所指向的内存空间,并且,
所述发送平台消息处理单元在发送平台需要发送指针参数所指向的参数实体时,自存储单元的内存空间中读取指针参数,并根据指针参数所指向的地址,读取其指向的参数实体,并发送;当发送平台需要获得任务函数执行结果并存储于指针参数所指向的内存空间时,发送平台消息处理单元等待接收来自接收平台消息处理单元的指针参数以及任务函数执行结果,从而将该任务函数执行结果存储到该指针参数指向的内存空间中;
所述接收平台消息处理单元在执行接口函数时,将根据所述指针参数的位置信息,获得指针参数值,并在发送平台需要获得任务函数执行结果并存储于指针参数所指向的内存空间时,存储该指针参数值;还根据所述指针参数所指向的参数实体所占存储空间大小值,在其存储单元中相应开辟一子内存空间,并修改接收到的指针参数值,使其指向所开辟的内存空间;再根据发送平台需要发送指针参数所指向的参数实体,接收来自发送平台消息处理单元的指针参数指向的参数实体,并存储到所述内存空间中;还根据所述发送平台需要获得任务函数执行结果并存储于指针参数所指向的内存空间,将所存储的指针参数值以及任务函数执行结果发送到所述发送平台消息处理单元。
所述接收平台消息处理单元还可以用于在接口函数执行完成后,发送接口函数执行结果至所述发送平台消息处理单元。
所述接口函数执行结果可以包括接口函数执行成功和错误号。
本发明相对现有技术的优点是:本发明由于将不同运行平台上的函数调用统一封装成一个接口函数,从而减少了通讯接口,尤其是对于发送平台而言接口单一,接口函数封装方式固定。并且,本发明还通过使运行平台上的不同任务函数与消息号一一对应,有利于系统扩展,增加应用的灵活性。
附图说明
附图1为本发明的系统结构原理方框图;
附图2为本发明进行跨平台函数调用的总体流程图;
附图3为本发明中发送平台的工作流程图;
附图4为本发明中接收平台的工作流程图;
附图5为实例2的内存空间存储示意图。
具体实施方式
下面将结合说明书附图及具体实施例对本发明作进一步详细说明。
参考附图1,本实施例所提供的一种跨平台函数调用系统,包括发送平台和接收平台,所述接收平台内存储有若干用于执行不同任务的任务函数,所述接收平台内还设置有消息号映射表,其中存储各个消息号分别与任务函数的一一对应关系,所述发送平台将跨平台的任务函数调用封装成一至少带有消息号的接口函数,并发送该接口函数至所述接收平台,接收平台执行接口函数,从而根据消息号自消息号映射表内查找出对应的任务函数,以执行。
所述发送平台包括平台运行主控单元、存储单元以及发送平台消息处理单元,其中,
所述平台运行主控单元用于发送平台的整体控制,并获得跨平台的任务函数调用的消息号和其它任务函数调用信息;
所述发送平台消息处理单元根据来自平台主控单元的消息号和其它任务函数调用信息,进行接口函数的封装,并发送封装后的接口函数;
所述存储单元用于存储跨平台的任务函数调用的发送数据和/或接收数据。
所述接收平台还包括平台运行主控单元、存储单元以及接收平台消息处理单元,其中:
所述平台运行主控单元用于对接收平台的整体控制,并且实现任务函数的执行;当然,任务函数的执行也可以由接收平台消息处理单元执行。
所述接收平台消息处理单元用于与所述发送平台通讯,从而接收并执行来自发送平台的接口函数,实现任务函数的调用,并将接口函数执行结果和/或任务函数执行结果返回所述发送平台;
所述存储单元用于存储所述消息号映射表,和/或来自发送平台的参数实体,和/或所述任务函数执行结果。该存储单元亦可设置于所述接收平台消息处理单元内。
所述发送平台消息处理单元与接收平台消息处理单元之间可以进行有线或无线方式的通讯。
下面将根据本发明系统的工作流程,详细描述本发明系统的结构、信号流向以及工作原理。
参考附图2,本发明的跨平台函数调用系统的工作流程主要包括如下步骤:
(1)将接收平台上的各个任务函数各分配一个消息号,使它们一一对应;
(2)在发送平台上将需要在接收平台上执行的任务函数调用封装成至少包括带消息号的接口函数;
(3)发送平台发送所述接口函数至接收平台;
(4)接收平台执行接收到的接口函数,实现对接收平台上的任务函数调用过程;
(5)接收平台在接口函数执行完成后,返回接口函数执行结果至所述发送平台。
上述的接收平台内具有若干用于执行不同任务的任务函数,并且,一个任务可以具有多个任务函数。
上述的发送平台和接收平台可以为不同系统的不同平台,也可以扩展为同一个系统的不同平台,甚至可以扩展到同一个平台下的不同部分。
上述的发送平台和接收平台在实际运行时,可以互相转换功能,即发送平台成为接收平台,接收平台成为发送平台。
上述的消息号可以采用数字表示。
在本发明的一个实施例中,所述的接口函数可以采用sendcommand(消息号,函数调用的相关参数信息)。其中sendcommand为函数名。
为了更清楚的描述本实施例的具体方法,下面将分成发送平台的工作流程和接收平台的工作流程来描述。
参考图3,发送平台的工作流程具体为:
步骤001,发送平台的平台运行主控单元首先根据需调用的任务函数设置消息号。
具体实施时,可以采用msg表示消息号。
步骤002,平台运行主控单元设置函数调用的相关信息,从而判断函数调用是否具有相关参数。
所述函数调用所具有的参数包括:任务函数执行所需要的参数值;任务函数执行结果的存储位置。
判断结果如果是,则执行步骤003;否则跳转至步骤016。
步骤003,平台运行主控单元在发送平台的存储单元上开辟一内存空间。
具体实施时,平台运行主控单元的软件中可以采用一指针参数*param来指向该内存空间。
对于本领域内的技术人员,很显然的知道具体实施时,也可以不将所有参数存储在一个内存空间内,而只需要发送平台能够获知各个参数的存储地址,并从该地址内顺利读取参数值即可。
步骤004,发送平台消息处理单元根据平台运行主控单元设置的函数调用的相关信息,获取参数所占存储空间大小值以及参数性质。
获取参数所占存储空间大小值的目的是,通知接收平台开辟相应大小的内存空间,以存储参数实体或任务函数执行结果。
具体实施时,发送平台消息处理单元内的软件可以采用paramsize表示指针参数*param指向的内存空间的大小值。这样,接口函数可表示为:sendcommand(msg,*param,paramsize)。
本实施例中,以参数性质来表示发送平台是否需要发送任务函数执行的参数,以及发送平台是否需要接收任务函数执行的结果。如:
设置参数性质为IN类型,则表示发送平台不需要发送任务函数执行的参数,但需要接收任务函数执行的结果;
设置参数性质为OUT类型,则表示发送平台需要发送任务函数执行的参数,但不需要接收任务函数执行的结果;
设置参数性质为INOUT类型,则表示发送平台需要发送任务函数执行的参数,并且需要接收任务函数执行的结果。
具体实施时,以paramtype表示参数性质,则有paramtype=IN;paramtype=OUT;paramtype=INOUT。
步骤005,发送平台消息处理单元判断所述内存空间中的参数是否带有指针,即是否存在指针参数,如果是则执行步骤006,否则跳转至步骤007。
步骤006,发送平台消息处理单元获取指针参数的位置信息、指针参数所指向的参数实体所占存储空间大小值,以及指针参数的参数性质。完成后跳转步骤008。
所述的指针参数的位置信息是指该指针参数在内存空间中存储的地址。当内存空间采用指针*param指向时,该位置信息即为指针参数存储地址距离其父指针*param的偏移量。本实施例中以ptrparamoffset表示所述指针参数的偏移量。
所述指针参数的参数性质用于表示发送平台是否需要发送该指针参数指向的参数实体,以及发送平台是否需要将接收到的任务函数执行结果存储于该指针参数指向的存储空间。
具体实施时,其设置的方法可以与前述的参数性质的设置方法相同。本实施例中还以ptrparamtype表示指针参数的参数性质,以prtparamsize表示所述指针参数所指向的参数实体所占存储空间大小值。
另外,指针参数所指向的参数实体中还可以包含有指针,因此,各个参数以增加后缀“n”的形式表示各个指针参数的相关信息。
步骤007,发送平台消息处理单元将参数所占存储空间大小值以及参数性质作为任务函数调用的相关参数信息,与消息号一起封装到接口函数。完成后跳转到步骤009。
具体实施时,封装后的接口函数表示为:
sendcommand(msg,paramtype,paramsize,0)。
其中为与参数带指针时的接口函数表述形式一致,以0表示参数的偏移量。
步骤008,发送平台消息处理单元将参数所占存储空间大小值、参数性质、指针参数的位置信息、指针参数所指向的参数实体所占存储空间大小值,以及指针参数的参数性质作为任务函数调用的相关参数信息,与消息号一起封装到所述接口函数。
本实施例中,封装后的接口函数表示为:
sendcommand(msg,paramtype,paramsize,0,
ptrparamtype_1,ptrparamsize_1,ptrparamoffset_1,……
ptrparamtype_n,ptrparamsize_n,ptrparamoffset_n)
步骤009,发送平台消息处理单元发送步骤007或步骤008封装好的接口函数至接收平台消息处理单元。
步骤010,发送平台消息处理单元判断函数调用的相关信息中,参数性质或指针参数的参数性质是否为IN类型,即是否发送平台不需要发送任务函数执行的参数,但需要接收任务函数执行的结果;或者是否发送平台不需要发送指针参数指向的参数实体,但需要将接收到的任务函数执行结果存储于该指针参数指向的存储空间。如果是,则执行步骤013,否则执行步骤011。
步骤011,发送平台消息处理单元判断函数调用的相关信息中,参数性质和/或指针参数的参数性质是否为OUT类型,即是否发送平台需要发送任务函数执行的参数,但不需要接收任务函数执行的结果;和/或是否发送平台需要发送指针参数指向的参数实体,但不需要将接收到的任务函数执行结果存储于该指针参数指向的存储空间。如果是,则执行步骤015,否则执行步骤012。
步骤012,函数调用的相关信息中,参数性质和/或指针参数的参数性质为INOUT类型,即发送平台需要发送任务函数执行的参数,且需要接收任务函数执行的结果;和/或发送平台需要发送指针参数指向的参数实体,且需要将接收到的任务函数执行结果存储于该指针参数指向的存储空间。因此发送内存空间中的参数,和/或指针参数对应的参数实体至接收平台。再跳转至步骤014。
步骤013,发送平台等待接收任务函数执行结果,并将该结果存储于指定存储空间。完成后跳转至步骤018。
如参数性质为IN类型,则将结果存储于发送平台上存储参数的内存空间中。如指针参数的参数性质为IN类型,则将该结果存储于发送平台上指针参数对应的存储空间内。
本实施例中,当参数中带有指针时,如果paramtype为IN类型,则设置ptrparamtype也为IN类型。
步骤014,发送平台消息处理单元等待接收任务函数执行结果,并将该结果存储于指定存储空间。完成后跳转至步骤018。
当参数性质为INOUT类型,且指针参数的参数性质为OUT类型时,所述指定的存储空间为参数所在的内存空间。
当参数性质为INOUT类型,且指针参数中存在一个或多个指针参数的参数性质为IN类型时,所述指定的存储空间为IN类型的指针参数所指向的存储空间。
步骤015,发送平台消息处理单元发送内存空间中的参数,和/或指针参数对应的参数实体至接收平台。完成后跳转至步骤018。
本实施例中,当参数性质中带有指针时,如果参数性质为OUT类型,则设置指针参数的参数性质也为OUT类型。
步骤016,发送平台消息处理单元将消息号封装到接口函数。
本实施例中,封装后的接口函数表示为:sendcommand msg。
步骤017,发送平台消息处理单元发送接口函数至接收平台。
步骤018,发送平台消息处理单元等待接收接口函数的执行结果。
上述步骤中,所述的接口函数的执行结果包括:接口函数执行成功、错误号。所述错误号是指接口函数执行失败后,其导致失败的错误原因,如未能查找到相应的任务函数等等。所述的任务函数的执行结果为任务函数执行后的函数值等。
本领域内的普通技术人员应当得知,上述发送平台的各个步骤的顺序可以作出相应调整,如可判断完参数性质或指针参数性质以后,再发送接口函数;或可先发送需要发送的参数实体,再发送接口函数。因此,上述的步骤仅为本发明的一个较佳实施方案。
参考附图4,接收平台的工作流程具体为:
步骤101,接收平台消息处理单元接收来自发送平台消息处理单元的接口函数。
步骤102,接收平台消息处理单元执行接口函数。
步骤103,接收平台消息处理单元自接口函数中获得消息号。
步骤104,查询接口函数中是否封装有任务函数调用的相关参数信息?有则跳转至步骤108,否则执行步骤105。
步骤105,根据消息号在所述消息号映射表中查找接收平台上对应的任务函数。
步骤106,是否查找到相应的任务函数?是则执行步骤106,否则跳转至步骤****。
步骤107,接收平台消息处理单元通知接收平台执行该任务函数,后跳转至步骤127。
步骤108,接收平台消息处理单元获得参数所占空间大小值paramsize,并根据该值在接收平台的存储单元中开辟一内存空间。
步骤109,接收平台消息处理单元查询接口函数中是否封装有指针参数指向的参数实体所占存储空间大小值ptrparamsize,有则获得该值,并执行步骤110,否则跳转步骤111。
所述的ptrparamsize包括指针参数中还含有指针的情况。
步骤110,接收平台消息处理单元根据ptrparamsize值在接收平台的存储单元内对应开辟子内存空间。
如果指针参数中还含有指针,则相应开辟多个子内存空间。
步骤111,接收平台消息处理单元判断接口函数中封装的参数性质paramtype,或指针参数的参数性质ptrparamtype是否为IN类型,即是否发送平台不需要发送任务函数执行的参数,但需要接收任务函数执行的结果;或者是否发送平台不需要发送指针参数指向的参数实体,但需要将接收到的任务函数执行结果存储于该指针参数指向的存储空间。如果是,则执行步骤112,否则跳转至步骤117。
步骤112,接收平台消息处理单元根据消息号查找对应的任务函数。
步骤113,是否查找到相应的任务函数?是则执行步骤114,否则跳转至步骤****。
步骤114,接收平台消息处理单元通知接收平台的平台运行主控单元执行任务函数。
步骤115,将任务函数执行结果存储于相应的内存空间或子内存空间内。
步骤116,发送任务函数执行结果至发送平台消息处理单元,以使其可以将该结果存储于指定的内存空间或子内存空间内。完成后跳转至步骤127。
步骤117,接收平台消息处理单元判断接口函数中封装的参数性质paramtype,或指针参数的参数性质ptrparamtype是否为OUT类型,即是否发送平台需要发送任务函数执行的参数,但不需要接收任务函数执行的结果;或者是否发送平台需要发送指针参数指向的参数实体,但不需要将接收到的任务函数执行结果存储于该指针参数指向的存储空间。如果是,则执行步骤118,否则跳转至步骤122。
步骤118,接收平台消息处理单元接收来自发送平台消息处理单元的参数,并存储于存储单元的内存空间中;或接收来自发送平台消息处理单元的指针参数所指向的参数实体,并存储于相应的子内存空间中。
本实施例中,该步骤具体实施为:
当参数中不含指针参数时,接收平台消息处理单元接收来自发送平台的参数,并存储于根据paramsize开辟的内存空间中。
当参数中还含有指针参数时:
首先接收平台消息处理单元接收来自发送平台的参数,并存储于根据paramsize开辟的内存空间中;
其次,根据指针参数的位置信息,本实施例中的ptrparamoffset的值,在内存空间中查找到相应的指针参数,并修改该指针参数的值,使其指向接收平台根据ptrparamsize对应开辟的子内存空间;
最后,接收来自发送平台的指针参数所指向的参数实体,并存储于相应的子内存空间中。
当指针参数所指向的参数实体中还带有指针时,重复前述操作中的后两步,直至所有的指针均正确的指向其对应的子内存空间,从而完成接收平台上地址空间的转换,并正确存储各个指针所指向的参数实体。
步骤119,根据消息号查找对应的任务函数。
步骤120,是否查找到相应的任务函数?是则执行步骤121,否则跳转至步骤127。
步骤121,将步骤118中获得的参数,和/或参数实体用于执行任务函数。完成后,跳转至步骤127。
步骤122,当paramtype和/或ptrparamtype为INOUT类型时,即发送平台需要发送任务函数执行的参数,且需要接收任务函数执行的结果;和/或发送平台需要发送指针参数指向的参数实体,且需要将接收到的任务函数执行结果存储于该指针参数指向的存储空间。因此接收来自发送平台的参数,并存储在内存空间中;或接收来自发送平台的指针指向的参数实体,并对应存储于子内存空间中。
步骤123,根据消息号查找对应的任务函数。
步骤124,是否查找到相应的任务函数?是则执行步骤125,否则跳转至步骤127。
步骤125,将步骤122中获得的参数,和/或参数实体用于执行任务函数。
步骤126,发送任务函数执行结果至发送平台。
步骤127,接口函数执行完毕,产生接口函数执行结果,并返回该结果至发送平台。
本实施例中,步骤122~126的具体实施过程可以为:
当参数中不含指针时,接收平台消息处理单元接收来自发送平台的参数,并存储于根据paramsize开辟的内存空间中。当任务函数执行完成后,接收平台消息处理单元可以首先将任务函数执行结果存储到该内存空间,然后将此内存空间的数据返回给发送平台。
当参数中还含有指针参数时:
如果参数性质为INOUT类型,且指针参数的参数性质为OUT类型,接收平台消息处理单元首先接收来自发送平台的参数,并存储于根据paramsize开辟的内存空间中。然后根据指针参数的位置信息,本实施例中的ptrparamoffset的值,在内存空间中查找到相应的指针参数,并修改该指针参数的值,使其指向接收平台消息处理单元根据ptrparamsize对应开辟的子内存空间;最后接收来自发送平台的指针参数所指向的参数实体,并存储于根据ptrparamsize开辟的子内存空间中。当指针参数所指向的参数实体中还带有指针时,重复前述操作,直至所有的指针均正确的指向其对应的子内存空间,从而完成接收平台上地址空间的转换,并正确存储各个指针所指向的参数实体。
当任务函数执行完成后,接收平台消息处理单元可以首先将任务函数执行结果存储于内存空间中非指针参数的存储位置,然后将此内存空间的数据返回给发送平台。
如果参数性质为INOUT类型,且指针参数中存在一个或多个指针参数的参数性质为IN类型时,接收平台消息处理单元同样首先接收来自发送平台的参数,并存储于根据paramsize开辟的内存空间中。其次根据指针参数的位置信息,本实施例中的ptrparamoffset的值,在内存空间中查找到相应的指针参数,保存并修改该指针参数的值,使其指向接收平台根据ptrparamsize对应开辟的子内存空间;当指针参数所指向的参数实体中还带有指针时,重复前述操作,直至所有的指针均正确的指向其对应的子内存空间,从而完成接收平台上地址空间的转换。再次,接收平台消息处理单元查询是否所有的指针参数的参数类型都为IN类型,如果还存在OUT或INOUT类型的指针参数,则需要接收该指针参数对应的参数实体,并存储于对应的子内存空间中。最后,将内存空间中非IN类型指针参数存储位置的参数,以及OUT或INOUT类型的指针参数所指向的参数实体,用于任务函数的执行。
当任务函数执行完成后,接收平台消息处理单元首先将任务函数执行结果存储于IN类型指针参数所指向的子内存空间,然后以保存的原指针参数恢复修改后的指针参数值,并将原指针参数以及子内存空间中的任务函数执行结果返回给发送平台,以使发送平台消息处理单元可以根据指针参数,将任务函数执行结果准确的保存到其所指向的存储位置中。
本领域内的普通技术人员应当得知,上述接收平台的各个步骤的顺序可以调整出多种具体实施方案,该调整只需与发送平台的步骤相一致即可。因此,上述的步骤仅为本发明的一个较佳实施方案。
下面将给出几个本发明的应用实例。
实例1
工作目标:发送平台启动接收平台上的摄像头进行摄像。
工作过程:发送平台消息处理单元发送接口函数:sendcommand 1。其中1为msg。接收平台消息处理单元接收该接口函数,并执行。查找到对应的任务函数OPENCAMERA()。该任务函数调用无需参数。接收平台的平台运行主控单元直接执行,执行完成后,返回接口函数执行成功信息给发送平台。
实例2
工作目标:发送平台调用接收平台上的任务函数CAMERACAPTURE(Width,Height),命令接收平台的摄像头捕获一副大小为300字节的图像,并要求获得该图像数据。
工作过程:发送平台的平台运行主控单元首先确定消息号msg=2。然后开辟一指针*param指向的内存空间用于存储该任务函数所需要的宽度值Width、高度值Height,并存储图像数据存储的地址指针*ptrparam。内存空间中的数据如图5所示。其中的每个参数分别占4个字节,*ptrparam的偏移量为8,*ptrparam所指向的存储空间A占300个字节。
因此发送平台消息处理单元首先发送接口函数:
sendcommand(2,INOUT,12,0,IN,300,8);
然后发送该内存空间中所有12个字节的数据。
接收平台消息处理单元首先接收该接口函数。然后开辟一大小为12个字节的内存空间,用于将接收的来自发送平台的12个字节的数据存储于该内存空间中,再开辟一个大小为300字节的子内存空间,并先保存内存空间中的最后4个字节的值,即指针*ptrparam的值,然后修改使其指向子内存空间。接着根据消息号2查找到对应的任务函数CAMERACAPTURE(Width,Height),将内存空间中的头4个字节的数据作为参数Width,中间4个字节的数据作为参数Height,执行任务函数。从而摄像头启动捕获一副指定高度和宽度的图像,并将该图像数据存储入子内存空间中。最后,接收平台消息处理单元需要以保存的*ptrparam的值替代内存空间中最后4个字节的值,并将内存空间中的参数实体以及子内存空间中的图像数据一并发送到发送平台。使发送平台可以根据*ptrparam,将图像数据存储到其指向的存储区间A内。
应当说明的是,前面的描述意图仅是说明性的,而不是为了限制本发明。本领域的普通技术人员可以对在这里公开的实施例的形式和细节进行许多变化,而不脱离本发明的精神和实质。本发明的范围由附加的权利要求限定。
Claims (10)
1、一种跨平台函数调用系统,包括发送平台和接收平台,所述接收平台内存储有若干用于执行不同任务的任务函数,其特征在于:所述接收平台内设置有消息号映射表,其中存储各个消息号分别与任务函数的一一对应关系,所述发送平台将跨平台的任务函数调用封装成一至少带有消息号的接口函数,并发送该接口函数至所述接收平台,接收平台执行接口函数,从而根据消息号自消息号映射表内查找出对应的任务函数,以执行。
2、如权利要求1所述系统,其特征在于:所述发送平台包括平台运行主控单元、存储单元以及发送平台消息处理单元,其中,
所述平台运行主控单元用于发送平台的整体控制,并获得跨平台的任务函数调用的消息号和其它任务函数调用信息;
所述发送平台消息处理单元根据来自平台主控单元的消息号和其它任务函数调用信息,进行接口函数的封装,并发送封装后的接口函数;
所述存储单元用于存储跨平台的任务函数调用的发送数据和/或接收数据。
3、如权利要求1或2所述系统,其特征在于:所述接收平台还包括平台运行主控单元、存储单元以及接收平台消息处理单元,其中:
所述平台运行主控单元用于对接收平台的整体控制,并且实现任务函数的执行;
所述接收平台消息处理单元用于与所述发送平台通讯,从而接收并执行来自发送平台的接口函数,实现任务函数的调用,并将接口函数执行结果和/或任务函数执行结果返回所述发送平台;
所述存储单元用于存储所述消息号映射表,和/或来自发送平台的参数实体,和/或所述任务函数执行结果。
4、如权利要求3所述系统,其特征在于:所述发送平台消息处理单元封装后的接口函数仅带有消息号;
所述接收平台消息处理单元接收的接口函数仅带消息号,则接收平台消息处理单元在执行该接口函数时,根据消息号,自所述存储单元的消息号映射表中查找获得对应的任务函数,并使接收平台的平台运行主控单元执行该任务函数,最后接收平台消息处理单元结束接口函数的执行,并返回接口函数执行结果至所述发送平台。
5、如权利要求3所述系统,其特征在于:所述其它任务函数调用信息指示任务函数调用带参数时,所述发送平台在所述存储单元内开辟一内存空间,用于存储作为发送数据的任务函数调用的参数实体,和/或预留作为接收数据的存储空间。
6、如权利要求5所述系统,其特征在于:所述发送平台消息处理单元根据所述其它任务函数调用信息,产生任务函数调用的相关参数信息,并与消息号一起封装到接口函数中。
7、如权利要求6所述系统,其特征在于:所述任务函数调用的相关参数信息包括参数所占存储空间大小值、发送平台是否需要发送参数实体、发送平台是否需要获得任务函数执行结果并存储于指定内存空间,并且,
所述发送平台消息处理单元当发送平台需要发送参数实体时,自存储单元的内存空间中读出相应的参数实体,并发送;当发送平台需要获得任务函数执行结果并存储于指定内存空间中时,等待接收来自接收平台的任务函数执行结果,并存储在相应的内存空间中;
所述接收平台消息处理单元在执行接收到的接口函数时,将根据所述参数所占空间大小值在接收平台的存储单元内开辟一内存空间;并根据发送平台需要发送参数实体的信息,接收来自发送平台消息处理单元发送的参数实体,存入所开辟的内存空间中;当任务函数执行完成后,还根据发送平台需要获得任务函数执行结果并存储于指定内存空间的信息,将任务函数执行结果发送给所述发送平台消息处理单元。
8、如权利要求7所述系统,其特征在子:所述函数调用带有的参数中含有指针参数时,所述任务函数调用的相关参数信息还包括指针参数的位置信息、指针参数所指向的参数实体所占存储空间大小值、发送平台是否需要发送指针参数所指向的参数实体,以及发送平台是否需要获得任务函数执行结果并存储于指针参数所指向的内存空间,并且,
所述发送平台消息处理单元在发送平台需要发送指针参数所指向的参数实体时,自存储单元的内存空间中读取指针参数,并根据指针参数所指向的地址,读取其指向的参数实体,并发送;当发送平台需要获得任务函数执行结果并存储于指针参数所指向的内存空间时,发送平台消息处理单元等待接收来自接收平台消息处理单元的指针参数以及任务函数执行结果,从而将该任务函数执行结果存储到该指针参数指向的内存空间中;
所述接收平台消息处理单元在执行接口函数时,将根据所述指针参数的位置信息,获得指针参数值,并在发送平台需要获得任务函数执行结果并存储于指针参数所指向的内存空间时,存储该指针参数值;还根据所述指针参数所指向的参数实体所占存储空间大小值,在其存储单元中相应开辟一子内存空间,并修改接收到的指针参数值,使其指向所开辟的内存空间;再根据发送平台需要发送指针参数所指向的参数实体,接收来自发送平台消息处理单元的指针参数指向的参数实体,并存储到所述内存空间中;还根据所述发送平台需要获得任务函数执行结果并存储于指针参数所指向的内存空间,将所存储的指针参数值以及任务函数执行结果发送到所述发送平台消息处理单元。
9、如权利要求8所述系统,其特征在于:所述接收平台消息处理单元还用于在接口函数执行完成后,发送接口函数执行结果至所述发送平台消息处理单元。
10、如权利要求9所述系统,其特征在于:所述接口函数执行结果包括接口函数执行成功和错误号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100929644A CN100458703C (zh) | 2005-08-26 | 2005-08-26 | 一种跨平台函数调用系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100929644A CN100458703C (zh) | 2005-08-26 | 2005-08-26 | 一种跨平台函数调用系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1731361A true CN1731361A (zh) | 2006-02-08 |
CN100458703C CN100458703C (zh) | 2009-02-04 |
Family
ID=35963722
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100929644A Expired - Fee Related CN100458703C (zh) | 2005-08-26 | 2005-08-26 | 一种跨平台函数调用系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100458703C (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101825999A (zh) * | 2010-04-28 | 2010-09-08 | 株洲南车时代电气股份有限公司 | 实现通信协议在不同操作系统上移植的方法 |
CN101287012B (zh) * | 2008-05-26 | 2011-03-30 | 德信智能手机技术(北京)有限公司 | 一种无线接口层网络服务的方法及装置 |
CN102169432A (zh) * | 2010-02-25 | 2011-08-31 | 腾讯科技(深圳)有限公司 | 一种as语言接口函数及调用方法 |
WO2012031438A1 (zh) * | 2010-09-10 | 2012-03-15 | 中兴通讯股份有限公司 | 一种处理器程序调度方法及装置 |
CN101610498B (zh) * | 2008-06-20 | 2012-05-09 | 中兴通讯股份有限公司 | 一种移动终端更新设备管理对象的方法及装置 |
CN106776035A (zh) * | 2016-12-28 | 2017-05-31 | 金蝶软件(中国)有限公司 | 实现跨系统多单据算法的对接方法、系统及请求异构系统 |
CN109213725A (zh) * | 2017-06-30 | 2019-01-15 | 英特尔Ip公司 | 软件可重新配置的移动设备和方法 |
WO2022042210A1 (zh) * | 2020-08-31 | 2022-03-03 | 华为技术有限公司 | 基于代理服务的设备调用方法、电子设备及可读存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5778228A (en) * | 1994-08-16 | 1998-07-07 | International Business Machines Corporation | Method and system for transferring remote procedure calls and responses over a network |
US5657447A (en) * | 1995-08-31 | 1997-08-12 | International Business Machines Corp. | Platform-transparent registration and build of stored procedures and user-defined functions |
US6314445B1 (en) * | 1998-08-03 | 2001-11-06 | International Business Machines Coproration | Native function calling |
JP4125055B2 (ja) * | 2002-06-28 | 2008-07-23 | キヤノン株式会社 | ログ取得方法 |
CN1264090C (zh) * | 2002-12-31 | 2006-07-12 | 上海科泰世纪科技有限公司 | 调用构件对象功能的智能指针的封装方法 |
CN1277186C (zh) * | 2003-12-22 | 2006-09-27 | 联想(北京)有限公司 | 软件接口测试方法 |
-
2005
- 2005-08-26 CN CNB2005100929644A patent/CN100458703C/zh not_active Expired - Fee Related
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101287012B (zh) * | 2008-05-26 | 2011-03-30 | 德信智能手机技术(北京)有限公司 | 一种无线接口层网络服务的方法及装置 |
CN101610498B (zh) * | 2008-06-20 | 2012-05-09 | 中兴通讯股份有限公司 | 一种移动终端更新设备管理对象的方法及装置 |
CN102169432A (zh) * | 2010-02-25 | 2011-08-31 | 腾讯科技(深圳)有限公司 | 一种as语言接口函数及调用方法 |
CN102169432B (zh) * | 2010-02-25 | 2014-09-03 | 腾讯科技(深圳)有限公司 | 一种as语言接口函数及调用方法 |
CN101825999A (zh) * | 2010-04-28 | 2010-09-08 | 株洲南车时代电气股份有限公司 | 实现通信协议在不同操作系统上移植的方法 |
CN101825999B (zh) * | 2010-04-28 | 2013-01-02 | 株洲南车时代电气股份有限公司 | 实现通信协议在不同操作系统上移植的方法和系统 |
WO2012031438A1 (zh) * | 2010-09-10 | 2012-03-15 | 中兴通讯股份有限公司 | 一种处理器程序调度方法及装置 |
CN106776035A (zh) * | 2016-12-28 | 2017-05-31 | 金蝶软件(中国)有限公司 | 实现跨系统多单据算法的对接方法、系统及请求异构系统 |
CN106776035B (zh) * | 2016-12-28 | 2020-08-07 | 金蝶软件(中国)有限公司 | 实现跨系统多单据算法的对接方法、系统及请求异构系统 |
CN109213725A (zh) * | 2017-06-30 | 2019-01-15 | 英特尔Ip公司 | 软件可重新配置的移动设备和方法 |
WO2022042210A1 (zh) * | 2020-08-31 | 2022-03-03 | 华为技术有限公司 | 基于代理服务的设备调用方法、电子设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN100458703C (zh) | 2009-02-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1731361A (zh) | 一种跨平台函数调用系统 | |
CN1198478C (zh) | 电子设备及其模拟像处理方法 | |
CN1845002A (zh) | 投影机用失真修正处理 | |
CN1806229A (zh) | 并行管理程序、包含该并行管理程序的存储介质、并行管理方法、和电子设备 | |
CN101031032A (zh) | 图像拾取设备、曝光控制方法、及计算机程序 | |
CN1892561A (zh) | 图像形成设备 | |
CN1756218A (zh) | 通信设备、通信程序和通信方法 | |
CN1638391A (zh) | 移动信息终端设备、信息处理方法、记录介质和程序 | |
CN1866221A (zh) | 一种软件接口测试方法和装置 | |
CN1942854A (zh) | 屏幕转换控制装置 | |
CN1581142A (zh) | 在客户机-服务器分布式系统中使用的方法、服务器和客户机 | |
CN1631017A (zh) | 发送装置、接收装置和发送/接收装置 | |
CN101038572A (zh) | 数据传送装置及数据传送系统 | |
CN1214592C (zh) | 多通道数据直接内存访问系统和方法 | |
CN1754704A (zh) | 多功能图像形成设备及其方法 | |
CN1949206A (zh) | 多处理器系统的消息通信方法及装置 | |
CN101048739A (zh) | 多处理器系统、同步控制装置及同步控制方法 | |
CN1821946A (zh) | 一种存储系统以及存储数据的方法和读取数据的方法 | |
CN101055569A (zh) | 一种电子数据表的函数收集方法和装置 | |
CN1862488A (zh) | 计算机系统中控件与多语言文本动态绑定显示的方法 | |
CN1808434A (zh) | 基于对象存储库的对象引用方法 | |
CN1921442A (zh) | 一种保障报文硬件转发的方法及装置 | |
CN1731360A (zh) | 一种不同运行平台间的函数调用的方法 | |
CN1677946A (zh) | 一种缓存分配方法及装置 | |
CN1536497A (zh) | 一种实现包过滤的防火墙及其实现包过滤的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090204 Termination date: 20120826 |