MissionPlanner的固件下载模块
背景
根据需求,需要写一个给pixhawk刷固件的工具。根据开源地面站mission planner的源码来改。
MissionPlanner刷固件程序流程
子模块简介
ProcessFirmware()
对hex文件进行处理,读取校验等。会用到mission planner 项目里面的Firmware class、fastJSON namespace等。此部分依赖性不高,对应模块贴进去后会提示缺失部分,去missionplanner 源码里面找到相应的添加上即可。粘代码的时候尽量精准找到所需,如果添加上不必要的函数会导致依赖性急剧提升,报错提高,导致贴不完的代码。
identify()
这个函数用于检测pixhawk硬件是否是在等待刷机的状态。
AttemptRebootToBootloader()
先贴出此部分的源代码:
private void AttemptRebootToBootloader(){string[] allports = SerialPort.GetPortNames();foreach (string port in allports){log.Info(DateTime.Now.Millisecond + " Trying Port " + port);try{using (var up = new Uploader(port, 115200)){up.identify();return;}}catch (Exception ex){log.Error(ex);}}if (MainV2.comPort.BaseStream is SerialPort){try{updateProgress(-1, "Look for HeartBeat");// check if we are seeing heartbeatsMainV2.comPort.BaseStream.Open();MainV2.comPort.giveComport = true;if (MainV2.comPort.getHeartBeat().Length > 0){updateProgress(-1, "Reboot to Bootloader");MainV2.comPort.doReboot(true, false);MainV2.comPort.Close();}else{updateProgress(-1, "No HeartBeat found");MainV2.comPort.BaseStream.Close();CustomMessageBox.Show(Strings.PleaseUnplugTheBoardAnd);}}catch (Exception ex){log.Error(ex);CustomMessageBox.Show(Strings.PleaseUnplugTheBoardAnd);}}}
注意到里面右identify()函数调用,此函数用于检测pixhawk硬件是否是在等待刷机的状态。如果已经属于等待刷机的状态,则跳出AttemptRebootToBootloader()函数。如果不是,则通过命令发送重启并进入等待刷机状态的命令。针对comPort的操作大多是用于检测HeartBeat心跳包来确定硬件是否插在电脑上以及插到了哪个com口。还有代码块一些是用来更新进度条用的。
此段函数可简化为:
private void AttemptRebootToBootloader(){try{up.identify();return;}catch (Exception ex){log.Error(ex);}MainV2.comPort.doReboot(true, false);MainV2.comPort.Close();}
doReboot()
MissionPlanner的固件下载模块相关推荐
- EC600 QuecPython开发环境搭建、固件下载,最方便的OpenCPU物联网4G通信解决方案
EC600 QuecPython 官方资源汇总 开发环境搭建 1.安装windows驱动 2.验证模组的固件版本 3.烧录QuecPython固件 小试QuecPython 1.查看系统信息 2.点亮 ...
- 涂鸦三明治开发套件开箱及固件下载
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 人工智能编程入门博客 开箱 涂鸦三明治开发套件包括:涂鸦三明治红外遥控功能板.涂鸦三明治 Wi-Fi ...
- 怎么在手机上下载python模块_python下载模块然后怎么安装
python下载模块然后怎么安装? 推荐:<Python教程> python 安装模块的方法 学习python肯定是要调用许多的模块,那面怎么安装呢! 黄博主目前也就掌握了两种方法,你们有 ...
- ADuC845串口下载模块制作
➤ 01串口下载线 ADuC845 是通过串口下载的.相关的下载过程可以参见 创界uVision下的ADuC845的工程文件 .最初的下载板是来自于2013年设计的下载板1.下图显示了该下载板的引线. ...
- 有始有终,设计一个结构合理的下载模块
完成开发任务的同时,我们总希望自己能够交付高质量的代码.代码质量的测度有很多方法,可扩展性.可复用性是其中的两项指标.设计模式的理论能够非常有效地指导代码设计,但是光谈这些理论是非常抽象的,本文针对下 ...
- OpenMV(二)--IDE安装与固件下载
IDE安装与固件下载 1. IDE安装 2. 固件下载 2.1 DFuSe安装 2.2 固件下载 1. IDE安装 OpenMV具有独有的IDE,而且可以跨平台使用,支持Win, Mac OS, Li ...
- android 新闻应用、Xposed模块、酷炫的加载动画、下载模块、九宫格控件等源码...
Android精选源码 灵活的ShadowView,可替代CardView使用 基于Tesseract-OCR实现自动扫描识别手机号 Android播放界面仿QQ音乐开源音乐播放器 新闻应用项目采用了 ...
- python爬虫下载模块_python爬虫模块之HTML下载模块
HTML下载模块 该模块主要是根据提供的url进行下载对应url的网页内容.使用模块requets-HTML,加入重试逻辑以及设定最大重试次数,同时限制访问时间,防止长时间未响应造成程序假死现象. 根 ...
- java固件包_iOS13 各版本固件下载地址以及更新方法
2019-06-04 7907 iOS13本次更新: iOS13 developer beta①Face id 解锁速度增加30%②App打开速度快三倍③黑暗模式(dark mode)④Applemu ...
最新文章
- spring boot跨域问题
- Laravel经常使用的语法总结
- OAuth 2.0 Java指南:5分钟保护您的应用程序安全
- Google Maps 地址转化成坐标
- Git 提交错了不用慌,这三招帮你修改记录
- angular2之pdf文件操作大全
- 获取mssqlserver数据库表的字段名称,字段说明,数据类型,主键等表的信息
- jquery 事件冒泡的介绍
- 测试开发工程师面试题目
- UWP开发:APP之间的数据交互(以微信为例)
- AD如何修改PCB文件的黑色编辑区
- 教育教学微课题研究方案——实习调研论文
- C++实现改变网速*SpeedDuplex和网速监控
- 詹姆斯加入湖人,杜兰特会留在勇士吗?
- 外挂制作之思路总结和基址与偏移量
- SDUT OJ 2977
- 事物认识分析基本方法(转)
- 基于业务计划和收益的数据资产价值评估研究
- win7英文版很多软件中文显示乱码解决方案
- 操作系统(2)_硬件环境