软件程序升级方法及装置、可读存储介质、电子设备与流程

文档序号:26101508发布日期:2021-07-30 18:12阅读:49来源:国知局
软件程序升级方法及装置、可读存储介质、电子设备与流程

本公开涉及物联网技术领域,具体而言,涉及一种软件程序升级方法、软件程序升级装置、计算机可读存储介质及电子设备。



背景技术:

物联网是在互联网基础上延伸和拓展的系统,是将各种信息传感设备与网络结合起来而形成的一个巨大网络。目前物联网技术已经应用于多个领域,比如,在智能仓储管理领域中,agv(automatedguidedvehicle,自动引导车)系统就是一种物联网系统。

在agv系统中,包括多个agv,各agv通常包括多个功能程序,由于系统计算资源的限制,存在个别的功能程序因无法连接互联网,导致无法升级的情况。

鉴于此,本领域亟需开发一种新的软件程序升级方法及装置。

需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。



技术实现要素:

本公开的目的在于提供一种软件程序升级方法、软件程序升级装置、计算机可读存储介质及电子设备,进而至少在一定程度上可以解决不能连接互联网的功能程序的升级问题。

本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。

根据本公开的一个方面,提供一种软件程序升级方法,应用于物联网系统中的升级程序,所述物联网系统包括服务器和待升级设备,所述待升级设备包括通过工业总线连接的主控制模块和从控制模块,所述主控制模块运行有所述升级程序和第一功能程序,所述从控制模块运行有第二功能程序,所述软件程序升级方法包括:从所述服务器中获取目标功能程序的升级包,并将所述目标功能程序的升级包下载至本地存储器中;在所述目标功能程序为所述第二功能程序时,将所述目标功能程序的升级包通过所述工业总线发送至所述从控制模块;根据所述目标功能程序的升级包对所述第二功能程序进行升级。

在本公开的一些示例性实施例中,根据所述目标功能程序的升级包对所述第二功能程序进行升级,包括:向所述第一功能程序发送升级信息,以使所述第一功能程序在所述主控制模块的显示界面上显示一升级提示信息;响应用户针对所述升级提示信息的确认操作,根据所述确认操作对所述第二功能程序进行升级。

在本公开的一些示例性实施例中,根据所述确认操作对所述第二功能程序进行升级,包括:终止运行所述第二功能程序,并控制所述从控制模块根据所述目标功能程序的升级包启动所述目标功能程序。

在本公开的一些示例性实施例中,在控制所述从控制模块根据所述目标功能程序的升级包启动所述目标功能程序之前,所述方法还包括:在所述本地存储器中删除与所述第二功能程序对应的升级包。

在本公开的一些示例性实施例中,将所述目标功能程序的升级包下载至本地存储器中,包括:获取所述目标功能程序对应的目标版本号,并将所述目标版本号与所述第二功能程序的当前版本号进行比对;若所述目标版本号的优先级高于所述第二功能程序的当前版本号的优先级,则将所述目标功能程序的升级包下载至所述本地存储器中。

在本公开的一些示例性实施例中,从所述服务器中获取目标功能程序的升级包,包括:从所述服务器中获取所述目标功能程序的设备黑名单,所述目标功能程序的设备黑名单包括禁止升级所述目标功能程序的设备标识;若所述目标功能程序的设备黑名单中不包含所述待升级设备的设备标识,则获取所述目标功能程序的升级包。

在本公开的一些示例性实施例中,从所述服务器中获取目标功能程序的升级包,包括:从所述服务器中获取总设备黑名单,所述总设备黑名单包括禁止升级的设备标识;若所述总设备黑名单中不包含所述待升级设备的设备标识,则获取所述目标功能程序对应的设备黑名单;若所述目标功能程序的设备黑名单中不包含所述待升级设备的设备标识,则获取所述目标功能程序的升级包。

在本公开的一些示例性实施例中,所述方法还包括:判断所述目标功能程序的软件标识与所述第二功能程序的软件标识是否相匹配;在所述目标功能程序的软件标识与所述第二功能程序的软件标识相匹配时,判定所述目标功能程序为所述第二功能程序。

在本公开的一些示例性实施例中,所述方法还包括:在所述目标功能程序为所述第一功能程序时,终止运行所述第一功能程序,并控制所述主控制模块根据所述目标功能程序的升级包启动所述目标功能程序。

根据本公开的一个方面,提供一种软件程序升级装置,应用于物联网系统中的升级程序,所述物联网系统包括服务器和待升级设备,所述待升级设备包括通过工业总线连接的主控制模块和从控制模块,所述主控制模块运行有所述升级程序和第一功能程序,所述从控制模块运行有第二功能程序,所述软件程序升级装置包括:程序获取模块,用于从所述服务器中获取目标功能程序的升级包,并将所述目标功能程序的升级包下载至本地存储器中;程序发送模块,用于在所述目标功能程序为所述第二功能程序时,将所述目标功能程序的升级包通过所述工业总线发送至所述从控制模块;程序安装模块,用于根据所述目标功能程序的升级包对所述第二功能程序进行升级。

根据本公开的一个方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述实施例中所述的软件程序升级方法。

根据本公开的一个方面,提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上述实施例中所述的软件程序升级方法。

由上述技术方案可知,本公开示例性实施例中的软件程序升级方法及装置、计算机可读存储介质、电子设备至少具备以下优点和积极效果:

本公开的软件程序升级方法应用于物联网系统中的升级程序,物联网系统包括服务器和待升级设备,待升级设备包括通过工业总线连接的主控制模块和从控制模块,主控制模块运行升级程序和第一功能程序,从控制模块运行第二功能程序。该软件程序升级方法,首先,从服务器中获取目标功能程序的升级包,并将目标功能程序的升级包下载至本地存储器中;然后,在目标功能程序为第二功能程序时,将目标功能程序的升级包通过工业总线发送至从控制模块;最后,根据目标功能程序的升级包对第二功能程序进行升级。本公开中的软件程序升级方法,升级程序可以从服务器中获取目标功能程序,以及可以通过主控制模块和从控制模块之间的工业总线,实现了对无法联网的从控制模块中的功能程序进行升级,提高了软件升级的效率,减少了系统升级的资源消耗。

本公开应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示意性示出了根据本公开的一实施例的物联网系统的架构示意图;

图2示意性示出了根据本公开的一实施例的软件程序升级方法的流程示意图;

图3示意性示出了根据本公开的一实施例的获取目标功能程序的升级包的流程示意图;

图4示意性示出了根据本公开的一具体实施例的agv系统的架构示意图;

图5示意性示出了根据本公开的一具体实施例的软件程序升级方法的流程示意图;

图6示意性示出了根据本公开的一实施例的软件程序升级装置的框图;

图7示意性示出了根据本公开的一实施例的电子设备的模块示意图;

图8示意性示出了根据本公开的一实施例的程序产品示意图。

具体实施方式

现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。

此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本公开的各方面。

附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。

图1示出了可以用于本公开实施例的技术方案的物联网系统的架构示意图,如图1所示,物联网系统100包括服务器110和待升级设备120,待升级设备120包括通过工业总线连接的主控制模块121和从控制模块122,主控制模块121运行有升级程序和第一功能程序,从控制模块122运行有第二功能程序。

其中,物联网系统100具体可以是智能家电系统,也可以是agv系统等等,本公开对物联网系统100的具体应用场景不做具体限定,具体应用场景的变化应该理解为皆属于本公开的保护范围。

在本公开的示例性实施例中,待升级设备120可以是一个或多个,各待升级设备120中的主控制模块121可以通过无线网络与服务器110实现信息交互。各待升级设备120中可以包括一个主控制模块121,以及一个或多个从控制模块122。比如,若物联网系统100为agv系统,待升级设备可以是agv小车,主控制模块121可以为车载控制模块,从控制模块122可以包括与主控制模块121通过工业总线连接的电源管理模块和运动控制模块。另外,通过工业总线连接可以是通过串口或can总线连接。

在本公开的示例性实施例中,服务器110可以是文件服务器410,比如,可以是ftp服务器(filetransferprotocolserver)。可以将功能程序的升级包存储在ftp服务器中,其中,功能程序的升级包可以是将功能程序的代码文件、与功能程序的代码文件对应的md5码、以及功能程序的升级记录进行压缩得到的压缩文件。功能程序的升级记录包括新版本的功能程序与上一版本的功能程序相比,进行修改或新加的功能的详情信息。

将功能程序的升级包存储至ftp服务器的根目录中,ftp服务器的根目录中存储有禁止升级所有功能程序的总设备黑名单。另外,在ftp服务器的根目录中,还可以存储多个功能程序的升级包,在各功能程序的升级包中可以包括禁止升级该功能程序的设备黑名单。

在本公开的示例性实施例中,当待升级设备120开机时,同时启动待升级设备120的升级程序。具体地,可以以带一个参数的方式手动启动升级程序,比如,该参数可以是作为维护密码的特定字符串,待升级设备120在接收到用户手动输入的维护密码之后,将维护密码与预先设定的密码进行匹配,若匹配上,则启动升级程序。

在启动升级程序后,进入设备参数配置模式。在首次启动待升级设备120时,需要用户在主控制模块121的显示界面手动配置初始设备参数,该初始设备参数包括服务器110的ip、服务器110的用户名和密码、待升级设备120的id和待升级设备120上安装的功能程序的当前版本号等。若待升级设备120中未安装功能程序,则在初始参数设定时将功能程序的当前版本号设定为0、0.0或0.0.0等。

升级程序接收到初始设备参数之后,将该初始设备参数存储在待升级设备120的本地存储器中。其中,本地存储器包括非易失性存储器(non-volatilememory,nvm),比如,本地存储器可以是只读存储器(read-onlymemory,rom),还可以是快闪存储器(flashmemory)。

在首次启动待升级设备120之后,每次开机启动待升级设备120时,可以直接在本地存储器中读取并使用设备参数。

在本公开的示例性实施例中,在启动待升级设备120的同时,启动升级程序,该升级程序可以先检测待升级设备120的本地存储器上存放新升级包的文件夹中是否有新升级包。若存放新升级包的文件夹中有新升级包,则根据该新升级包对待升级设备120的功能程序进行升级;若存放新升级包的文件夹中不存在新升级包,则升级程序启动第一功能程序和第二功能程序,以使待升级设备120开始正常运行第一功能程序和第二功能程序。

另外,若存放新升级包的文件夹中不存在新升级包时,还可以从待升级设备120的本地存储器中获取当前各功能程序的当前版本号,并周期性地访问服务器110,检测服务器110上是否存在各功能程序的新升级包。

应该理解,图1中的服务器110和待升级设备120的数目仅仅是示意性的。根据实现需要,可以具有任意数目的服务器110和待升级设备120。比如,服务器110可以是单个服务器或是由多个服务器组成的服务器集群等。

需要说明的是,本公开示例性实施方式的软件程序升级方法一般由待升级设备120中的升级程序执行,相应地,软件程序升级装置一般设置于待升级设备120的升级程序中。但是,在本公开的其它实施例中,也可以由软件程序升级装置执行本公开实施例所提供的软件程序升级方法。

在本领域的相关技术中,为了对物联网系统中的功能程序进行升级,若该功能程序可以连接互联网,则直接对该功能程序进行重新安装并重启就可以达到更新的目的。但是,不能连接互联网的功能程序只能在功能程序运行期间下载升级包,然后在重启设备的时机去安装升级包,再重新启动功能程序,实现对功能程序的更新,增加了程序升级的复杂性。

针对相关技术中存在的问题,在本公开的一个实施例中提出了一种软件程序升级方法,该方法应用于物联网系统中的升级程序。图2示出了软件程序升级方法的流程示意图,如图2所示,该软件程序升级方法至少包括以下步骤:

步骤s210:从服务器中获取目标功能程序的升级包,并将目标功能程序的升级包下载至本地存储器中;

步骤s220:在目标功能程序为第二功能程序时,将目标功能程序的升级包通过工业总线发送至从控制模块;

步骤s230:根据目标功能程序的升级包对第二功能程序进行升级。

本公开实施例中的软件程序升级方法,升级程序可以从服务器中获取目标功能程序,以及可以通过主控制模块和从控制模块之间的工业总线,实现了对无法联网的从控制模块中的功能程序进行升级,提高了软件升级的效率,减少了系统升级的资源消耗。

为了使本公开的技术方案更清晰,接下来对软件程序升级方法的各步骤进行说明。

在步骤s210中,从服务器中获取目标功能程序的升级包,并将目标功能程序的升级包下载至本地存储器中。

在本公开的示例性实施例中,升级程序每隔预设时间段访问一次服务器,检测服务器的根目录中是否存在功能程序的升级包。具体地,可以通过检测根目录中是否有总设备黑名单或设备黑名单来判断是否存在功能程序的升级包;若根目录中存在总设备黑名单或设备黑名单,则判定存在功能程序的升级包;若根目录中不存在总设备黑名单或设备黑名单,则判定不存在功能程序的升级包。

其中,预设时间段可以根据实际情况进行设定,比如,可以设定为1分钟,也可以设定为10分钟,本公开对此不做具体限定。

在本公开的示例性实施例中,从服务器中获取总设备黑名单;若总设备黑名单中不包含待升级设备的设备标识,则获取目标功能程序对应的设备黑名单;若目标功能程序的设备黑名单中不包含待升级设备的设备标识,则获取目标功能程序的升级包。

其中,总设备黑名单中包括禁止升级所有目标功能程序的设备标识,目标功能程序的设备黑名单包括禁止升级目标功能程序的设备标识。

具体地,图3示出了获取目标功能程序的升级包的流程示意图,如图3所示,在步骤s310中,检测服务器的根目录中是否存在总设备黑名单;在步骤s320中,若不存在总设备黑名单,则在预设时间段之后再次执行步骤s310;在步骤s330中,若存在总设备黑名单,则获取该总设备黑名单;在步骤s340中,检测总设备黑名单中是否包含待升级设备的设备标识;在步骤s350中,若总设备黑名单中包含待升级设备标识,则获取目标功能程序对应的设备黑名单;在步骤s360中,检测目标功能程序对应的设备黑名单中是否包含待升级设备的设备标识;在步骤s370中,若目标功能程序对应的设备黑名单中包含待升级设备标识,则获取目标功能程序的升级包。

另外,目标功能程序可以包括多个,分别获取多个目标功能程序对应的设备黑名单,分别判断待升级设备标识是否在各目标功能程序对应的设备黑名单之内。若待升级设备标识不在目标功能程序对应的设备黑名单之内,则获取该目标功能程序的升级包。待升级设备最终可以获取一个或多个目标功能程序的升级包。

本公开实施例的软件程序升级方法通过预先设置的总设备黑名单和各目标功能程序的设备黑名单,控制待升级设备进行目标功能程序的权限,提高了软件程序升级的准确率。

在本公开的示例性实施例中,还可以直接获取目标功能程序的设备黑名单,根据目标功能程序的黑名单判断待升级设备是否可以获取该目标功能程序的升级包。

具体地,从服务器中获取目标功能程序的设备黑名单,检测目标功能程序对应的设备黑名单中是否包含待升级设备标识;若目标功能程序的设备黑名单中不包含待升级设备的设备标识,则获取目标功能程序的升级包。

在本公开的示例性实施例中,在获取目标功能程序的升级包之后,将该目标功能程序的升级包存储至本地存储器中。将目标功能程序的升级包对应的目标版本号与待升级设备中正在运行的功能程序的当前版本号进行比对,判断目标版本号与当前版本号的优先级;若目标版本号的优先级高于当前版本号,则根据目标功能程序的升级包对待升级设备中的功能程序进行升级;若当前版本号的优先级高于目标版本号的优先级,则不进行升级。

其中,在判断目标版本号和当前版本号的优先级之前,先根据目标功能程序的升级包标识在该待升级设备正在运行的多个功能程序中确定与该目标功能程序对应的功能程序。

升级包标识可以包括功能程序的软件标识、功能程序的版本号,还可以包括运行功能程序的设备类别、功能程序的制作时间等。比如,以功能程序softwarea为例,softwarea的升级包标识可以为“softwarea-groupnm-1.2.0-20201201”,功能程序的软件标识为softwarea,功能程序的版本号为1.2.0,运行功能程序的设备类别为groupnm,功能程序的制作时间为20201201。

举例而言,若目标功能程序的目标版本号为1.2.0,目标功能程序对应的正在运行的功能程序的当前版本号为1.1.0,则判定目标版本号的优先级高于当前版本号的优先级。

在本公开的示例性实施例中,可以将目标功能程序的升级包标识中的软件标识分别与第一功能程序和第二功能程序对应的软件标识进行匹配;若目标功能程序的软件标识与第一功能程序的软件标识相匹配,则判定目标功能程序为第一功能程序;若目标功能程序的软件标识与第二功能程序的软件标识相匹配,则判定目标功能程序为第二功能程序。

若目标功能程序为第二功能程序,获取目标功能程序对应的目标版本号,并将目标版本号与第二功能程序的当前版本号进行比对;若目标版本号的优先级高于第二功能程序的当前版本号的优先级,则将目标功能程序的升级包下载至本地存储器中。

若目标功能程序为第一功能程序,获取目标功能程序对应的目标版本号,并将目标版本号与第一功能程序的当前版本号进行比对;若目标版本号的优先级高于第一功能程序的当前版本号的优先级,则将目标功能程序的升级包下载至本地存储器中。

继续参照图2所示,在步骤s220中,在目标功能程序为第二功能程序时,将目标功能程序的升级包通过工业总线发送至从控制模块。

在本公开的示例性实施例中,还可以在将目标功能程序的升级包下载至本地存储器之后,判断目标功能程序的软件标识与第二功能程序的软件标识是否相匹配;在目标功能程序的软件标识与第二功能程序的软件标识相匹配时,判定目标功能程序为第二功能程序;在目标功能程序的软件标识与第一功能程序的软件标识相匹配时,判定目标功能程序为第一功能程序。

在本公开的示例性实施例中,若目标功能程序为第一功能程序,终止运行第一功能程序,并控制主控制模块根据目标功能程序的升级包启动目标功能程序。

具体地,升级程序向第一功能程序发送升级信息,以使第一功能程序在主控制模块的显示界面上显示一升级提示信息;其中,升级信息可以包括目标功能程序的软件标识、目标版本号等;升级提示信息可以包括目标功能程序的软件标识、目标版本号、升级记录,升级提示信息还可以包括一确认按钮和一取消按钮;响应用户在显示界面上针对升级提示信息的确认操作,根据确认操作对第一功能程序进行升级。其中,确认操作可以是用户针对确认按钮的触发操作。

在本公开的示例性实施例中,通过工业总线,并按照通信协议将目标功能程序的升级包传输至第二功能程序。其中,工业总线包括串口、can总线等通信接口,通信协议可以是ymodem协议,本公开对工业总线的类型和通信协议不做具体限定。

继续参照图2所示,在步骤s230中,根据目标功能程序的升级包对第二功能程序进行升级。

在本公开的示例性实施例中,目标功能程序为第二功能程序,升级程序向第一功能程序发送升级信息,以使第一功能程序在主控制模块的显示界面上显示一升级提示信息;响应用户针对升级提示信息的确认操作,根据确认操作对第二功能程序进行升级。

具体地,根据确认操作对第二功能程序进行升级,包括:终止运行第二功能程序,并控制从控制模块根据目标功能程序的升级包启动目标功能程序。

另外,在控制从控制模块根据目标功能程序的升级包启动目标功能程序之前,在本地存储器中删除与第二功能程序对应的升级包。

在本公开的示例性实施例中,在根据目标功能程序的升级包对第二功能程序进行升级之前,对目标功能程序的升级包进行解压,以得到目标功能程序的代码文件、与目标功能程序的代码文件对应的md5码、以及目标功能程序的新版本的升级记录。

并且,由于在将目标功能程序的升级包发送至从控制模块的过程中,可能因为传输错误导致升级包传输不完整的情况。因此,可以对目标功能程序的代码文件对应的md5码进行校验,如果md5码校验成功,则判定该升级包校验通过,确保了升级包的完整性。

其中,md5信息摘要算法(md5message-digestalgorithm)是密码散列函数,可以产生出一个128位(16字节)的散列值(hashvalue),用于确保信息传输完整一致。

另外,还可以在获取目标功能程序的升级包时,获取包含循环冗余校验(cyclicredundancycheck,crc)的文件,待升级设备先计算升级包的crc码,然后与crc校验码文件中的码值进行比较,码值一致的话认为升级包有效。crc与md5类似,是一种算法,可认为每个文件对应唯一的crc值,用于校验文件的完整性。

在本公开的示例性实施例中,在启动待升级设备时,启动升级程序,升级程序若检测到待升级设备的本地存储器上存储有目标功能程序的升级包。则可以先通过将目标功能程序的目标版本号与第一功能程序或第二功能程序的当前版本号进行比对,若目标功能程序的升级包的优先级高于第一功能程序或第二功能程序的当前版本号,则升级程序可以直接根据目标功能程序的升级包对第一功能程序或第二功能程序进行升级,不需要通过用户的确认操作。在对第一功能程序或第二功能程序进行升级之后,再启动第一功能程序和第二功能程序。

在本公开的示例性实施例中,由于物联网系统中存在多个控制模块,各控制模块通过协同完成待升级设备的正常运行。在对待升级设备中的软件程序升级的过程中,需要终止旧版本的运行并启动新版本。在终止某个控制模块上的饿旧版本运行时,可能会导致该控制模块异常,或导致其他控制模块计算节点异常。因此,在对主控制模块或从控制模块上的功能程序进行升级之前,升级程序可以将待升级的功能程序的升级信息通过工业总线发送至主控制模块和从控制模块。在主控制模块或从控制模块接收到升级信息时,判断待升级的功能程序是否为自身运行的功能程序;若待升级的功能程序为自身运行的功能程序,则停用自身控制的外部设备,并启动新版本的功能程序;若待升级的功能程序为其它控制模块的功能程序,则进入等等其它控制模块上的功能程序进行升级的状态,在接收到其它控制块上的功能程序升级完成消息之后,进入正常运行状态。其中,在主控制模块或从控制模块上的功能程序升级完成之后,将升级完成信息通过工业总线发送至主控制模块和从控制模块,以使主控制模块或从控制模块进行正常运行状态。

本实施例的软件程序升级方法,在进行软件程序升级时,不需要重启整个待升级设备即可完成功能程序的升级,减少了系统的资源消耗。

下面结合具体场景对本示例实施方式中的软件程序升级方法进行详细的说明,具体场景为:

(1)该软件程序升级方法应用于agv系统中,图4示出了本具体实施例的agv系统的架构示意图。如图4所示,在agv系统400中,包括文件服务器410和agv小车420,agv小车420包括车载控制模块421、运动控制模块422、电源管理模块423和伺服驱动模块424等,运动控制模块422可以通过工业总线与伺服驱动模块424连接。其中,车载控制模块421上运行有升级程序和第一功能程序softwarea,运动控制模块422上运行有第二功能程序softwareb、电源管理模块423运行有第三功能程序softwarec。各功能程序的版本号可设定为x或x.y或x.y.z的格式,其中,x至主版本号、y是次版本号和z是修订版本号。

(2)假设agv小车420的设备标识为groupnm_idx,其中,groupnm字段标志agv小车420的设备类别,idx为agv小车420在设备类别内的索引值,设备类别可以表示该agv小车420所在地区或所具备的功能。

(3)文件服务器410上部署有ftp服务器,agv小车420对ftp服务器的ftp文件的文件目录有可读、列目录和进入子目录等权限,用户可以对文件服务器410的ftp文件目录有对文件和文件夹进行操作的全部权限。

(4)对agv小车420的功能程序进行升级功能的升级程序为updatertool,updatertool运行在车载控制模块421,设置为在agv小车420开机时自启动。

在文件服务器410侧,操作人员可以预先准备升级包,并将升级包存储至ftp服务器的根目录中。

以功能程序softwarea为例,假设功能程序的版本号命名规则为"x.y.z"的形式,则softwarea的升级包对应的升级包标识可以是softwarea-groupnm-x.y.z-yyyymmdd.bin。其中,yyyymmdd是softwarea的升级包被制作时的时间信息,softwarea的升级包是由softwarea、md5.txt和update.log进行压缩形成的。md5.txt包括softwarea的md5码,update.log包括softwarea的升级记录。

另外,若softwarea是多个文件或是一个文件夹,可以先将多个文件或是一个文件夹压缩成一个压缩文件,然后再将该压缩文件的md5码写入md5.txt。

需要说明的是,升级包标识中的groupnm字段是非必须的,若没有groupnm字段,则设备类别的agv小车420都可以下载和安装该升级包。若带有groupnm字段,则只有在agv小车420的设备类别为groupnm时,才可以下载和安装该升级包。

本实施例通过在升级包标识中加入groupnm字段,可以实现按照设备类别对agv小车420进行升级,提高了软件程序升级的针对性。

在准备好升级包之后,将升级包存储至ftp服务器的根目录中。具体地,在ftp服务器的根目录中存储总设备黑名单,其中,总设备黑名单可以是idnotallowed.txt文件,该文件中的内容是以空格分隔的agv小车420的设备标识。

另外,在根目录中还存储有以softwarea、softwareb或softwarec为名称创建三个文件夹,各文件夹中分别包括softwarea、softwareb或softwarec的一个或多个升级包,以及softwarea、softwareb或softwarec对应的设备黑名单。

其中,若idnotallowed.txt文件不存在或文件内容为空,则表示softwarea、softwareb和softwarec等目录下有新的升级包时,允许所有的agv小车420下载并安装。

在agv小车420侧,在首次启动agv小车420时,需要对与升级相关的设备参数进行初始参数设定。

具体地,以带一个参数的方式手动启动agv小车420和updatertool,启动后升级程序进入参数配置模式。用户可以在车载控制模块421的显示界面手动输入ftp服务器的ip、ftp服务器的用户名与密码、softwarea的当前版本号、softwareb的当前版本号、softwarec的当前版本号和agv小车420的设备标识,用户在确认输入后,这些参数被保存在agv小车420的本地非易失性存储器中。

其中,若当前agv小车420中还没有softwarea、softwareb或softwarec等功能程序,可以在初始参数设定时将其版本号设为0或0.0或0.0.0。

由于agv小车420的本地非易失性存储器中可能存储有上次启动agv小车420时下载但未安装的升级包。因此,在首次启动updatertool时,updatertool通过上次启动agv小车420下载但未安装的升级包,先对agv小车420进行首次升级。

具体地,updatertool先检测本地非易失性存储器中是否存在softwarea、softwareb或softwarec的新升级包,若存在则对新升级包进行解压,并对解压得到的md5文件进行md5校验。在解压并校验通过之后,对新升级包进行安装,并删除存储在本地非易失性存储器中的旧升级包。

updatertool在对agv小车420进行首次升级之后,启动车载控制模块421的第一功能程序softwarea,运动控制模块的第二功能程序softwareb,以及电源管理模块的第三功能程序softwarec。

并且,updatertool在对agv小车420进行首次升级之后,可以每隔预设时间段访问一次ftp服务器,检测ftp服务器中是否存在新升级包,根据检测结果对agv小车420中的功能程序进行升级。

图5示出了本公开具体实施例的软件程序升级方法的流程示意图,如图5所示,该流程至少包括步骤s510至步骤s590,详细介绍如下:

在步骤s510中,访问ftp服务器,检测ftp服务器的根目录中是否存在idnotallowed.txt文件;

在步骤s520中,若根目录中存在idnotallowed.txt文件,则下载idnotallowed.txt文件,判断agv小车420的设备标识是否存在于idnotallowed.txt文件中;

在步骤s530中,若agv小车420的设备标识不存在于idnotallowed.txt文件中,则通过向ftp服务器发送“list”指令,以获取softwarea、softwareb和softwarec的升级包目录;

在步骤s540中,对softwarea、softwareb和softwarec的升级包目录进行解析,以得到softwarea、softwareb和softwarec对应的一个或多个升级包的升级包标识;

另外,若softwarea、softwareb和softwarec的升级包中存在idnotallowed.txt文件,则判断agv小车420的设备标识是否在各升级包对应的idnotallowed.txt文件中,若不在,则获取agv小车420的设备类别groupnm对应的升级包目录。

在步骤s550中,在多个升级包的升级包标识中获取版本号优先级最高的目标版本号,将目标版本号与agv小车420中的功能程序的当前版本号进行对比;

在步骤s560中,若目标版本号的优先级高于当前版本号的优先级,则获取目标版本号对应的升级包,并存储在agv小车420的本地非易失性存储器中对应的功能程序的文件夹中;

其中,本地非易失性存储器中包括softwarea、softwareb和softwarec的文件夹,分别存储有softwarea、softwareb和softwarec对应的升级包,在将softwarea、softwareb或softwarec对应的新升级包存储至对应的文件夹之后,删除文件夹中的就升级包。

在步骤s570中,updatortool以进程间通信(ipc)的方式向agv小车420的第一功能程序发送升级消息,意识该第一功能程序在车载控制模块421的显示界面上发送一升级提示信息;

在步骤s580中,若获取的是softwarea的新升级包,则响应用户针对升级提示信息的确认操作,终止第一功能程序,安装并启动softwarea的新升级包;

在步骤s590中,若获取的是softwareb的新升级包,则响应用户针对升级提示信息的确认操作,通过串口、can总线等通讯接口以ymodem协议,将softwareb的新升级包发送至运动控制模块,并终止第二功能程序,安装并启动softwareb的新升级包;

其中,若获取的是softwarec的新升级包,则响应用户针对升级提示信息的确认操作,通过串口、can总线等通讯接口以ymodem协议,将softwarec的新升级包发送至电源管理模块,并终止第三功能程序,安装并启动softwarec的新升级包。

本领域技术人员可以理解实现上述实施方式的全部或部分步骤被实现为由cpu执行的计算机程序。在该计算机程序被cpu执行时,执行本发明提供的上述方法所限定的上述功能。的程序可以存储于一种计算机可读存储介质中,该存储介质可以是只读存储器,磁盘或光盘等。

此外,需要注意的是,上述附图仅是根据本发明示例性实施方式的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。

以下介绍本公开的装置实施例,可以用于执行本公开上述的软件程序升级方法。对于本公开装置实施例中未披露的细节,请参照本公开上述的软件程序升级方法的实施例。

图6示意性示出了根据本公开的一个实施例的软件程序升级装置的框图。

参照图6所示,根据本公开的一个实施例的软件程序升级装置600,应用于物联网系统中的升级程序,物联网系统包括服务器和待升级设备,待升级设备包括通过工业总线连接的主控制模块和从控制模块,主控制模块运行有升级程序和第一功能程序,从控制模块运行有第二功能程序,软件程序升级装置600包括:程序获取模块601、程序发送模块602和程序安装模块603。具体地:

程序获取模块601,用于从服务器中获取目标功能程序的升级包,并将目标功能程序的升级包下载至本地存储器中;

程序发送模块602,用于在目标功能程序为第二功能程序时,将目标功能程序的升级包通过工业总线发送至从控制模块;

程序安装模块603,用于根据目标功能程序的升级包对第二功能程序进行升级。

在本公开的示例性实施例中,程序安装模块603还可以用于向第一功能程序发送升级信息,以使第一功能程序在主控制模块的显示界面上显示一升级提示信息;响应用户针对升级提示信息的确认操作,根据确认操作对第二功能程序进行升级。

在本公开的示例性实施例中,程序安装模块603还可以用于终止运行第二功能程序,并控制从控制模块根据目标功能程序的升级包启动目标功能程序。

在本公开的示例性实施例中,程序安装模块603还可以用于在控制从控制模块根据目标功能程序的升级包启动目标功能程序之前,在本地存储器中删除与第二功能程序对应的升级包。

在本公开的示例性实施例中,程序获取模块601还可以用于获取目标功能程序对应的目标版本号,并将目标版本号与第二功能程序的当前版本号进行比对;若目标版本号的优先级高于第二功能程序的当前版本号的优先级,则将目标功能程序的升级包下载至本地存储器中。

在本公开的示例性实施例中,程序获取模块601还可以用于从服务器中获取目标功能程序的设备黑名单,目标功能程序的设备黑名单包括禁止升级目标功能程序的设备标识;若目标功能程序的设备黑名单中不包含待升级设备的设备标识,则获取目标功能程序的升级包。

在本公开的示例性实施例中,程序获取模块601还可以用于从服务器中获取总设备黑名单,总设备黑名单包括禁止升级的设备标识;若总设备黑名单中不包含待升级设备的设备标识,则获取目标功能程序对应的设备黑名单;若目标功能程序的设备黑名单中不包含待升级设备的设备标识,则获取目标功能程序的升级包。

本公开的示例性实施例中,软件程序获取装置600还包括程序判断模块(图中未示出),该程序判断模块用于判断目标功能程序的软件标识与第二功能程序的软件标识是否相匹配;在目标功能程序的软件标识与第二功能程序的软件标识相匹配时,判定目标功能程序为第二功能程序。

本公开的示例性实施例中,软件程序安装装置603还可以用于当目标功能程序为第一功能程序时,终止运行第一功能程序,并控制主控制模块根据目标功能程序的升级包启动目标功能程序。

上述各软件程序升级装置的具体细节已经在对应的软件程序升级方法中进行了详细的描述,因此此处不再赘述。

应当注意,尽管在上文详细描述中提及了用于执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。

在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。

所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。

下面参照图7来描述根据本发明的这种实施方式的电子设备700。图7显示的电子设备700仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图7所示,电子设备700以通用计算设备的形式表现。电子设备700的组件可以包括但不限于:上述至少一个处理单元710、上述至少一个存储单元720、连接不同系统组件(包括存储单元720和处理单元710)的总线730、显示单元740。

其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元710执行,使得所述处理单元710执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元710可以执行如图1中所示的步骤s110,从服务器中获取目标功能程序的升级包,并将目标功能程序的升级包下载至本地存储器中;步骤s120,在目标功能程序为第二功能程序时,将目标功能程序的升级包通过工业总线发送至从控制模块;步骤s130,根据目标功能程序的升级包对第二功能程序进行升级。

存储单元720可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)7201和/或高速缓存存储单元7202,还可以进一步包括只读存储单元(rom)7203。

存储单元720还可以包括具有一组(至少一个)程序模块7205的程序/实用工具7204,这样的程序模块7205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

总线730可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。

电子设备700也可以与一个或多个外部设备900(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得观众能与该电子设备700交互的设备通信,和/或与使得该电子设备700能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口750进行。并且,电子设备700还可以通过网络适配器760与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器760通过总线730与电子设备700的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备700使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。

通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。

在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。

参考图8所示,描述了根据本发明的实施方式的用于实现上述方法的程序产品800,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。

计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。

此外,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施例。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1