本发明涉及数据同步领域,尤其涉及一种远程同步方法、装置及系统。
背景技术:
将远程设备上的数据和状态同步到本地设备上并进行操作,需要考虑数据有效性以及各种状态之间的同步互斥关系等问题,通常需要编写大量同步代码,且一旦出错,难以定位问题。
技术实现要素:
本发明实施例提供了一种远程同步方法、装置及系统,以降低处理复杂度和提高系统稳定性。
本发明第一方面提供一种远程同步方法,包括:
将监听环境关联到对应的监听对象,其中,所述监听对象为第一设备的状态信息;
在所述监听环境中添加监听器,其中,所述监听器用于监听所述监听对象的变化;
当所述监听对象发生变化时,通知第二设备。
结合本发明第一方面,本发明第一方面第一实施方式中,所述监听环境包括上下文context,所述context是用于实现运行时runtime系统所保存的信息。
结合本发明第一方面或第一方面第一实施方式,本发明第一方面第二实施方式中,所述第一设备为所述第二设备的远程设备,所述第一设备与所述第二设备无线连接。
结合本发明第一方面或第一方面第一实施方式,本发明第一方面第三实施方式中,所述第一设备与所述第二设备有线连接。
结合本发明第一方面至第一方面第三实施方式中任一种实施方式,本发明第一方面第四实施方式中,所述第一设备包括以下设备的一种或几种:可移动物体、载体、承载物。
结合本发明第一方面第四实施方式,本发明第一方面第五实施方式中,所述可移动物体包括无人机,所述载体包括有指向和稳定功能的云台,其中承载物包括相机。
结合本发明第一方面第五实施方式,本发明第一方面第六实施方式中,所述监听对象包括以下的一种或几种:所述无人机的状态信息、所述无人机的组件的状态信息、所述云台的状态信息、所述相机的状态信息。
结合本发明第一方面第六实施方式,本发明第一方面第七实施方式中,所述无人机的状态信息包括以下一种或几种:无人机的高度、无人机的位置、无人机的角度、无人机的速度;所述无人机的组件的状态信息包括:飞控的状态信息;所述云台的状态信息包括:云台的角度;所述相机的状态信息包括以下一种或几种:感光度、快门速度、曝光补偿、光圈。
结合本发明第一方面至第一方面第七实施方式中任一实施方式,本发明第一方面第八实施方式中,所述第二设备包括以下设备的一种或几种:地面站、遥控器、手机、平板电脑、个人电脑、无人机。
结合本发明第一方面至第一方面第八实施方式中任一实施方式,本发明第一方面第九实施方式中,所述在所述监听环境中添加监听器,包括:将所述监听器和监听器的指针信息添加到所述监听环境中。
结合本发明第一方面至第一方面第九实施方式中任一实施方式,本发明第一方面第十实施方式中,将所述监听器和所述监听对象的指针信息添加到所述监听环境中,包括:将所述监听器和所述监听对象的弱指针添加到所述监听环境中。
结合本发明第一方面至第一方面第十实施方式中任一实施方式,本发明第一方面第十一实施方式中,当所述监听对象发生变化时,通知第二设备,包括:当所述监听对象发生变化时,通知部署在第二设备上的应用程序。
结合本发明第一方面至第一方面第十一实施方式中任一实施方式,本发明第一方面第十二实施方式中,所述监听器用于监听所述监听对象的变化,包括:监听器用于监听所述监听对象键值的变化;所述当所述监听对象发生变化时,通知第二设备,包括:当所述监听对象的键值发生变化时,通知所述第二设备。
结合本发明第一方面至第一方面第十二实施方式中任一实施方式,本发明第一方面第十三实施方式中,所述方法还包括:当所述监听对象被释放时,释放与所述监听对象关联的监听环境及监听器。
结合本发明第一方面第十三实施方式,本发明第一方面第十四实施方式中,所述当所述监听对象被释放时,释放与所述监听对象关联的监听环境及监听器,包括:当所述监听对象释放时,监听到键值变更为空,释放与所述监听对象关联的监听环境及监听器。
结合本发明第一方面至第一方面第十四实施方式中任一实施方式,本发明第一方面第十五实施方式中,所述方法还包括:当注册自定义远程读写方法时,若当前不存在所述监听环境,则自动创建所述监听环境,其中,所述自定义远程读写方法用于对监听对象进行读写操作。
结合本发明第一方面第十五实施方式,本发明第一方面第十六实施方式中,所述方法还包括:检查是否已经添加所述自定义远程读写方法;若已经添加所述自定义远程读写方法,则调用所述自定义远程读写方法;若没有添加所述自定义远程读写方法,则调用默认读写方法。
结合本发明第一方面至第一方面第十六实施方式中任一实施方式,本发明第一方面第十七实施方式中,所述方法还包括:当调用开始写入接口开始对所述监听对象写入时,在所述监听环境中增加锁定状态;当调用结束写入接口结束对所述监听对象写入时,在所述监听环境中消除锁定状态,并将结束写入时所携带的信息回调给所调用的异步写入方法和异步读取方法。
结合本发明第一方面第十六实施方式,本发明第一方面第十八实施方式中,所述方法还包括:当调用结束读取接口或更新键值接口时,若所述监听环境处于所述锁定状态,则不进行任何操作;若所述监听环境不处于所述锁定状态,则回调所调用的异步读取方法。
本发明实施例提供了一种远程同步方法,方法包括:将监听环境关联到对应的监听对象,其中,所述监听对象为第一设备的状态信息;在所述监听环境中添加监听器,其中,所述监听器用于监听所述监听对象的变化;当所述监听对象发生变化时,通知第二设备。将远程设备上的数据和状态同步到本地设备上并进行操作时,需要考虑数据有效性以及各种状态之间的同步互斥关系的问题,本发明实施例简化了面对此类问题时的处理过程,降低了处理复杂度,提高了系统稳定性。
本发明第二方面提供一种远程同步装置,所述装置包括:
关联模块,用于将监听环境与监听对象关联,其中,所述监听对象为第一设备的状态信息;
监听器添加模块,用于在所述监听环境中添加监听器,其中,所述监听器用于监听所述监听对象的变化;
通知模块,用于当所述监听对象发生变化时,通知第二设备。
结合本发明第二方面,本发明第二方面第一实施方式中,所述监听环境包括上下文context,所述context是用于实现运行时runtime系统所保存的信息。
结合本发明第二方面或第二方面第一实施方式,本发明第二方面第二实施方式中,所述第一设备为所述第二设备的远程设备,所述第一设备与所述第二设备无线连接。
结合本发明第二方面或第二方面第一实施方式,本发明第二方面第三实施方式中,所述第一设备与所述第二设备有线连接。
结合本发明第二方面至第二方面第三实施方式中任一实施方式,本发明第二方面第四实施方式中,所述第一设备包括以下设备的一种或几种:可移动物体、载体、承载物。
结合本发明第二方面第四实施方式,本发明第二方面第五实施方式中,所述可移动物体包括无人机,所述载体包括有指向和稳定功能的云台,承载物包括相机。
结合本发明第二方面第五实施方式,本发明第二方面第六实施方式中,所述监听对象包括以下的一种或几种:所述无人机的状态信息、所述无人机的组件的状态信息、所述云台的状态信息、所述相机的状态信息。
结合本发明第二方面第五实施方式,本发明第二方面第七实施方式中,所述无人机的状态信息包括以下一种或几种:无人机的高度、无人机的位置、无人机的速度、无人机的角度;所述无人机的组件的状态信息包括:飞控的状态信息;所述云台的状态信息包括:云台的角度;所述机载相机的状态信息包括以下一种或几种:感光度、快门速度、曝光补偿、光圈。
结合本发明第二方面至第二方面第七实施方式中任一实施方式,本发明第二方面第八实施方式中,所述第二设备包括以下设备的一种或几种:地面站、遥控器、手机、平板电脑、个人电脑、无人机。
结合本发明第二方面至第二方面第八实施方式中任一实施方式,本发明第二方面第九实施方式中,所述监听器添加模块,具体用于将所述监听器、所述监听对象的指针信息添加到所述监听环境中。
结合本发明第二方面第九实施方式,本发明第二方面第十实施方式中,所述监听器添加模块,具体用于将所述监听器和所述监听对象的弱指针添加到所述监听环境中。
结合本发明第二方面至第二方面第十实施方式中任一实施方式,本发明第二方面第十一实施方式中,所述通知模块,具体用于当所述监听对象发生变化时,通知部署在第二设备上的应用程序。
结合本发明第二方面至第二方面第十一实施方式中任一实施方式,本发明第二方面第十二实施方式中,所述监听器,具体用于监听所述监听对象键值的变化;所述通知模块,具体用于当所述监听对象的键值发生变化时,通知所述第二设备。
结合本发明第二方面至第二方面第十二实施方式中任一实施方式,本发明第二方面第十三实施方式中,所述装置还包括监听器释放模块,用于当所述监听对象被释放时,释放与所述监听对象关联的监听环境及监听器。
结合本发明第二方面第十三实施方式,本发明第二方面第十四实施方式中,所述监听器释放模块,具体用于当所述监听对象被释放时,监听到键值变更为空,释放与所述监听对象关联的监听环境及监听器。
结合本发明第二方面至第二方面第十四实施方式中任一实施方式,本发明第二方面第十五实施方式中,所述装置还包括创建模块,用于当注册自定义远程读写方法时,若当前不存在所述监听环境,则自动创建所述监听环境,其中,所述自定义远程读写方法用于对监听对象进行读写操作。
结合本发明第二方面至第二方面第十五实施方式中任一实施方式,本发明第二方面第十六实施方式中,所述装置还包括检查模块,用于检查是否已经添加所述自定义远程读写方法;若已经添加所述自定义远程读写方法,则调用所述自定义远程读写方法;若没有添加所述自定义远程方法,则调用默认读写方法。
结合本发明第二方面至第二方面第十六实施方式中任一实施方式,本发明第二方面第十七实施方式中,所述装置还包括读写保护模块,用于当调用开始写入接口开始对所述监听对象写入时,在所述监听环境中增加锁定状态;当调用结束写入接口结束对所述监听对象写入时,在所述监听环境中消除锁定状态,并将结束写入时所携带的信息回调给所调用的异步写入方法和异步读取方法。
结合本发明第二方面第十七实施方式,本发明第二方面第十八实施方式中,所述读写保护模块,还用于当调用结束读取接口或更新键值接口时,若所述监听环境处于所述锁定状态,则不进行任何操作;若所述监听环境不处于所述锁定状态,则回调所调用的异步键值方法。
本发明实施例提供了一种远程同步装置,包括:关联模块,用于将监听环境与监听对象关联,其中,所述监听对象为第一设备的状态信息;监听器添加模块,用于在所述监听环境中添加监听器,其中,所述监听器用于监听所述监听对象的变化;通知模块,用于当所述监听对象发生变化时,通知第二设备。将远程设备上的数据和状态同步到本地设备上并进行操作时,需要考虑数据有效性以及各种状态之间的同步互斥关系的问题,本发明实施例简化了面对此类问题时的处理过程,降低了处理复杂度,提高了系统稳定性。
本发明第三方面提供一种远程同步系统,所述无人机系统包括第一设备和第二设备,所述第一设备包括以下设备的一种或几种:无人机、有指向和稳定功能的云台、相机,所述第二设备包括以下设备的一种或几种:地面站、遥控器、手机、平板电脑、个人电脑、无人机,其特征在于,所述远程同步系统还包括远程同步装置,所述远程同步装置包括:
关联模块,用于将监听环境与监听对象关联,其中,所述监听对象为所述第一设备的状态信息;
监听器添加模块,用于在所述监听环境中添加监听器,其中,所述监听器用于监听所述监听对象的变化;
通知模块,用于当所述监听对象发生变化时,通知所述第二设备。
结合本发明第三方面,本发明第三方面第一实施方式中,所述监听环境包括上下文context,所述context是用于实现运行时runtime系统所保存的信息。
结合本发明第三方面或第三方面第一实施方式,本发明第三方面第二实施方式中,所述第一设备的状态信息包括以下状态信息的一种或几种:无人机的状态信息、无人机的组件的状态信息、云台的状态信息、相机的状态信息;所述无人机的状态信息包括以下一种或几种:无人机的高度、无人机的位置、无人机的速度、无人机的角度;所述无人机的组件的状态信息包括:飞控的状态信息;所述云台的状态信息包括:云台的角度;所述相机的状态信息包括以下一种或几种:感光度、快门速度、曝光补偿、光圈。
结合本发明第三方面至第三方面第二实施方式中任一实施方式,本发明第三方面第三实施方式中,所述监听器添加模块,具体用于将所述监听器、所述监听对象的指针信息添加到所述监听环境中。
结合本发明第三方面第三实施方式,本发明第三方面第四实施方式中,所述监听器添加模块,具体用于将所述监听器、所述监听对象的弱指针添加到所述监听环境中。
结合本发明第三方面至第三方面第四实施方式中任一实施方式,本发明第三方面第五实施方式中,所述通知模块,具体用于当所述监听对象发生变化时,通知部署在第二设备上的应用程序。
结合本发明第三方面至第三方面第五实施方式中任一实施方式,本发明第三方面第六实施方式中,所述监听器,具体用于监听所述监听对象键值的变化;所述通知模块,具体用于当所述监听对象的键值发生变化时,通知所述第二设备。
结合本发明第三方面至第三方面第六实施方式中任一实施方式,本发明第三方面第七实施方式中,所述远程同步装置还包括监听器释放模块,用于当所述监听对象被释放时,释放与所述监听对象关联的监听环境及监听器。
结合本发明第三方面第七实施方式,本发明第三方面第八实施方式中,所述监听器释放模块,具体用于当所述监听对象被释放时,监听到键值变更为空,释放与所述监听对象关联的监听环境及监听器。
结合本发明第三方面至第三方面第八实施方式中任一实施方式,本发明第三方面第九实施方式中,所述远程同步装置还包括创建模块,用于当注册自定义远程读写方法时,若当前不存在所述监听环境,则自动创建所述监听环境,其中,所述自定义远程读写方法用于对监听对象进行读写操作。
结合本发明第三方面至第三方面第九实施方式中任一实施方式,本发明第三方面第十实施方式中,所述远程同步装置还包括检查模块,用于检查是否已经添加所述自定义远程读写方法;若已经添加所述自定义远程读写方法,则调用所述自定义远程读写方法;若没有添加所述自定义远程方法,则调用默认读写方法。
结合本发明第三方面至第三方面第十实施方式中任一实施方式,本发明第三方面第十一实施方式中,所述远程同步装置还包括读写保护模块,用于当调用开始写入接口开始对所述监听对象写入时,在所述监听环境中增加锁定状态;当调用结束写入接口结束对所述监听对象写入时,在所述监听环境中消除锁定状态,并将结束写入时所携带的信息回调给所调用的异步写入方法和异步读取方法。
结合本发明第三方面第十一实施方式,本发明第三方面第十二实施方式中,所述写保护模块,还用于当调用结束读取接口或更新键值接口时,若所述监听环境处于所述锁定状态,则不进行任何操作;若所述监听环境不处于所述锁定状态,则回调所调用的异步键值方法。
本发明实施例提供了一种远程同步无人机系统,所述无人机系统包括第一设备和第二设备,所述第一设备包括以下设备的一种或几种:无人机、有指向和稳定功能的云台、相机,所述第二设备包括以下设备的一种或几种:地面站、遥控器、手机、平板电脑、个人电脑、无人机,其特征在于,所述无人机系统还包括远程同步装置,所述远程同步装置包括:关联模块,用于将监听环境与监听对象关联,其中,所述监听对象为所述第一设备的状态信息;监听器添加模块,用于在所述监听环境中添加监听器,其中,所述监听器用于监听所述监听对象的变化;通知模块,用于当所述监听对象发生变化时,通知所述第二设备。将远程设备上的数据和状态同步到本地设备上并进行操作时,需要考虑数据有效性以及各种状态之间的同步互斥关系的问题,本发明实施例简化了面对此类问题时的处理过程,降低了处理复杂度,提高了系统稳定性。
本发明第四方面提供一种远程同步系统,包括控制单元,用于执行如第一方面至第一方面第十八实施方式中任一实施方式所述的远程同步方法的步骤。
本发明第五方面提供一种存储介质,用于存储指令,所述指令用于执行如第一方面至第一方面第十八实施方式中任一实施方式所述的远程同步方法的步骤。
本发明第六方面提供一种远程同步方法,应用于无人机系统,包括:为监听对象注册一个或多个监听器,其中所述监听对象为第一设备的状态信息;当所述监听对象发生变化时,通知第二设备;其中,第一设备为第二设备的远端设备。
结合本发明第六方面,本发明第六方面第一实施方式中,所述方法还包括:当所述监听对象被释放时,移除所述一个或多个监听器。
结合本发明第六方面或第六方面第一实施方式,本发明第六方面第二实施方式中,所述为第一设备的状态信息注册一个或多个监听器包括:监听器向被监听对象发送注册消息,所述注册消息中携带有监听器的标识和监听对象的键路径keypath。
结合本发明第六方面至第六方面第二实施方式中任一实施方式,本发明第六方面第三实施方式中,所述当监听对象发生变化时,通知第二设备包括:当所述监听对象发生变化时,给第二设备发送通知消息,其中,所述通知消息携带有以下一种或两种值:所述监听对象变化前的值、所述监听对象变化后的值。
结合本发明第六方面至第六方面第三实施方式中任一实施方式,本发明第六方面第四实施方式中,所述第一设备包括以下一种或几种:无人机、云台、相机。
结合本发明第六方面至第六方面第四实施方式中任一实施方式,本发明第六方面第五实施方式中,所述第一设备的状态信息包括以下一种或几种:无人机的状态信息、无人机的组件的状态信息、云台的状态信息、相机的状态信息;所述无人机的状态信息包括以下一种或几种:无人机的高度、无人机的位置、无人机的角度、无人机的速度;所述无人机的组件的状态信息包括:飞控的状态信息;所述云台的状态信息包括:云台的角度;所述相机的状态信息包括以下一种或几种:感光度、快门速度、曝光补偿、光圈。
结合本发明第六方面至第六方面第五实施方式中任一实施方式,本发明第六方面第六实施方式中,所述第二设备包括以下一种或几种:遥控器、地面站、手机、平板电脑、个人电脑。
本发明实施例提供了一种远程同步系统、存储介质及方法,将远程设备上的数据和状态同步到本地设备上并进行操作时,需要考虑数据有效性以及各种状态之间的同步互斥关系的问题,本发明实施例简化了面对此类问题时的处理过程,降低了处理复杂度,提高了系统稳定性。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例中可移动物体系统的示意图;
图2为本发明实施例中可移动物体管理器示意图;
图3为本发明实施例中可移动物体接口示意图;
图4为本发明实施例中无人机接口示意图;
图5为本发明实施例中监听环境示意图;
图6为本发明实施例中一种远程同步方法流程图;
图7为本发明实施例中一种远程同步装置示意图;
图8为本发明实施例中另一种远程同步装置示意图;
图9为本发明实施中一种远程同步无人机系统示意图。
图10为本发明实施例中远程同步装置示意图。
具体实施方式
本发明实施例提供了一种键值同步方法、装置、和无人机系统,将远程设备上的数据和状态同步到本地设备上显示并进行操作时,极大地简化处理过程,减少了代码量,提高了系统稳定性。
以下对本发明的描述使用无人机作为可移动物体的示例。显而易见的是,对于本领域技术人员将可以不受限制地使用其他类型的可移动物体。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
下面通过具体实施例,分别进行详细说明。
示例性可移动物体系统
图1为本发明实施例中可移动物体系统的示意图。如图1所示,在可移动物体系统100中,用户终端102与可移动物体101,通过物理链路103进行通信。
可选的,可移动物体101可以是无人驾驶器(例如无人机、无人驾驶汽车等)、手持设备、和/或机器人;用户终端102可以是智能手机、平板电脑、遥控器、和/或个人电脑。
可选的,可移动物体101可以包括功能模块111。例如,无人机可以包括相机模块、电池模块、云台模块、飞行控制器模块、通信模块等。
可选的,用户终端102可以部署应用程序121。例如,在无人机系统中,应用程序121可以通过物理链路103控制无人机及其搭载物,可以通过物理链路103接收无人机及其搭载物的数据(例如音频、视频图片等多媒体数据)。
可选的,用户终端102可以包括通信模块,用于处理用户终端102与可移动物体101之间的通信,具体的,用于处理用户终端102中应用程序121与可移动物体101中功能模块111之间的通信。例如,在无人机系统中,包括上行链路和下行链路,上行链路用于发送控制信号,下行链路用于发送数据,例如音频、视频、图片等多媒体数据。
图2是可移动物体管理器示意图。如图2所示,可移动物体管理器204可以用于访问和控制可移动物体201,可选的,可移动物体201可以包括功能模块211~213。
可选的,可移动物体管理器204可以与应用程序221~223一起部署在用户终端202上。应用程序221~223,通过可移动物体管理器204访问和控制可移动物体201,并接收可移动物体201的数据(例如音频、视频、图片等多媒体数据)。可选的,可移动物体管理器204可以部署在独立的设备上,或者部署在可移动物体201中。
可选的,可移动物体管理器204包括通信管理器241、数据管理器242和接口243。通信管理器241用于处理与通信协议相关的数据,建立应用程序221~223与可移动物体201之间的通信连接;数据管理器242用于管理应用程序221~223与可移动物体201之间的数据交互;接口243用于应用程序221~223访问和调用可移动物体管理器204。
示例性可移动物体接口
图3是本发明实施例中可移动物体接口示意图。如图3中所示,在软件开发环境300中,可移动物体接口303可以提供对可移动物体301的访问,软件开发环境300可以为软件开发工具包(sdk)环境。
可移动物体301可以包括且不限于功能模块a-c311-313,可移动物体接口303可以包括且不限于接口组件a-c331-333。可移动物体接口303中的每个接口组件a-c331-333可以代表可移动物体301中的模块a-c311-313。
可移动物体接口303可以提供一个或多个回调函数(callbackfunction),以支持应用程序与可移动物体301之间的分布式计算模型。
应用程序调用回调函数以确认可移动物体301是否已接收到命令,或者通过回调函数接收执行结果。因此,尽管应用程序与可移动物体301在空间和逻辑上是分离的,依然可以通过回调函数进行交互。
如图3中所示,接口组件a-c331-333可以与监听器(listener)a-c341-343相关联。监听器a-c341-343可以通知接口组件a-c331-333使用对应的回调函数来从相关功能模块接收信息。
数据管理器302,用于为可移动物体接口303准备数据。数据管理器302可以将可移动物体301的相关功能进行解耦和封装。而且,数据管理器302可以用于管理应用程序与可移动物体301之间的数据交换。因此,应用程序开发者不需要涉及到复杂的数据交换过程。
例如,djisdk可以提供一系列回调函数,用于传送实例信息,或者从无人机接收执行结果。例如,djisdk可以在无人机与智能手机(例如,使用android系统或ios系统)上的应用程序之间建立连接。
图4是无人机接口示意图。如图4所示,接口402与无人机401相对应。应用程序403~404可以通过调用接口402访问和控制无人机401。
可选的,无人机可以包括多个功能模块:相机411、电池412、云台413、飞行控制器414、和/或增程器415。相应的,接口402包括相机组件421、电池组件422、云台组件423、飞行控制器组件424、和/或增程器组件425。例如,应用程序403可以通过相机组件421访问和控制相机411。
此外,可移动物体接口402可以包括地面站组件1026。地面站组件用于执行可能需要高级别权限的一个或多个飞控操作。
示例性监听器
如图5为本发明实施例中监听器示意图。如图5所示,注册监听器,监听器521与可移动物体501中的功能模块511相关联,用于监听功能模块511的变化。当监听到功能模块511发生变化时,通知用户终端503上的应用程序531。可以通过回调的方式,将更新后的键值回调给应用程序531。例如,djisdk可以提供一系列回调函数,用于传送实例信息,或从无人机接收执行结果。
可选的,在上下文context中添加监听器521,该context可以部署于用户终端503上,例如部署于应用程序531上;也可以部署于可移动物体501上,例如部署于功能模块511上;也可以部署于第三方设备上,在此不做限定。
可移动物体环境中远程同步方法
如图6所示,本发明实施例提供一种远程同步的方法,包括:
601、将监听环境关联到对应的监听对象,其中,所述监听对象为第一设备的状态信息。
在某些实施例中,监听环境可以包括上下文context,所述context是用于实现运行时runtime系统所保存的信息。具体的,可以通过运行时runtime的setassociatedobject方法将该context关联到监听对象。
可选的,第一设备为第二设备的远程设备,第一设备与第二设备无线连接。
可选的,第一设备与第二设备有线连接,具体的,可以通过串口线缆连接。
在某些实施例中,第一设备可以包括以下设备的一种或几种:可移动物体、载体、承载物。
具体的,所述可移动物体可以包括无人机,所述载体可以包括有指向和稳定功能的云台,承载物可以包括相机。
具体的,所述监听对象可以包括以下的一种或几种:所述无人机的状态信息、所述云台的状态信息、所述相机的状态信息。
具体的,所述无人机的状态信息可以包括以下一种或几种:无人机的高度、无人机的位置、无人机的角度、无人机的速度;所述无人机的组件的状态信息包括:飞控的状态信息;所述云台的状态信息可以包括:云台的角度;所述相机的状态信息可以包括以下一种或几种:感光度、快门速度、曝光补偿、光圈。
602、在所述监听环境中添加监听器,其中,所述监听器用于监听所述监听对象的变化。
在某些实施例中,将监听器、监听对象的指针信息添加到所述监听环境中,指针信息可以包括弱指针。
可选的,监听器用于监听所述监听对象键值的变化。
603、当所述监听对象发生变化时,通知第二设备。
在某些实施例中,第二设备可以包括以下设备的一种或几种:地面站、遥控器、手机、平板电脑、个人电脑、无人机。
可选的,当监听对象的键值发生变化时,通知第二设备。
可选的,当写入成功、非锁定状态下更新键值、或非锁定状态下读取键值,导致监听对象的键值发生变化时,向第二设备发送键值变化的通知。
可选的,如图7所示,还包括:
604、当所述监听对象被释放时,释放与所述监听对象关联的监听环境及监听器。
在某些实施例中,当监听对象被释放时,监听到键值变更为空,释放与监听对象关联的监听环境及监听器。
在某些实施例中,还包括:
生成自定义远程读写方法的接口,调用该接口在监听环境中注册自定义远程读写方法。若调用该接口注册自定义远程读写方法时,不存在监听环境,则自动创建监听环境,然后在所述监听环境中注册自定义远程读写方法;其中,自定义远程读写方法用于对监听对象进行远程读写操作。具体的,监听环境可以包括上下文context。
在某些实施例中,还包括:
生成异步读写接口。当调用该异步读写接口时,检查是否已经注册自定义远程读写方法;
若已经注册自定义远程读写方法,则调用所述自定义远程读写方法;具体的,调用自定义远程读写方法对监听对象进行远程读写操作,例如,可以是对飞控进行远程读写操作;
若没有注册所述自定义远程读写方法,则调用默认读写方法,例如,可以是调用默认的键值观察(kvo)接口,对本地设备进行读写操作。
在某些实施例中,还包括:
在监听环境中生成“开始写入”接口和“结束写入”接口;当调用“开始写入”接口开始对所述监听对象写入时,在所述监听环境中增加锁定状态;当调用“结束写入”接口结束对所述监听对象写入时,在所述监听环境中消除锁定状态,并将结束写入时所携带的信息回调给所调用的异步写入方法和异步读取方法。具体的,监听环境可以包括上下文context。
在某些实施例中,还包括:
生成“结束读取”接口和“更新键值”接口;
当调用“结束读取”接口或“更新键值”接口时,若所述监听环境处于锁定状态,则不进行任何操作;若所述监听环境不处于所述锁定状态,则回调所调用的异步读取方法;具体的,监听环境可以包括所述context。
例如,若调用“结束读取”接口,且监听环境不处于锁定状态,则回调所调用的异步读取方法,将键值传递给调用方;若调用“更新键值”接口,且监听环境不处于锁定状态,则回调所调用的异步读取方法,将键值变化通知给所有监听器。
需要说明的是,对于前述的方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明所必需的。
基于上述方法实施例的说明,本发明还提供了相应的远程同步的装置实施例,来实现上述方法实施例所述的内容。
如图8所示,本发明实施例提供一种远程同步的装置801。
可选的,第一设备802、第二设备803、第一设备802与第二设备803的连接方式、和监听对象,如前述远程同步方法实施例中所述。
可选的,远程同步的装置801可以部署在第一设备802上,例如与第一设备通过串口线缆连接;远程同步的装置801也可以部署在第二设备803上,与第一设备802通过无线连接;远程同步装置801还可以部署在第三方设备上,与第一设备、第二设备可以通过无线或有线连接。
包括:
关联模块811,用于将监听环境与监听对象关联,其中,所述监听对象为第一设备的状态信息。
在某些实施例中,监听环境可以包括上下文context,所述context是用于实现运行时runtime系统所保存的信息。具体的,关联模块811通过运行时runtime的setassociatedobject方法将该context关联到监听对象中。
监听器添加模块812,用于在监听环境中添加监听器,其中,所述监听器用于监听所述监听对象的变化。
可选的,监听器添加模块812,具体用于将监听器、监听对象的弱指针添加到监听环境中。
具体的,监听器用于监听所述监听对象键值的变化。
通知模块813,用于当所述监听对象发生变化时,通知第二设备803。
可选的,通知模块813用于当所述监听对象的键值发生变化时,通知所述第二设备。
可选的,当写入成功、非锁定状态下更新键值、或非锁定状态下读取键值,导致监听对象的键值发生变化时,向第二设备803发送键值变化的通知。
在某些实施例中,远程同步装置801还包括:
监听器释放模块814,用于当所述监听对象被释放时,释放与所述监听对象关联的监听环境及监听器。
可选的,当所述监听对象被释放时,监听到键值变更为空,释放与所述监听对象关联的监听环境及监听器。
在某些实施例中,还包括:
创建模块815,用于当注册自定义远程读写方法时,若当前不存在监听环境,则自动创建监听环境,其中,所述自定义远程读写方法用于对监听对象进行远程读写操作。
在某些实施例中,还包括:
检查模块816,用于检查是否已经添加所述自定义远程读写方法;若已经添加所述自定义远程读写方法,则调用所述自定义远程读写方法;若没有添加所述自定义远程方法,则调用默认读写方法,例如默认的键值监听(kvo)方法。
在某些实施例中,还包括:
读写保护模块817,用于当调用开始写入接口开始对所述监听对象写入时,在所述监听环境中增加锁定状态;当调用结束写入接口结束对所述监听对象写入时,在所述监听环境中消除锁定状态,并将结束写入时所携带的信息回调给所调用的异步写入方法和异步读取方法。
可选的,读写保护模块817还用于当调用结束读取接口或更新键值接口时,若所述监听环境处于所述锁定状态,则不进行任何操作;若所述监听环境不处于所述锁定状态,则回调所调用的异步键值方法。
对于上述远程同步的装置实施例而言,由于其与方法及装置实施例基本相似,所以描述的比较简单,相关之处参见图6~图7所示方法实施例的部分说明即可。
本发明实施例提供了一种远程同步装置。将远程设备上的数据和状态同步到本地设备上显示并进行操作时,需要考虑数据有效性以及各种状态之间的同步互斥关系的问题,本发明实施例极大地简化了面对此类问题时的处理过程,减少了代码量,提高了系统稳定性。
如图9所示,本发明实施例提供一种远程同步无人机系统,包括第一设备902、第二设备903、和远程同步装置901,第一设备902包括无人机921、有指向和稳定功能的云台922、和相机923,第二设备903包括以下设备的一种或几种:地面站、遥控器、手机、平板电脑、个人电脑、无人机。
可选的,远程同步的装置901可以部署在第一设备902上,例如与第一设备通过串口线缆连接;远程同步的装置901也可以部署在第二设备903上,与第一设备902通过无线连接;远程同步装置901也可以部署在第三方设备上,与第一设备902、第二设备903可以通过有线连接或无线连接。
远程同步装置901包括:
关联模块911,用于将监听环境与监听对象关联,其中,所述监听对象为第一设备的状态信息。可选的,第一设备902的状态信息可以包括:无人机921的一种或几种状态信息:无人机的高度、无人机的位置、无人机的速度、无人机的角度;无人机的组件的状态信息,包括:飞控的状态信息;云台922的状态信息包括:云台的角度;相机923的一种或几种状态信息:感光度、快门速度、曝光补偿、光圈。
监听器添加模块912,用于在监听环境中添加监听器,其中,所述监听器用于监听所述监听对象的变化,例如,用于监听无人机921的参数、无人机921的组件的参数、云台922的参数、相机923的参数。
可选的,监听器添加模块912,具体用于将监听器、监听对象的指针信息添加到监听环境中,具体的,指针信息可以包括弱指针。
具体的,监听器用于监听所述监听对象键值的变化,例如,监听无人机921、云台922、相机923相应参数的键值的变化。
通知模块913,用于当所述监听对象发生变化时,通知第二设备903。
可选的,通知模块913用于当所述监听对象的键值发生变化时,通知所述第二设备903。
可选的,当写入成功、非锁定状态下更新键值、或非锁定状态下读取键值,导致监听对象的键值发生变化时,向第二设备903发送键值变化的通知。
在某些实施例中,远程同步装置901还包括:
监听器释放模块914,用于当所述监听对象被释放时,释放与所述监听对象关联的监听环境及监听器,具体的,释放与监听对象关联的context及监听器。
可选的,当所述监听对象被释放时,监听到键值变更为空,释放与所述监听对象关联的监听环境及监听器,具体的,释放与监听对象关联的context及监听器。
在某些实施例中,远程同步装置901还包括:
创建模块915,用于当调用自定义异步读写方法进行注册时,若当前不存在所述上下文,则自动创建所述上下文,其中,所述自定义远程读写方法用于对监听对象进行远程读写操作。
在某些实施例中,远程同步装置901还包括:
检查模块916,用于检查是否已经添加所述自定义远程读写方法;若已经添加所述自定义远程读写方法,则调用所述自定义远程读写方法;若没有添加所述自定义远程方法,则调用默认读写方法,例如默认的键值监听(kvo)方法。
在某些实施例中,远程同步装置901还包括:
读写保护模块917,用于当调用开始写入接口开始对所述监听对象写入时,在所述监听环境中增加锁定状态;当调用结束写入接口结束对所述监听对象写入时,在所述监听环境中消除锁定状态,并将结束写入时所携带的信息回调给所调用的异步写入方法和异步读取方法。
可选的,读写保护模块917还用于当调用结束读取接口或更新键值接口时,若所述监听环境处于所述锁定状态,则不进行任何操作;若所述监听环境不处于所述锁定状态,则回调所调用的异步键值方法。
对于上述远程同步的无人机系统实施例而言,由于其与方法及装置实施例基本相似,所以描述的比较简单,相关之处参见图6~图8所示方法、装置实施例的部分说明即可。
如图10所示,本发明实施例提供一种远程同步装置。
用户终端1003中的应用程序1031调用远程同步装置1002的异步读写接口1025;远程同步装置1002调用自定义远程读写接口对可移动物体1001上的功能模块1011进行相应操作,然后接受操作结果并回调给应用程序1031。
例如,应用程序1031要设置功能模块1011的参数,应用程序1031调用异步读写接口1023,远程同步装置1002调用自定义远程读写接口中的“开始写入”接口1021对可移动物体1001中的功能模块1011进行远程写入,在远程同步装置1002中增加锁定状态;然后发送命令;当设置完成,命令响应的时候,远程同步装置调用“结束写入”接口1022,在远程同步装置1002中消除锁定状态;并将结束写入时所携带的信息通过异步读写接口1025回调给应用程序1031。
又例如,应用程序1031要读取功能模块1011的参数,应用程序1031调用异步读写接口1025,远程同步装置1002调用自定义远程读写方法,该自定义远程方法返回一个读取结果,然后远程装置1002调用“结束读取”接口1023,将读取结果通过异步读写接口1031回调给应用程序1031。
又例如,远程同步装置1002接收到可移动物体1001推送的功能模块1011更新键值通知,则调用“更新键值”接口1024,将更新的键值通过异步读写接口1025通知所有的监听者。
本发明实施例提供了一种远程同步装置。将远程设备上的数据和状态同步到本地设备上显示并进行操作时,需要考虑数据有效性以及各种状态之间的同步互斥关系的问题,本发明实施例极大地简化了面对此类问题时的处理过程,减少了代码量,提高了系统稳定性。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域技术人员易于想到的是:上述各个实施例的任意组合应用都是可行的,故上述各个实施例之间的任意组合都是本发明的实施方案,但是由于篇幅限制,本说明书在此就不一一详述。
在本发明所提供的几个实施例中,应该理解到,所揭露的相关装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得计算机处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。