如何通过Olympe SDK触发消息获取Anafi-AI无人机固件版本
触发Olympe AllSettings消息并获取Anafi-AI固件版本
使用Olympe SDK连接Parrot Sphinx模拟器中的Anafi-AI无人机时,需通过ProductVersionChanged事件获取固件版本,但必须先触发AllSettings命令,否则会出现未初始化错误。以下是正确的实现方式:
完整代码实现
import olympe from olympe.messages.skyctrl import Settings, SettingsState DRONE_IP = "你的无人机IP" # 替换为Sphinx模拟器对应的IP,如默认的10.202.0.1 class firmware_status: def get_firmware_version(self): drone = olympe.Drone(DRONE_IP) try: drone.connect() # 触发AllSettings命令,等待设备同步所有设置状态 assert drone(Settings.AllSettings(_timeout=10)).wait().success() # 获取ProductVersionChanged事件中的固件版本信息 version_data = drone.get_state(SettingsState.ProductVersionChanged) return version_data["software"] finally: # 确保无论执行结果如何都断开连接 drone.disconnect() # 调用示例 if __name__ == "__main__": fw_checker = firmware_status() print(f"Anafi-AI固件版本: {fw_checker.get_firmware_version()}")
关键逻辑说明
- 触发AllSettings:
drone(Settings.AllSettings(_timeout=10)).wait()会发送同步命令并等待执行完成,这一步是核心——只有完成设置同步,ProductVersionChanged事件才会被正确初始化,避免后续获取状态时的未初始化错误。 - 获取固件版本:
drone.get_state(SettingsState.ProductVersionChanged)会返回最新的版本事件数据,其中software字段即为固件版本字符串,hardware字段可获取硬件版本。 - 资源安全:使用
try/finally块保证连接一定会被断开,避免资源泄漏。
内容的提问来源于stack exchange,提问作者Rima kaafarani
相关产品推荐
相关产品推荐

