一种数据调用的方法及相关产品与流程

文档序号:28627479发布日期:2022-01-26 13:50阅读:66来源:国知局
一种数据调用的方法及相关产品与流程

1.本技术涉及通讯技术领域,尤其涉及一种数据调用的方法及相关产品。


背景技术:

2.随着互联网的发展,通讯模块成为数据通讯不可缺少的一部分,各种嵌入式设备上往往都带有通讯模块,使设备能够随时连接云平台,进行数据通讯。但在实际应用时,由于受到芯片缺货,产品升级,降低成本以及其他因素影响,需要更换通讯模块。例如为了降低成本,将5g模块换成4g模块,由于缺货将第一厂家生产的通讯模块换为第二厂家生产的通讯模块。由于不同厂家所生成的通讯模块性能不同,用于控制通讯模块的at指令也不完全相同,每次更换通讯模块,应用程序都需要做修改。
3.由于在linux操作系统下并没有统一的标准,每次更换通讯模块,应用工程师需要先熟悉指令或者相应的应用编程接口(application programming interface,api),然后修改应用程序适配不同通讯模块。
4.因此,如何在不更改应用程序的情况下,增加或更改通讯模块,是目前亟待解决的技术问题。


技术实现要素:

5.本技术实施例公开了一种数据调用的方法及相关产品,在更换或增加通讯模块时,不需要修改应用程序,简化了应用程序的开发。
6.第一方面,本技术实施例提供了一种数据调用的方法,包括:根据第一指令,确定待实现的目标功能;通过第一接口调用与所述目标功能对应的第一函数,并唤醒第一线程,所述第一接口为至少两个功能与函数之间向上的与应用程序连接的接口,所述至少两个功能包括所述目标功能,不同的功能对应不同的函数,所述第一线程用于调用与所述第一函数对应的第二函数;通过所述第一线程以及第二接口调用所述第二函数,所述第二函数用于控制第一模块实现所述目标功能,所述第二接口为至少两个功能与函数之间的向下的与第一模块连接的接口。
7.在上述方法中,本技术实施例构造统一的向上接口,即所述第一接口,用于统一应用程序的操作,所述第一接口由函数指针的结构体表示。通过所述第一接口中的函数指针调用对应的函数,可以使应用程序在不考虑具体at指令的情况下,实现对应功能。本技术实施例还提供了统一的向下接口(即所述第二接口),用于统一通讯模块的操作,通过所述第二接口调用第二结构体中的对应的函数,执行对应的操作,每一个通讯模块对应一个结构体,各个通讯模块互不影响,便于增加或者更改通讯模块,以及让一版程序能兼容不同通讯模块。因此,实施本技术实施例所提供的方法,能构造统一的向上接口与统一的向下接口,使得终端在增加或更改通讯模块时,不需要考虑通讯模块内部的指令,只需要根据通讯模块的不同,调用相应的函数,实现对应的功能;也无需对应用程序进行修改,简化了应用程序的开发。
8.在第一方面的一个可能的实现方式中,所述通过第一接口调用第一函数之前,所述方法还包括:根据产品识别码pid和供应商识别码vid,确定所述第一模块的产品型号;根据所述第一模块的产品型号,确定对应所述第一模块的所述第二接口。
9.可理解,不同的厂家所生产的不同型号的通讯模块具有不同的性能,也具有不同的控制指令与通讯方式。因此,通过获取通讯模块的pid与vid,以此获得所述通讯模块的生产厂家与产品型号,来区分不同通讯模块,并根据该通讯模块的具体性能,挂载不同的结构体作为所述第二接口,以便能顺利地调用所述第二函数。
10.在第一方面的一个可能的实现方式中,所述通过第二接口调用第二函数之后,所述方法还包括:在所述第一模块属于第一类型的情况下,通过所述第二接口向所述第一模块发送第一at指令,所述第一at指令用于表示控制所述第一模块执行操作的at指令,所述第一类型为使用标准usb虚拟串口的通讯模块的类型;或者,在所述第一模块属于第二类型的情况下,通过所述第二接口调用所述第一模块的应用编程接口api中的第三函数,所述第三函数用于表示所述api用于控制所述第一模块实现目标功能执行的操作,所述第二类型为具有厂家api的通讯模块的的类型。
11.可理解,通讯模块使用标准usb虚拟串口进行通讯,根据客户需求不同,厂家可以选择为通讯模块提供标准api或者不提供标准api。由于通讯模块在具有标准api和不具有标准api的情况下操作方式不同,采取不同的方案控制通讯模块执行操作,便于增加通讯模块,或对通讯模块进行更改,有利于兼容不同通讯模块。
12.在第一方面的一个可能的实现方式中,所述通过第一接口调用第一函数之前,所述方法还包括:在在所述第一模块属于第一类型的情况下,创建第二线程,所述第二线程用于获取所述第一模块发送的第二at指令,所述第二at指令表示由所述第一模块发送的at指令。
13.可理解,所述第二at指令与所述第一at指令包含于同一套at指令。
14.在第一方面的一个可能的实现方式中,所述通过第二接口调用第二函数之后,所述方法还包括:唤醒第二线程,获取所述第二at指令,所述第二at指令表示由所述第一模块发送的at指令;通过第二接口调用第四函数解析所述第二at指令。
15.第二方面,本技术实施例提供了一种数据调用装置,包括:第一确定单元,用于根据第一指令,确定待实现的目标功能;第一调用单元,用于通过第一接口调用与所述目标功能对应的第一函数,并唤醒第一线程,所述第一接口为至少两个功能与函数之间向上的与应用程序的接口,所述至少两个功能包括所述目标功能,不同的功能对应不同的函数,所述第一线程用于调用与所述第一函数对应的第二函数;第二调用单元,用于通过所述第一线程以及第二接口调用所述第二函数,所述第二函数用于控制第一模块实现所述目标功能,所述第二接口为至少两个功能与函数之间的向下的与第一模块连接的接口。
16.在第二方面的一个可能的实现方式中,所述第一确定单元还用于根据产品识别码pid和供应商识别码vid,确定所述第一模块的产品型号;第二确定单元,用于根据所述第一模块的产品型号,确定对应所述第一模块的所述第二接口。
17.在第二方面的一个可能的实现方式中,所述第二调用单元,还用于通过所述第二接口向所述第一模块发送第一at指令,所述第一at指令用于表示控制所述第一模块执行操作的at指令,所述第一类型为不具有厂家应用编程接口api的通讯模块的类型;或者,所述
第二调用单元,还用于通过所述第二接口调用所述第一模块的api中的第三函数,所述第三函数用于表示所述api用于控制所述第一模块实现目标功能执行的操作,所述第二类型为具有厂家提供的封装好的api的通讯模块的类型。
18.在第二方面的一个可能的实现方式中,所述装置还包括:创建单元,用于创建第二线程,所述第二线程用于获取所述第一模块发送的第二at指令,所述第二at指令表示由所述第一模块发送的at指令。
19.在第二方面的一个可能的实现方式中,所述第二调用单元还用于通过第二接口调用第四函数解析所述第二at指令,所述装置还包括:获取单元,用于唤醒第二线程,获取所述第二at指令,所述第二at指令表示由所述第一模块发送的at指令。
20.第三方面,本技术实施例提供了一种数据调用系统,包括:中间层模块,用于通过统一的第一接口和第二接口连接应用程序与第一模块,所述第一接口为至少两个功能与函数之间的向上的与应用程序连接的接口,所述至少两个功能包括目标功能,不同的功能对应不同的函数,所述函数具有统一的入口参数和统一的返回值,所述第二接口为与所述第一模块对应的接口;所述第一模块,用于根据所述第二接口执行所述目标功能。
21.可理解,所述应用程序可以通过所述中间层模块调用所述第一接口,本技术实施例对所述应用程序的功能不作限制。
22.第四方面,本技术实施例提供了一种终端,包括:存储器,用于存储程序;处理器,用于执行上述存储器存储的上述程序,当上述程序被执行时,上述处理器用于执行如第一方面或者第一方面的任意一种可能的实施方式中的方法。
23.第五方面,本技术实施例提供了一种芯片,包括:处理器与接口,所述处理器和所述接口耦合;所述接口用于接收或输出信号,所述处理器用于执行如第一方面或者第一方面的任意一种可能的实施方式中的方法。
24.第六方面,本技术实施例提供了一种计算机可读存储介质,上述计算机存储介质存储有计算机程序,上述计算机程序包括程序指令,上述程序指令当被处理器执行时使上述处理器执行如第一方面或者第一方面的任意一种可能的实施方式中的方法。
25.第七方面,本技术实施例提供了一种计算机程序产品,上述计算机程序产品包括:指令或计算机程序;上述指令或上述计算机程序被执行时,使如第一方面中任意一种可能的实施方式中的方法实现。
附图说明
26.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对本技术实施例或背景技术中所需要使用的附图作简单地介绍。
27.图1是本技术实施例提供的一种数据调用的方法示意图;
28.图2是本技术实施例提供的一种基于通讯的中间层框架的示意图;
29.图3是本技术实施例提供的一种数据调用的方法的流程示意图;
30.图4是本技术实施例提供的一种数据调用的方法的流程示意图;
31.图5是本技术实施例提供的另一种数据调用的方法的流程示意图;
32.图6为本技术实施例提供的一种数据调用装置的示意图;
33.图7为本技术实施例提供的一种终端的结构示意图。
具体实施方式
34.为了使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术作进一步地描述。
35.本技术的说明书、权利要求书及附图中的术语“第一”和“第二”等仅用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备等,没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元等,或可选地还包括对于这些过程、方法、产品或设备等固有的其它步骤或单元。
36.在本文中提及的“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员可以显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
37.在本技术中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上,“至少两个(项)”是指两个或三个及三个以上,“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:只存在a,只存在b以及同时存在a和b三种情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”。
38.本技术实施例提供了一种通讯的方法,为了更清楚地描述本技术的方案,下面先介绍一些与通讯相关的知识。
39.通讯模块:在计算机设备与设备之间或集成电路之间常常需要进行数据传输,通讯模块就是可以实现数据传输功能的硬件单元。通讯模块可以通过at指令进行控制,实现打电话,发短信等操作,也可接受其他通信模块发来的信息,例如控制中心通过车载台对车辆进行调度和定位。其中,at指令就是主芯片和无线模块的协议接口。
40.中间层:中间层也称作应用程序服务器层或应用服务层,是用户接口之间的逻辑层,中间层是生成并操作接收信息的业务规则和函数的集合,它可以提供一个抽象层,使客户层与应用服务层相分离,当数据库或者应用服务层的业务逻辑改变时,客户端并不需要改变,反之亦然。
41.下面将结合附图对本技术实施例中的技术方案进行描述。
42.请参见图1,图1是本技术实施例提供的一种数据调用的方法示意图。如图1所示,应用程序101通过向通讯模块发送at指令,控制通讯模块103实现目标功能。但由于芯片缺货、降低成本、升级产品等多种原因,用户常常需要将上述通讯模块103更换成通讯模块104。但由于不同厂家所生产的通讯模块所适配的at指令不完全相同,因此,在更换上述通讯模块103为上述通讯模块104时,上述应用程序101也需要针对上述通讯模块104的不同修改成应用程序102。在这种情况下,每次对通讯模块进行更换,都要修改应用程序,增加很大的工作量,也增加开发时间;其次,当软件工程师不熟悉at指令时,有可能更换通讯模块的过程中发生错误,影响产品的可靠性。此外,也不利于程序兼容不同的通讯模块,不利于将应用程序移植到其他平台。
43.针对上述通讯中存在的问题,本技术实施例提供了一种基于通讯的中间层框架,
以动态库/静态库的形式提供给应用程序调用。统一了接口与中间层框架,因此,在更换或增加通讯模块的情况下,应用程序不需要进行修改,就可以实现对应功能,具体请参考图2。
44.图2为本技术实施例提供的一种中间框架示意图,如图2所示,其中初始化函数(init_module函数)用于在初始化的时候被调用,函数的原型为interface_app*init_module(data_net_para_t*para,statuecallback cb)。上述初始化函数可以执行的操作包括但不限于:初始化变量,读取通讯模块的产品识别码(product identification,pid)和供应商识别码(vendor identification,vid),挂载对应的通讯模块的拨号接口(dialinterface结构体),创建执行线程(thread_command)和读取线程(thread_read)两个线程。上述拨号接口可以表示为与通讯模块进行数据调用的向下的接口,不同的通讯模块对应不同的结构体。上述初始化函数的入口参数为拨号上网的参数,可以包括但不限于接入点(access point name,apn)名称,用户名,密码中的一项或多项,cb为回调函数指针,通过上述回调函数可以上报联网状态。
45.上述读取线程主要用于接收通讯模块返回的at指令,应用程序不可以直接调用上述线程。如果上述通讯模块中带有厂家的应用程序编程接口(application programming interface,api),则可以不需要上述读取线程。
46.上述执行线程为业务处理线程,应用程序不可以直接调用上述线程。上述执行线程主要用于调用拨号接口中的相关函数,实现相应功能。上述功能包括但不限于初始化通讯模块功能,自动拨号功能,断网自动重拨功能中的一项或多项。在应用程序调用应用程序接口中的相关函数后,上述执行线程会执行相关函数所对应的功能。
47.上述应用程序接口(interfaceapp)向应用程序提供可调用的函数指针,上述函数指针具有统一的入口参数和返回值,使得应用程序在使用时只需调用对应的接口,不需要考虑通讯模块的定义。基于上述中间层框架,本技术实施例提供了一种应用程序接口,上述应用程序接口对应的可调用的函数指针包括但不限于,用于建立拨号上网的函数指针typedef int(*connect)()、用于断开拨号上网的函数指针typedef int(*disconnect)()、用于设置拨号参数的函数指针typedef int(*setpara)(data_net_para_t*)、用于获取当前拨号参数的函数指针typedef int(*getpara)(data_net_para_t*)、用于获取当前联网状态的函数指针typedef int(*getstatue)(void*para,int len)、用于执行特殊at指令的函数指针typedef int(*runcmd)(int code,void*para,int len)、用于关闭模块的函数指针typedef int(*close)()、用于休眠模块的函数指针typedef int(*onsleep)()、用于唤醒模块的函数指针typedef int(*onwakeup)()、用于进入测试模式的函数指针typedef int(*starttest)(int itimeout)、用于获取信号强度的函数指针typedef int(*getrssi)()、用于获取信息的函数指针typedef int(*getdata)(char*,int len)、用于获取模块类型的函数指针typedef int(*get5gtype)()、用于解析at指令的函数指针typedef int(*parse_at_callback)(char*cmd)。
48.本技术实施例通过统一的中间层框架,构造统一的对上的接口,上述接口以函数指针的结构体的形式提供给应用程序调用,如上述应用程序接口(interface app结构体),统一了函数的入口参数和返回值,因此应用程序不需要考虑具体的at指令,也不需要考虑如何控制通讯模块。上述终端更换通讯模块后只需更新动态库、静态库,应用程序不需要修改。本技术实施例也定义了统一的对下接口(与通讯模块交互),该接口也是以函数指针的
结构体的形式存在,如拨号接口(dialinterface结构体)(例如图2中拨号接口201、拨号接口202或者拨号接口203);通过通讯模块的pid和vid来区分不同通讯模块,然后挂载对应的拨号接口,调用结构体中相应的函数指针对通讯模块进行操作,从而使动态库可以兼容多种不同的通讯模块。通讯模块a、通讯模块b和通讯模块c可以表示不同的通讯模块,如果增加其他的通讯模块时,可以在原有框架的基础上,只增加一个结构体,实现对应的功能即可。
49.基于上述中间层框架,本技术实施例提供了一种数据调用的方法的流程示意图,如图3所示,该方法包括但不限于如下步骤:
50.301、根据第一指令,确定待实现的目标功能。
51.终端可以根据用户的需求获取第一指令,确定待实现的目标功能。
52.具体的,上述终端可以是用户的手机,平板电脑,车载终端或者其他具有通讯模块并且可以进行网络连接与数据收发的终端。
53.可选的,上述第一指令可以包括但不限于建立拨号上网,断开拨号上网,设置拨号参数,获取当前拨号参数,获取当前互联网状态,执行特殊at指令,关闭模块,休眠模块,唤醒模块,进入测试模式,获取信号强度,获取集成电路卡识别码(integrate circuit card identity,iccid),获取国际移动设备识别码(international mobile equipment identity,imei),获取国际移动用户识别码(international mobile subscriber identification number,imsi),获取模块的固件版本,获取运营商名称,获取模块类型中的一项或多项。
54.可选的,上述根据用户的需求获取第一指令,可以通过终端与用户的交互,确定待实现的目标功能,例如,用户可以通过键盘、鼠标等设备向上述终端输入上述第一指令;或者,上述终端可以通过识别用户的语音指令来获取上述第一指令。
55.302、通过第一接口调用与上述目标功能对应的第一函数,并唤醒第一线程。
56.具体的,上述第一接口为可供应用程序调用的函数指针的集合,可用函数指针的结构体表示,其具体形式可以参考图2中interface app的结构体。位于终端上的应用软件可以通过第一接口中的函数指针获取与上述目标功能对应的第一函数,然后调用该第一函数,第一函数会生成与目标功能对应的事件,上述第一线程在获取到该事件后将被唤醒。
57.可理解,上述第一接口包括对应不同的功能的函数指针,该函数指针包括但不限于对应建立拨号上网功能的第一指针、对应断开拨号上网功能的第二指针、对应断开拨号上网功能的第二指针、对应设置拨号参数功能的第三指针,对应获取当前拨号参数功能的第四指针、对应获取当前联网状态功能的第五指针、对应执行特殊at指令功能的第六指针、对应关闭模块功能的第七指针,对应休眠模块的第八指针、对应唤醒模块功能的第九指针、对应进入测试模式功能的第十指针,对应获取信号强度的第十一指针、对应获取iccid功能的第十二指针,对应获取imei功能的第十三指针、对应获取imsi功能的第十四指针、对应获取模块的固件版本功能的第十五指针、对应获取运营商名称的第十六指针以及对应获取模块的类型的第十七指针中的任意一项或多项。上述第一线程可参考图2中的执行线程,用于内部业务处理,该第一线程可以调用第二接口中的第二函数,执行对应功能。
58.303、通过上述第一线程以及第二接口调用二函数。
59.上述第二接口为可以对通讯模块进行操作的函数指针的结构体,不同通讯模块对
应不同的结构体,具体可参考图2中的拨号接口。
60.可选的,上述接口包括对通讯模块进行操作实现目标功能的函数指针,上述函数指针包括但不限于控制模块执行初始化模块功能的第十八指针,控制模块执行断开拨号连接的第十九指针,控制模块执行关闭模块的第二十指针,控制模块执行解析at指令的第二十一指针,控制模块执行读取信号强度功能的第二十二指针,控制模块执行读取iccid功能的第二十三指针,控制模块执行imei功能的第二十四指针,控制模块执行读取imsi的第二十五指针,控制模块执行读取模块固件版本功能的第二十六指针,控制模块执行获取运营商名称功能的第二十七指针,控制模块执行建立拨号连接功能的第二十八指针中的任意一项或多项。
61.具体的,在上述第一线程被唤醒后,上述终端通过上述第二接口,获取对应上述目标功能的函数指针,调用第二函数,上述第二函数用于控制第一模块实现上述目标功能。
62.本技术实施例通过构造函数指针的结构体,来构造可供调用的统一的应用程序接口,使位于上述终端上的应用程序在不需要考虑通讯模块类型与通讯模块操作方式的情况下,只需要调用接口中的相关函数,就可以实现相应的功能。本技术实施例还通过构造函数指针的结构体构造统一操作通讯模块的接口,将不同通讯模块的操作封装在不同的结构体里,每一个通讯模块对应一个结构体,各个通讯模块之间的功能互不影响,便于增加通讯模块,并使得软件可以兼容不同通讯模块。
63.本技术实施例还提供了一种具体的数据调用的方法的流程示意图,如图4所示,该方法包括但不限于:
64.401、根据产品识别码pid和供应商识别码vid,确定第一模块的产品型号。
65.可理解,上述第一模块可以为一种usb设备,根据usb规范的规定,所有的usb设备都有pid和vid,通过识别pid和vid对即可对不同的usb设备进行区分。其中,vid是由供应商向usb执行论坛申请,每个供应商的vid是唯一的;pid由供应商自行决定。因此,上述pid与vid可以构成上述第一模块的唯一标识,可以用于确定上述第一模块的产品型号。
66.402、根据上述第一模块的产品型号,确定对应上述第一模块的第二接口。
67.可理解,由于不同厂家不同型号的通讯模块的操作方法不同,在确定上述第一模块的产品型号后,根据产品型号,上述终端挂载适配的结构体作为上述第二接口。上述结构体为预先设置的结构体,具体可参考图2中的拨号接口。
68.可选的,根据上述第一模块的产品型号,确定第一模块的类型。
69.403、创建第二线程。
70.可理解,上述第二线程用于获取上述第一模块返回的at指令,可参考图2中的读取线程。具体的,在初始化函数被调用时,触发初始化函数中创建第二线程的事件,并根据上述事件创建第二线程。
71.404、根据第一指令,确定待实现的目标功能。
72.具体的,终端可以根据用户的需求获取第一指令,确定待实现的目标功能,可选的,上述第一指令可以包括但不限于建立拨号上网,断开拨号上网,设置拨号参数,获取当前拨号参数,获取当前互联网状态,执行特殊at指令,关闭模块,休眠模块,唤醒模块,进入测试模式,获取信号强度,获取ccid,获取imei,获取imsi,获取模块的固件版本,获取运营商名称,获取模块类型中的一项或多项。可选的,上述根据用户需求获取第一指令,可以通
过终端与用户的交互,确定待实现的目标功能。例如,用户可以通过键盘、鼠标等设备向上述终端输入上述第一指令;或者,上述终端可以通过识别用户的语音指令来获取上述第一指令。
73.405、通过第一接口调用与上述目标功能对应的第一函数,并唤醒第一线程。
74.具体的,上述第一接口为构造的可供应用程序调用的结构体,其具体形式可以参考图2中interface app的结构体。位于终端上的应用软件可以通过第一接口中的函数指针获取与上述目标功能对应的第一函数,然后调用该第一函数。第一函数会生成与目标功能对应的事件,上述第一线程在获取到该上述事件后将被唤醒。上述第一线程可参考图2中的执行线程,该第一线程可以用于内部业务处理,调用第二接口中的第二函数,并执行对应功能。
75.406、通过上述第一线程以及第二接口调用上述第二函数。
76.可理解,上述第二接口为可以对通讯模块进行操作的函数指针的结构体,不同通讯模块对应不同的结构体,具体可参考图2中的拨号接口。可选的,上述接口包括对通讯模块进行操作实现目标功能的函数指针。具体的,上述在上述第一线程被唤醒后,上述终端通过上述第二接口,获取对应上述目标功能的函数指针,调用第二函数,上述第二函数用于控制第一模块实现上述目标功能。
77.407、在上述第一模块属于第一类型时,通过上述第二接口向上述第一模块发送第一at指令。
78.具体的,上述第一类型为使用标准usb虚拟串口的通讯模块的类型(不具有厂家应用编程接口api的通讯模块的类型)。上述第一at指令为用于控制通讯模块执行操作的指令,不同厂家生产的通讯模块所使用的at指令并不相同,本技术对上述第一at指令的具体形式不作限制。
79.可理解,在调用第二函数之后,向上述第一模块发送第一at指令,可以控制上述第一模块执行对应目标功能的相关操作。
80.408、唤醒第二线程,获取第二at指令。
81.可选的,上述第二at指令为上述第一模块返回的at指令,该第二at指令可以包括但不限于反映目标功能执行状态的at指令,上报信息的at指令中的任意一项或者多项。上述反映目标功能执行状态的at指令可以包括但不限于ok,erroe和命令相关的错误原因字符串中的任意一项或多项。上述上报信息的at指令可以包括但不限于断网信息的at指令、信号强度变化信息的at指令中的任意一项或多项。可理解,在上调用第二函数,向上述第一模块发送第一at指令后,上述第一模块会根据上述第一at指令执行对应目标功能的相关操作,并生成反映目标功能执行状态的第二at指令。
82.409、根据上述第二at指令唤醒上述第二线程,通过第二接口调用第四函数解析上述第二at指令。
83.可理解,上述第四函数为用于解析上述第二at指令的函数。由于上述终端中的应用软件无法理解at指令的含义,在上述终端获取到上述第二at指令后,上述第二线程通过第二接口中的行解析at指令的第二十一指针,调用第四函数对上述第二at指令进行解析。
84.本技术实施例提供了一种数据调用的方法,通过统一的接口,调用函数,实现目标功能。在更换通讯模块的情况下,终端可以根据上述pid和vid自动判断不同的通讯模块,加
载不同的结构体,应用工程师不需要熟悉的at指令,
85.本技术实施例还提供了另一种具体的数据调用的方法的流程示意图,如图5所示,该方法包括但不限于:
86.501、根据产品识别码pid和供应商识别码vid,确定第一模块的产品型号。
87.上述pid与vid构成上述第一模块的唯一标识,可以用来确定第一模块的产品型号。
88.可理解,关于步骤501的具体说明还可以参考图4所示的步骤401,这里不再赘述。
89.502、根据上述第一模块的产品型号,确定对应上述第一模块的第二接口。
90.可理解,由于不同厂家不同型号的通讯模块的操作方法不同,在确定第一模块的产品型号后,根据产品型号的不同,挂载不同的结构体作为第二接口。上述结构体为预先设置的结构体,具体可参考图2中的拨号接口。
91.503、根据第一指令,确定待实现的目标功能。
92.具体的,终端可以根据用户的需求获取上述第一指令,确定待实现的目标功能,可选的,上述第一指令可以包括但不限于建立拨号上网,断开拨号上网,设置拨号参数,获取当前拨号参数,获取当前互联网状态,执行特殊at指令,关闭模块,休眠模块,唤醒模块,进入测试模式,获取信号强度,获取ccid,获取imei,获取imsi,获取模块的固件版本,获取运营商名称,获取模块类型中的一项或多项。可选的上述根据用户需求获取第一指令,可以通过终端与用户的交互,确定待实现的目标功能。例如,用户可以通过键盘、鼠标等设备向上述终端输入上述第一指令;或者,上述终端可以通过识别用户的语音指令来获取上述第一指令。
93.504、通过第一接口调用与上述目标功能对应的第一函数,并唤醒第一线程。
94.具体的,上述第一接口为构造的可供应用程序调用的结构体,具体可以参考图2中应用程序接口。上述终端可以通过第一接口中的函数指针获取与上述目标功能对应的第一函数,然后调用第一函数,第一函数会生成与目标功能对应的事件,上述第一线程在获取到上述事件后被唤醒。上述第一线程可参考图2中的执行线程,该第一线程可以用于内部业务处理,调用第二接口中的第二函数,执行对应功能。
95.可理解,关于步骤504的具体说明还可以参考图3所示的步骤302,这里不再赘述。
96.505、通过上述第一线程以及上述第二接口调用第二函数
97.可理解,上述第二接口为可以对通讯模块进行操作的函数指针的结构体,不同通讯模块对应不同的结构体,具体可参考图2中的拨号接口。可选的,上述接口包括对通讯模块进行操作实现目标功能的函数指针。
98.具体的,上述在上述第一线程被唤醒后,通过上述第二接口,获取对应上述目标功能的函数指针,调用第二函数,上述第二函数用于控制第一模块实现上述目标功能。
99.可理解,关于步骤505具体说明还可以参考图3所示的步骤303,这里不再赘述。
100.506、通过上述第二接口调用上述第一模块的api中的第三函数。
101.具体的,在上述第一模块属于第二类型的情况下,上述第三函数控制上述第一模块执行目标功能对应的操作,上述第二类型为具有厂家提供的封装好的api的通讯模块的类型。可理解,上述api是厂家在通讯模块中预先定义的接口,可以实现at指令的获取与解析。因此,在上述第一模块的产品型号属于第二类型的情况下,通过第二接口直接调用第一
模块的api中的第三函数,可以控制第一模块实现目标功能。
102.本技术实施例提供了一种数据调用的方法,通过统一的接口,调用函数,实现目标功能。在更换通讯模块的情况下,终端可以根据上述pid和vid自动判断不同的通讯模块,加载不同的结构体,每个结构体都是独立的,和其他通讯模块的结构体不重合,应用工程师不需要熟悉通讯模块的api。
103.图6为本技术实施例提供的一种数据调用装置的示意图,如图6所示,该装置包括:
104.确定单元,用于根据第一指令,确定待实现的目标功能;
105.第一调用单元,用于通过第一接口调用与上述目标功能对应的第一函数,并唤醒第一线程,上述第一接口为至少两个功能与函数之间向上的与应用程序的接口,上述至少两个功能包括上述目标功能,不同的功能对应不同的函数,上述第一线程用于调用与上述第一函数对应的第二函数;
106.第二调用单元,用于通过上述第一线程以及第二接口调用上述第二函数,上述第二函数用于控制第一模块实现上述目标功能,上述第二接口为至少两个功能与函数之间的向下的与第一模块连接的接口,上述至少两个模块包括上述第一模块。
107.在一个可选的实现方式中,上述第一确定单元还用于根据产品识别码pid和供应商识别码vid,确定上述第一模块的产品型号;第二确定单元,用于根据上述第一模块的产品型号,确定对应上述第一模块的第二接口。
108.在一个可选的实现方式中,上述第二调用单元,还用于上述第二接口向上述第一模块发送第一at指令,上述第一at指令用于表示控制上述第一模块执行操作的at指令,上述第一类型为不具有厂家应用编程接口api的通讯模块的类型;或者,上述第二调用单元,还用于通过上述第二接口调用上述第一模块的api中的第三函数,上述第三函数用于表示上述api用于控制上述第一模块实现目标功能执行的操作,上述第二类型为具有厂家提供的封装好的api的通讯模块的类型。
109.在一个可选的实现方式中,上述装置还包括:创建单元,用于创建第二线程,上述第二线程用于获取上述第一模块发送的第二at指令,上述第二at指令表示由上述第一模块发送的at指令。
110.在一个可选的实现方式中,上述第二调用单元还用于根据上述第二at指令唤醒上述第二线程,通过第二接口调用第四函数解析上述第二at指令,上述装置还包括:获取单元,用于唤醒第二线程,获取上述第二at指令,上述第二at指令表示由上述第一模块发送的at指令。
111.可理解,对于图6所示的数据调用装置的产品形态,本技术实施例不作限定。例如,该通信装置可以是具有处理器、存储器和收发器的设备。又例如,该通信装置可以是具有存储器和通信接口的芯片。又例如,该通信装置还可以是具有芯片的芯片系统等。
112.请参见图7,图7是本技术实施例提供的另一种数据调用装置的结构示意图,用于实现上述图3至图5中终端的功能。该数据调用装置70可以是终端设备或用于终端设备的装置。用于终端设备的装置可以为终端设备内的芯片系统或芯片。其中,芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
113.数据调用装置70包括至少一个处理器701,用于实现本技术实施例提供的方法中终端的功能。装置70还可以包括通信接口703。在本技术实施例中,处理器701可以是中央处
理单元(central processing unit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。在本技术实施例中,通信接口703可以是收发器、电路、总线、模块或其它类型的通信接口,用于通过传输介质和其它设备进行通信。例如,通信接口703用于装置70中的装置可以和其它设备进行通信。处理器701利用通信接口703收发数据,并用于实现上述方法实施例图3至图5所述的方法。
114.数据调用装置70还可以包括至少一个存储器702,用于存储程序指令和/或数据。存储器702和处理器701耦合。本技术实施例中的耦合是装置、单元或模块之间的间接耦合或通信连接,可以是电性,机械或其它的形式,用于装置、单元或模块之间的信息交互。处理器701可能和存储器702协同操作。处理器701可能执行存储器702中存储的程序指令。所述至少一个存储器中的至少一个可以包括于处理器中。
115.当数据调用装置70开机后,处理器701可以读取存储器702中的软件程序,解释并执行软件程序的指令,处理软件程序的数据。
116.本技术实施例中不限定上述通信接口703、处理器701以及存储器702之间的具体连接介质。本技术实施例在图7中以存储器702、处理器701以及通信接口703之间通过总线704连接,各部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
117.需要说明的是,该通信装置可以执行前述方法实施例中终端的相关步骤,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
118.对于应用于或集成于数据调用装置的各个装置、产品,其包含的各个模块可以都采用电路等硬件的方式实现,不同的模块可以位于终端内同一组件(例如,芯片、电路模块等)或者不同组件中,或者,至少部分模块可以采用软件程序的方式实现,该软件程序运行于终端内部集成的处理器,剩余的(如果有)部分模块可以采用电路等硬件方式实现。
119.上述存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的随机存取存储器(random access memory,ram)可用,例如静态随机存取存储器(static ram,sram)、动态随机存取存储器(dynamic random access memory,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddr sdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synchlink dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,dr ram)。
120.在本技术的实施例中提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被执行时实现前述实施例所提供的数据调用的下载方法。
121.本技术实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得该计算机执行前述实施例所提供的数据处理方法。
122.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1