一种基于动态库加载实现设备自动适配方法以及系统技术方案

技术编号:38677520 阅读:16 留言:0更新日期:2023-09-02 22:52
本发明专利技术适用于计算机领域,提供了一种基于动态库加载实现设备自动适配方法,所述方法包括:识别目标进程的进程使用时长和库调取数量,当进程使用时长和库调取频率分别达到对应的预设使用参数时,执行第一动态库加载方式,否则,执行第二动态库加载方式;所述执行第一动态库加载方式包括:根据平台下发的动态库升级命令生成http请求,根据http请求下载动态库文件;所述执行第二动态库加载方式包括:获取接入的新设备的心跳信息,所述心跳信息包括至少两个同类的新设备的集成心跳信息,本申请实施例的技术方案,实现了不同条件下的设备的识别使用,可以避免消耗大量宝贵的内存和磁盘空间。间。间。

【技术实现步骤摘要】
一种基于动态库加载实现设备自动适配方法以及系统


[0001]本专利技术属于计算机领域,尤其涉及一种基于动态库加载实现设备自动适配方法以及系统。

技术介绍

[0002]设备在接入服务器的过程中,目前是通过调用静态库的方式实现设备自动适配,库被打包到可执行程序中,静态库的代码在编译过程中已经被载入可执行程序,因此占用内存较大。

技术实现思路

[0003]本专利技术实施例的目的在于提供一种基于动态库加载实现设备自动适配方法以及系统,旨在解决上述
技术介绍
中提出的问题。
[0004]本专利技术实施例是这样实现的,一方面,一种基于动态库加载实现设备自动适配方法,所述方法包括以下步骤:识别目标进程的进程使用时长和库调取数量,当进程使用时长和库调取频率分别达到对应的预设使用参数时,执行第一动态库加载方式,否则,执行第二动态库加载方式;所述执行第一动态库加载方式包括:根据平台下发的动态库升级命令生成http请求,根据http请求下载动态库文件;所述执行第二动态库加载方式包括:获取接入的新设备的心跳信息,所述心跳信息包括至少两个同类的新设备的集成心跳信息,根据接入的新设备的心跳信息调取库代码,根据库代码动态加载so文件,加载完毕后通过dlfree的方式释放库代码占用的内存。
[0005]作为本专利技术的进一步方案,所述预设使用参数分别包括预设使用时长和预设频率。
[0006]作为本专利技术的再进一步方案,所述执行第一动态库加载方式具体包括:监听平台主动下发的动态库升级命令,获取编译所对应的动态链接库;根据获取的动态链接库和预接入设备标识集生成http请求;向平台发送http请求,以下载动态库文件。
[0007]作为本专利技术的又进一步方案,所述执行第一动态库加载方式具体还包括:安装以及运行动态库文件,并在安装成功后将安装成功的消息通知到平台,否则,执行安装失败的消息回滚。
[0008]作为本专利技术的进一步方案,所述执行第二动态库加载方式具体包括:拉取心跳包,以检测是否存在新设备请求接入;当存在新设备请求接入时,检测本地是否存在与新设备相匹配的驱动包;若否,则通过dlopen和dlfree的方式拉取相匹配的驱动包,根据相匹配的驱动包加载so文件;若是,则直接根据相匹配的驱动包加载so文件。
[0009]作为本专利技术的进一步方案,在根据库代码动态加载so文件之后,所述方法还包括:根据so文件获取设备文件,将包括设备文件信息的列表信息发送给平台。
[0010]作为本专利技术的进一步方案,另一方面,一种基于动态库加载实现设备自动适配系统,所述系统包括:服务器,所述服务器用于识别目标进程的进程使用时长和库调取数量,当进程使用时长和库调取频率分别达到对应的预设使用参数时,根据平台下发的动态库升级命令执行第一动态库加载方式,否则,执行第二动态库加载方式,所述执行第二动态库加载方式包括:获取接入的新设备的心跳信息,所述心跳信息包括至少两个同类的新设备的集成心跳信息;所述服务器包括网关,所述网关用于:根据平台下发的动态库升级命令生成http请求,向平台发送http请求,以下载动态库文件;所述网关还用于:根据接入的新设备的心跳信息调取库代码,根据库代码动态从平台加载so文件,加载完毕后通过dlfree的方式释放库代码占用的内存;平台,用于下发动态库升级命令给服务器,还用于接收网关发送的http请求,以及提供动态库文件和so文件。
[0011]本专利技术实施例提供的一种基于动态库加载实现设备自动适配方法以及系统,通过第一动态库加载方式和第二动态库加载方式在不同条件下的使用,从项目管理的角度来说,第一种可以避免频繁重复调用,对于第二种而言,多种设备的同类功能可以封装成一个动态库,每个库是独立的,可以多人同时开发,提高了代码的扩展性、维护性。由此,对于两个同类的新设备而言,通过集成心跳信息,可以实现对库代码动态加载so文件的同步调取,提高调取的效率,由于调取是动态的,因而不会占用系统其他进程太多的必要使用内存,从而可以避免消耗大量宝贵的内存和磁盘空间。
附图说明
[0012]图1是一种基于动态库加载实现设备自动适配方法的主流程图。
[0013]图2是一种基于动态库加载实现设备自动适配方法中执行第一动态库加载方式的流程图。
[0014]图3是一种基于动态库加载实现设备自动适配方法中执行第二动态库加载方式的流程图。
具体实施方式
[0015]为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。
[0016]以下结合具体实施例对本专利技术的具体实现进行详细描述。
[0017]本专利技术提供的一种基于动态库加载实现设备自动适配方法以及系统,解决了
技术介绍
中的技术问题。
[0018]如图1所示,为本专利技术的一个实施例提供的一种基于动态库加载实现设备自动适配方法的主流程图,所述一种基于动态库加载实现设备自动适配方法包括:
步骤S10:识别目标进程的进程使用时长和库调取数量;步骤S11:当进程使用时长和库调取频率分别达到对应的预设使用参数时,执行第一动态库加载方式,否则,执行第二动态库加载方式;示例性的,所述预设使用参数分别包括预设使用时长和预设频率;其中,所述执行第一动态库加载方式包括:根据平台下发的动态库升级命令生成http请求,根据http请求下载动态库文件。就该种而言,编译时,指明所依赖的动态链接库,这样loader可以在程序启动的时候,将所有的动态链接映射到内存中,可以避免频繁重复调用;所述执行第二动态库加载方式包括:获取接入的新设备的心跳信息,所述心跳信息包括至少两个同类的新设备的集成心跳信息,根据接入的新设备的心跳信息调取库代码,根据库代码动态加载so文件,加载完毕后通过dlfree的方式释放库代码占用的内存。
[0019]进程是指在系统中正在运行的一个应用程序;线程是系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元。对于操作系统而言,其调度单元是线程。一个进程至少包括一个线程,通常将该线程称为主线程。一个进程从主线程的执行开始进而创建一个或多个附加线程,就是所谓基于多线程的多任务。
[0020]动态库文件中包括若干库函数,这些库函数是用来驱动公路设备的,预先编辑不同设备的多种库函数,只要设备接入到网络中,就能自动的感知到是哪个厂家,哪个型号的设备接入进来了,并且在调用后可以对驱动设备按照预设的步骤进行工作;从项目管理的角度来说,第一种可以避免频繁重复调用,对于第二种而言,多种设备的同类功能可以封装成一个动态库,每个库是独立的,可以多人同时开发,提高了代码的扩展性、维护性。由此,对于两个同类的新设备而言,通过集成心跳信息,可以实现对库代码动态加载so文件的同步调取,提高调取的效率,由于调取是动态的,因而不会占用系统其他进程太多的必要使用内存,从而可以避免消耗大量宝贵的内存和磁盘空间。
[0021]如图2所示,作为本专利技术的一种本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于动态库加载实现设备自动适配方法,其特征在于,所述方法包括:识别目标进程的进程使用时长和库调取数量,当进程使用时长和库调取频率分别达到对应的预设使用参数时,执行第一动态库加载方式,否则,执行第二动态库加载方式;所述执行第一动态库加载方式包括:根据平台下发的动态库升级命令生成http请求,根据http请求下载动态库文件;所述执行第二动态库加载方式包括:获取接入的新设备的心跳信息,所述心跳信息包括至少两个同类的新设备的集成心跳信息,根据接入的新设备的心跳信息调取库代码,根据库代码动态加载so文件,加载完毕后通过dlfree的方式释放库代码占用的内存。2.根据权利要求1所述的基于动态库加载实现设备自动适配方法,其特征在于,所述预设使用参数分别包括预设使用时长和预设频率。3.根据权利要求1所述的基于动态库加载实现设备自动适配方法,其特征在于,所述执行第一动态库加载方式具体包括:监听平台主动下发的动态库升级命令,获取编译所对应的动态链接库;根据获取的动态链接库和预接入设备标识集生成http请求;向平台发送http请求,以下载动态库文件。4.根据权利要求1或3所述的基于动态库加载实现设备自动适配方法,其特征在于,所述执行第一动态库加载方式具体还包括:安装以及运行动态库文件,并在安装成功后将安装成功的消息通知到平台,否则,执行安装失败的消息回滚。5.根据权利要求1所述的基于动态库加载实现设备自动适配方法,其特征在于,所述执行第...

【专利技术属性】
技术研发人员:廖一兵李天兵成学磊丁静旻熊君周昊波郭金亮满凤旺王辉周雪李成珲宫彦军
申请(专利权)人:北京瑞华赢科技发展股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1