发明内容
本发明的目的在于提供一种3G无线上网卡的识别方法、系统及电子设备,旨在解决现有技术存在的仅仅基于厂商ID和产品ID去检索转换命令,会因为具有不同的厂商ID和产品ID而不能兼容,造成无法使用的情况;另外采用手动制作模式转换文件,会对3G无线上网卡兼容性的维护工作变得异常繁琐。
本发明是这样实现的,一种3G无线上网卡的识别方法,所述方法包括以下步骤:
当插入3G无线上网卡后,电子设备在模式转换索引表中根据该3G无线上网卡的厂商ID及产品ID查找对应的转换命令;
如果查找到转换命令,则表明3G无线上网卡识别成功,进行拨号上网;
如果没有查找到转换命令,则电子设备尝试模式转换索引表中是否有匹配所述3G无线上网卡的转换命令;
如果在所述模式转换索引表中有匹配的转换命令,则更新模式转换索引表,并向服务器发送更新信息;
如果在所述模式转换索引表中没有匹配的转换命令,则电子设备获取用户上传的转换命令,并向服务器发送更新信息。
本发明的另一目的在于提供一种3G无线上网卡的识别系统,所述系统包括:
查找模块,用于当插入3G无线上网卡后,在模式转换索引表中根据该3G无线上网卡的厂商ID及产品ID查找对应的转换命令;
确认模块,用于如果查找到转换命令,则表明3G无线上网卡识别成功,进行拨号上网;
匹配模块,用于如果没有查找到转换命令,则电子设备尝试模式转换索引表中是否有匹配所述3G无线上网卡的转换命令;
更新模块,用于如果在所述模式转换索引表中有匹配的转换命令,则更新模式转换索引表,并通过发送模块向服务器发送更新信息;
获取模块,用于如果在所述模式转换索引表中没有匹配的转换命令,则获取用户上传的转换命令,并通过发送模块向服务器发送更新信息。
本发明的另一目的在于提供一种包括上面所述的3G无线上网卡的识别系统的电子设备。
在本发明中,当3G无线上网卡连接到3G电子设备时,3G电子设备会根据3G无线上网卡的厂商ID和产品ID从模式转换索引表中查找该3G无线上网卡的转换命令。当无法找到厂商ID和产品ID对应的转换命令时电子设备会智能搜索转换命令,尝试。当电子设备找到正确的转换命令时,会更新模式转换索引表,并向远程服务器发送信息更新。如果电子设备无法找到合适的转换命令,则需要用户上传转换命令文件,上传的命令如果正确则更新模式转换索引表,同时向远端服务器发送信息更新。电子设备会定期查询远端服务器是否有数据更新,若是,则将最新的模式转换索引表和打分因子下载到本地使用。本发明采用分布式方法动态更新信息,在电子设备和服务器端协同利用智能算法提升3G无线上网卡的兼容能力,大大提高了维护兼容性的效率同时大大减少了人力消耗。
具体实施方式
为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
请参阅图1,为本发明实施例提供的3G无线上网卡的识别方法的实现流程,其包括以下步骤:
在步骤S101中,当插入3G无线上网卡后,电子设备在模式转换索引表中根据该3G无线上网卡的厂商ID及产品ID查找对应的转换命令;
在本发明实施例中,所述电子设备可以是路由器,计算机,移动终端等。
在步骤S102中,如果查找到转换命令,则表明3G无线上网卡识别成功,进行拨号上网;
在步骤S103中,如果没有查找到转换命令,则电子设备尝试模式转换索引表中是否有匹配所述3G无线上网卡的转换命令;
在本发明实施例中,电子设备尝试模式转换索引表中是否有匹配所述3G无线上网卡的转换命令的过程中,会对所有的转换命令进行打分,按照分值从高到低进行尝试,直到找到有效的转换命令,如果失败则进行手动切换。
在步骤S104中,如果在所述模式转换索引表中有匹配的转换命令,则更新模式转换索引表,并向服务器发送更新信息;
在本发明实施例中,所述更新模式转换索引表的步骤,具体为:将所述3G无线上网卡的厂商ID及产品ID加入到模式转换索引表的对应位置,即通过厂商ID及产品ID便可以索引到正确的转换命令。
其中,更新信息中包括:3G无线上网卡的厂商ID和产品ID以及其对应的转换命令。
在步骤S105中,如果在所述模式转换索引表中没有匹配的转换命令,则电子设备获取用户上传的转换命令,并向服务器发送更新信息。
在本发明实施例中,电子设备获取用户上传的匹配所述3G无线上网卡的转换命令后,将所述3G无线上网卡的厂商ID、产品ID及转换命令加入到模式转换索引表的对应位置,即通过厂商ID及产品ID便可以索引到正确的转换命令。
在本发明实施例中,更新信息中包括:3G无线上网卡的厂商ID和产品ID以及其对应的转换命令。
在本发明实施例中,在服务器端维护了一个全局的模式转换索引表和打分因子,所有3G电子设备模式转换索引表的更新都会通知服务器,服务器在预设时间间隔会利用遗传算法【1,2】重新计算打分因子。同时所有3G电子设备每隔一定时间会查询服务器的模式转换索引表和打分因子是否有更新,若是,则更新本地模式转换索引表和打分因子。
作为本发明一实施例,为了让其他用户的3G无线上网卡能成功匹配到相应的转换命令,且避免电子设备需要尝试模式转换索引表中的转换命令,或用户需要手动上传转换命令的问题,所述方法还包括以下步骤:
电子设备在预设时间间隔从服务器下载最新版本的模式转换索引表和打分因子,电子设备根据最新版本的所述模式转换索引表和打分因子,更新本地的模式转换索引表和打分因子。
在本发明实施例中,模式转换索引表是通过三个数组来实现的。首先需要建立厂商ID数组,简记为vid_array,考虑到实际生产3G无线上网卡的厂家数目,数组大小预设为100。用c语言形式表示的厂商ID数组结构如下:
其中struct pid_struct是产品ID数组结构。考虑到每个厂家实际存在的无线上网卡产品种类,将产品ID数组大小预设为500。由于存在即使厂商ID和产品ID的组合相同,但是使用的转换命令也有不同的情况,因此将产品ID数组结构中的转换命令索引定义为指针。产品ID数组简记为pid_array,用c语言表示如下:
struct cmd_chain中的cmd_index记录了转换命令在转换命令数组中的位置。第三个数组是转换命令数组,考虑到实际使用的转换命令的个数,将转换命令数组预留为500,简记为cmd_array。由于实际使用的转换命令都是32字节的字符串,因此将cmd_array设计如下:
通过上述三个数组即可建立模式转换索引表。
模式转换索引表的使用:
模式转换索引表分为正向检索、反向遍历两种操作。正向检索的操作方法是首先通过3G无线上网卡内部的厂商ID(vid)查找vid_array,然后在vid_array指向的pid_array中对3G无线上网卡的产品ID(pid)进行查找。找到正确的产品ID后则根据转换命令链表去寻找正确的转换命令。反向遍历的方法是在转换命令数组中根据打分规则顺序遍历转换命令,如果找到成功的转换命令,则将此转换命令对应的索引根据3G无线上网卡的厂商ID和产品ID对vid_array和pid_array进行更新。
模式转换索引表占用资源分析:
通过上述的分析,最多将会占用的存储资源可用下述公式进行计算。
Memory_size=sizeof(struct vid_struct)*VID_ARRAY_SIZE*sizeof(structpid_struct)*PID_ARRAY_SIZE+sizeof(struct cmd_struct)*CMD_ARRAY_SIZE+C
其中sizeof()表示里面结构体的大小,VID_ARRAY_SIZE、PID_ARRAY_SIZE和CMD_ARRAY_SIZE分别设为100、500和500,常数C表示各结构体中的链表内容,因为链表的大小是不能预先确定的,因此用C来表示。于是占用的最大存储空间是2.4k+C,实际使用中C不会超过5k。这种电子设备产品的资源开销中是可以接受的。
在本发明实施例中,转换命令打分规则:
定义cn、pn、cf、pf四个参数,其中cn表示共用某一转换命令的具备不同pid、vid组合的3G无线上网卡的总个数,pn表示共用某一转换命令的具备与待识别设备相同vid的3G无线上网卡的总个数。cf、pf都是比例因子,又称为打分因子,且满足cf+pf=1。
打分规则定义为
Score=cn·cf+pn·pf
假设在预设时间间隔内分布在世界各处的n个电子设备发送给服务器的信息记为三元组(vid,pid,cmd)i,其中i=1,...,n。
服务器端初始cf和pf分别为0.3和0.7,则对这n个三元组应用遗传算法进行训练,得到最佳的cf和pf,使得采用该组cf和pf可以使n个客户端的有效转换命令得到最高的分值,从而电子设备可以以最少的尝试次数获得有效转换命令。
由上所述可知,遗传算法对cf和pf进行编码作为染色体。以si(i=1,2,...,n)作为第i个电子设备得到分值,则遗传算法染色体个体适应度的计算公式如下:
其中s为n个电子设备分值的平均值。
请参阅图2,为本发明实施例提供的3G无线上网卡的识别系统的结构。为了便于说明,仅示出了与本发明实施例相关的部分。所述3G无线上网卡的识别系统可以是内置于电子设备中的软件单元、硬件单元或者是软硬件结合的单元。
所述3G无线上网卡的识别系统包括:查找模块101、确认模块102、匹配模块103、更新模块104、获取模块105、以及发送模块106。
查找模块101,用于当插入3G无线上网卡后,在模式转换索引表中根据该3G无线上网卡的厂商ID及产品ID查找对应的转换命令。
确认模块102,用于如果查找到转换命令,则表明3G无线上网卡识别成功,进行拨号上网。
匹配模块103,用于如果没有查找到转换命令,则电子设备尝试模式转换索引表中是否有匹配所述3G无线上网卡的转换命令。
更新模块104,用于如果在所述模式转换索引表中有匹配的转换命令,则更新模式转换索引表,并通过发送模块106向服务器发送更新信息。
获取模块105,用于如果在所述模式转换索引表中没有匹配的转换命令,则获取用户上传的转换命令,并通过发送模块106向服务器发送更新信息。
在本发明实施例中,所述更新模块104具体为:加入模块。
所述加入模块,用于将所述3G无线上网卡的厂商ID及产品ID加入到模式转换索引表的对应位置,即通过厂商ID及产品ID便可以索引到正确的转换命令。
在本发明实施例中,所述加入模块,还用于获取用户上传的匹配所述3G无线上网卡的转换命令后,将所述3G无线上网卡的厂商ID、产品ID及转换命令加入到模式转换索引表的对应位置,即通过厂商ID及产品ID便可以索引到正确的转换命令。
作为本发明一实施例,所述系统还包括:下载模块。
所述下载模块,用于在预设时间间隔从服务器下载最新版本的模式转换索引表和打分因子。
所述更新模块,还用于根据最新版本的所述模式转换索引表和打分因子,更新本地的模式转换索引表和打分因子。
综上所述,本发明实施例当3G无线上网卡连接到3G电子设备时,3G电子设备会根据3G无线上网卡的厂商ID和产品ID从模式转换索引表中查找该3G无线上网卡的转换命令。当无法找到厂商ID和产品ID对应的转换命令时电子设备会智能搜索转换命令,尝试。当电子设备找到正确的转换命令时,会更新模式转换索引表,并向远程服务器发送信息更新。如果电子设备无法找到合适的转换命令,则需要手动上传转换命令文件,上传的命令如果正确则更新模式转换索引表,同时向远端服务器发送信息更新。电子设备会定期查询远端服务器是否有数据更新,若是,则将最新的模式转换索引表和打分因子下载到本地使用。本发明采用分布式方法动态更新信息,在电子设备和服务器端协同利用智能算法提升3G无线上网卡的兼容能力,大大提高了维护兼容性的效率同时大大减少了人力消耗。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘、光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。