掌桥专利:专业的专利平台
掌桥专利
首页

基于QT的跨平台和浏览器的外设管理方法及系统

文献发布时间:2023-06-19 16:04:54



技术领域

本发明涉及系统管理技术领域,尤其涉及一种基于QT的跨平台和浏览器的外设管理方法以及一种基于QT的跨平台和浏览器的外设管理系统。

背景技术

目前,大多数的前台应用都是基于windows操作系统,涉及到前台的WEB应用,部分WEB应用由于使用了外设插件,只能都基于windows的IE内核浏览器,不能使用现在流行的其他通用浏览器,如chrome等,更加不能跨操作系统部署,阻碍了应用部署的灵活度。

发明内容

针对上述问题,本发明提供了一种基于QT的跨平台和浏览器的外设管理方法及系统,基于QT的跨平台开发特征,对外提供统一的服务API,向上对接浏览器应用,向下对接各个外设插件,外设插件对接底层的外设设备,可在不同操作系统和浏览器下部署运行,实现局域网内跨平台(操作系统)、跨浏览器的外设管理。

为实现上述目的,本发明提供了一种基于QT的跨平台和浏览器的外设管理方法,包括:

基于所要管理外设所在的操作系统,由HTTP服务器接收局域网内不同浏览器终端的访问请求;

在请求路由器中预设的插件能力列表中寻找与所述访问请求具有相同URL的插件能力;

根据所述请求路由器针对相应插件能力的路由,调用QT的通用加载方法加载所述插件能力对应的插件动态库;

基于所述插件动态库,调用相应的外设。

在上述技术方案中,优选地,所述请求路由器设置有service方法,所述service方法由所述HTTP服务器调用,并根据所述HTTP服务器的访问请求实现统一路由服务。

在上述技术方案中,优选地,所述HTTP服务器的访问请求包括请求类和应答类,所述service方法通过service函数确定访问请求的类型。

在上述技术方案中,优选地,所述插件能力列表由所述请求路由器维护,所述插件能力列表中包括不同插件动态库的路径和对应的URL信息。

在上述技术方案中,优选地,所述请求路由器初始化过程中,对所述插件能力列表进行初始化,针对不同操作系统的插件动态库,采用条件分支方式的方式进行不同方式的初始化。

本发明还提出一种基于QT的跨平台和浏览器的外设管理系统,应用如上述技术方案中任一项公开的基于QT的跨平台和浏览器的外设管理方法,包括:

请求接收模块,用于基于所要管理外设所在的操作系统,由HTTP服务器接收局域网内不同浏览器终端的访问请求;

插件管理模块,用于在请求路由器中预设的插件能力列表中寻找与所述访问请求具有相同URL的插件能力;

动态库加载模块,用于根据所述请求路由器针对相应插件能力的路由,调用QT的通用加载方法加载所述插件能力对应的插件动态库;

外设调用模块,用于基于所述插件动态库,调用相应的外设。

在上述技术方案中,优选地,所述请求接收模块通过所述HTTP服务器调用所述请求路由器中设置的service方法,并利用该service方法针对所述HTTP服务器的访问请求实现统一路由。

在上述技术方案中,优选地,所述HTTP服务器的访问请求包括请求类和应答类,所述service方法通过service函数确定访问请求的类型。

在上述技术方案中,优选地,所述插件能力列表由所述请求路由器维护,所述插件能力列表中包括不同插件动态库的路径和对应的URL信息。

在上述技术方案中,优选地,所述请求路由器初始化过程中,对所述插件能力列表进行初始化,针对不同操作系统的插件动态库,采用条件分支方式的方式进行不同方式的初始化。

与现有技术相比,本发明的有益效果为:基于QT的跨平台开发特征,对外提供统一的服务API,向上对接浏览器应用,向下对接各个外设插件,外设插件对接底层的外设设备,可在不同操作系统和浏览器下部署运行,实现局域网内跨平台(操作系统)、跨浏览器的外设管理。

附图说明

图1为本发明一种实施例公开的基于QT的跨平台和浏览器的外设管理方法的流程示意图;

图2为本发明一种实施例公开的基于QT的跨平台和浏览器的外设管理系统的模块示意图。

图中,各组件与附图标记之间的对应关系为:

11.请求接收模块,12.插件管理模块,13.动态库加载模块,14.外设调用模块。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

下面结合附图对本发明做进一步的详细描述:

如图1所示,根据本发明提供的一种基于QT的跨平台和浏览器的外设管理方法,包括:

基于所要管理外设所在的操作系统,由HTTP服务器接收局域网内不同浏览器终端的访问请求;

在请求路由器中预设的插件能力列表中寻找与访问请求具有相同URL的插件能力;

根据请求路由器针对相应插件能力的路由,调用QT的通用加载方法加载插件能力对应的插件动态库;

基于插件动态库,调用相应的外设。

在该实施方式中,基于QT的跨平台开发特征,对外提供统一的服务API,向上对接浏览器应用,向下对接各个外设插件,外设插件对接底层的外设设备,可在不同操作系统和浏览器下部署运行,实现局域网内跨平台(操作系统)、跨浏览器的外设管理。

具体的,QT是一个跨操作系统开发的开发框架,它抽象了操作系统的API,对外提供统一的跨平台的API,基于QT框架即可开发跨平台的应用。外设插件是一种用于驱动外设设备运行的软件组件,它依附于浏览器运行,和浏览器进程在一个进程空间,由浏览器上运行的HTML页面调用。外设设备为打印机、高拍仪、小键盘、扫描枪、签名板等。

该方法采用分层应用架构,外设管理层向上对接浏览器应用,向下对接各个外设插件,再由外设插件对接底层的外设设备,实现局域网内跨平台(操作系统)、跨浏览器的外设管理。具体地,在一个局域网内,把其中一个终端作为服务器,启动营业外设管理程序,同时提供给本终端和其他终端访问,进一步共享同一个终端的外设设备。

其中,请求路由器负责接收HTTP服务器转发过来的请求,负责管理所有的插件能力(PluginController)。具体地,插件能力的管理方法为:在RequestHandler中维护一个插件能力列表(pluginList),参考代码如下:

std::listpluginList。

在上述实施方式中,优选地,请求路由器RequestHandler设置有service方法,service方法由HTTP服务器调用,并根据HTTP服务器的访问请求,由RequestHandler.service方法统一路由,其路由方法为:循环判断插件能力列表中的URL前缀pluginList.urlPrefix是否和HTTP服务器调用的URL前缀相同,如果相同就调用此插件能力,参考代码如下:

具体地,所有实例化的插件能力Plugin Controller都继承于插件能力基类BaseController,BaseController类包含必要的通用通讯函数、类加载函数和界面监控函数。

插件能力Plugin Controller的关键成员变量包括:

插件动态库(libName):用来指定插件的操作系统动态库的路径;

URL前缀(urlPrefix):必须以斜线'/'开头,用来路由HTTP的请求。

在加载插件动态库过程中,采用loadLibrary方法,无参数,参考以下代码实现方法:

在该方法中,调用QT的通用加载动态库方法,来加载动态库,参数为PluginController1中的libName变量,按照该方法,循环加载所有的动态库。

其中,插件动态库是“外设设备提供者”提供给特定操作系统平台使用的动态库,在windows平台一般以“dll”方式提供,在linux平台下以“so”格式提供。

在上述实施方式中,优选地,HTTP服务器的访问请求包括请求类HttpRequest(如上述代码中的request)和应答类HttpResponse(如上述代码中的response),service方法通过service函数确定访问请求的类型,参考函数定义如下:

void service(HttpRequest request,HttpResponse response)

{

...

}

在上述实施方式中,优选地,插件能力列表由请求路由器维护,插件能力列表中包括不同插件动态库的路径和对应的URL信息。

在上述实施方式中,优选地,请求路由器初始化过程中,对插件能力列表pluginList进行初始化,参考代码如下;

pluginList.push_back(new PluginController1("动态链接库路径1","/URL前缀1",...)));

pluginList.push_back(new PluginController2("动态链接库路径2","/URL前缀2",...)));

...

针对不同操作系统,插件动态库的路径可能不同,可采用条件分支方式的方式进行不同方式的初始化,如C++语言可以使用宏定义来判断是哪个操作系统,参考以下方式:

#ifdef WIN64

pluginList.push_back(new PluginController1("windows动态链接库路径1","/URL前缀1",...)));

#else

pluginList.push_back(new PluginController1("linux动态链接库路径1","/URL前缀1",...)));

#endif

这样就可以实现跨平台的动态链接库管理。

根据上述实施方式公开的基于QT的跨平台和浏览器的外设管理方法,在具体实施过程中,针对不同的操作系统,分别采用不同的打包和运行方式如下:

(1)windows打包和运行:

①使用QT的binarycreator工具打包生成安装包,其中,binarycreator的详细用法,参考官方文档;

②安装包的执行文件,建议增加版本号,模式为“bspm-%compileVersion%-amd64.exe”,其中compileVersion为编译版本号,amd64表示64位版本。

(2)linux打包和运行

①使用linux自带的dpkg打包工具进行打包,生成debian格式的安装包。Debian安装包的详细制作文档,参考官方文档。

②linux下安装包模板为“bspm-${compileVersion}-linux-amd64.deb”。

基于上述外设管理方法,具有以下有益效果:

1.可在windows或linux操作系统下部署运行;

2.可在所有的通用浏览器下部署运行;

3.规整外设插件的对外接口协议,统一向外提供标准的REST协议格式;

4.在使用外设插件前,可增加统一认证策略,增加安全性;

5.统一采集和监控各外设的运行情况,并集中图形化展示;

6.统一管理外设的在线升级。

如图2所示,本发明还提出一种基于QT的跨平台和浏览器的外设管理系统,应用如上述实施方式中任一项公开的基于QT的跨平台和浏览器的外设管理方法,包括:

请求接收模块11,用于基于所要管理外设所在的操作系统,由HTTP服务器接收局域网内不同浏览器终端的访问请求;

插件管理模块12,用于在请求路由器中预设的插件能力列表中寻找与访问请求具有相同URL的插件能力;

动态库加载模块13,用于根据请求路由器针对相应插件能力的路由,调用QT的通用加载方法加载插件能力对应的插件动态库;

外设调用模块14,用于基于插件动态库,调用相应的外设。

在该实施方式中,基于QT的跨平台开发特征,对外提供统一的服务API,向上对接浏览器应用,向下对接各个外设插件,外设插件对接底层的外设设备,可在不同操作系统和浏览器下部署运行,实现局域网内跨平台(操作系统)、跨浏览器的外设管理。

在上述实施方式中,优选地,请求接收模块11通过HTTP服务器调用请求路由器中设置的service方法,并利用该service方法针对HTTP服务器的访问请求实现统一路由。

在上述实施方式中,优选地,HTTP服务器的访问请求包括请求类和应答类,service方法通过service函数确定访问请求的类型。

在上述实施方式中,优选地,插件能力列表由请求路由器维护,插件能力列表中包括不同插件动态库的路径和对应的URL信息。

在上述实施方式中,优选地,请求路由器初始化过程中,对插件能力列表进行初始化,针对不同操作系统的插件动态库,采用条件分支方式的方式进行不同方式的初始化。

根据上述实施方式公开的基于QT的跨平台和浏览器的外设管理系统,其各模块实现其功能的方式分别与上述实施方式公开的基于QT的跨平台和浏览器的外设管理方法中的各步骤一致,具体步骤参见上述实施方式,在此不再赘述。

以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

相关技术
  • 基于QT的跨平台和浏览器的外设管理方法及系统
  • 一种跨平台的浏览器外设调用方法
技术分类

06120114695260