OTA升级是通过无线通信远程把bin文件内容传输到单片机,完成升级。
因此上位机需要获取bin文件的路径,读取bin文件内容,将内容分割依次发送(因为单片机的接收缓存不会开得和bin文件一样大(十几K甚至几十K))。

首先在UI上添加控件,一个按钮控件Button,一个文字显示控件Lable,一个文字输入输出显示控件Textbox

<Window x:Class="OTA.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:OTA"mc:Ignorable="d"Title="MainWindow" Height="450" Width="800"><Grid><Label Height="40" Width="85" Content="bin文件路径:" VerticalContentAlignment="Center" VerticalAlignment="Top" HorizontalAlignment="Left"></Label><TextBox Height="40" Width="600" VerticalContentAlignment="Center" HorizontalContentAlignment="Left" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="90,0,0,0"  Name="TextBox_BinFilePath"></TextBox><Button Height="40" Width="60" Content="浏览Bin" VerticalAlignment="Top" HorizontalAlignment="Right" Margin="0,0,30,0" Name="Button_GetBinFile" Click="Button_GetBinFile_Click"></Button></Grid>
</Window>

Height是指定控件高度,Width是指定控件宽度
Content是控件的显示文字
VerticalContentAlignment=“Center” 是控件显示文字竖直方向居中显示
HorizontalContentAlignment="Center"是控件显示文字水平方向居中显示

VerticalAlignment=“Top” 是控件竖直方向靠顶部显示
HorizontalAlignment=“Left” 是控件水平方向靠左显示
HorizontalAlignment=“Right” 是控件水平方向靠右显示

Name是控件的代号,在程序里就是通过Name来控制各个控件的显示和功能

Click=“Button_GetBinFile_Click”,Button_GetBinFile_Click是点击按钮发生的函数功能名,输入click后会有 新建事件处理程序,可以直接回车来选择它,这时候会自动在cs文件里创建名为Button_GetBinFile_Click的函数

Margin是调节位置,四个参数分别是 左,上,右,下的调节
比如Button是顶部右边显示,Margin=“0,0,30,0”,将Button和最右边的距离拉开30

点击运行看看效果

UI做好后,实现浏览按键的功能
直接上代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.IO;
using Microsoft.Win32;namespace OTA
{/// <summary>/// Interaction logic for MainWindow.xaml/// </summary>public partial class MainWindow : Window{//保存读取bin文件的数据private byte[] g_read_data;public MainWindow(){InitializeComponent();}private void Button_GetBinFile_Click(object sender, RoutedEventArgs e){//需要using Microsoft.Win32;//文件浏览窗口OpenFileDialog openFileDialog = new OpenFileDialog();//打开文件浏览窗口失败if (!(bool)openFileDialog.ShowDialog()){return;}//把选择的文件绝对路径显示到控件TextBox_BinFilePath.Text = openFileDialog.FileName;//需要using System.IO;//文件流打开bin文件FileStream fileStream = new FileStream(openFileDialog.FileName, FileMode.Open, FileAccess.ReadWrite);//二进制方式读取bin文件数据BinaryReader binaryReader = new BinaryReader(fileStream);//打印bin文件的大小Console.WriteLine("bin file length:{0}", binaryReader.BaseStream.Length);//bin文件的大小int length = Convert.ToInt32(binaryReader.BaseStream.Length);//获取bin文件数据g_read_data = binaryReader.ReadBytes(length);//关闭数据流和文件流binaryReader.Close();fileStream.Close();}}
}

运行程序,点击浏览Bin,出现文件夹弹框

选择要升级的bin文件,点击打开

在binaryReader.close();处打个断点,调试可以看到g_read_data的内容

用VS code看打开的bin文件,内容和读到的是一致的,读取成功了

关掉断点,继续程序运行,可以看到bin文件的绝对路径已经显示在控件上了

接下来就是串口的功能实现了

VS2019 WPF制作OTA上位机(二)获取bin文件路径相关推荐

  1. VS2019 WPF制作OTA上位机(一)新建工程

    首先创建新项目,文件 -> 新建 -> 项目 下拉菜单选择C#和Window,选择WPF应用程序,下一步 输入项目名,下一步 这里选择.NET 5.0,也可以选择其他的,个人习惯.NET, ...

  2. PYQT5+Matplot制作示波器上位机

    PYQT5+Matplot制作示波器上位机 上位机介绍(大家如果需要源码欢迎去下载)[https://download.csdn.net/download/qq_41866091/11226698] ...

  3. python获取某文件路径_Python获取当前文件路径

    一. Python 获取当前文件路径方法 2. sys.path[0] 获取文件当前工作目录路径(绝对路径) sys.argv[0]|获得模块所在的路径(由系统决定是否是全名) 若显示调用python ...

  4. python 当前文件路径获取方式_Python获取当前文件路径

    一. Python 获取当前文件路径方法 2. sys.path[0] 获取文件当前工作目录路径(绝对路径) sys.argv[0]|获得模块所在的路径(由系统决定是否是全名) 若显示调用python ...

  5. ubuntu18.04.4 获取当前文件路径

    ubuntu18.04.4 获取当前文件路径 打开文件夹 右键–>在终端打开 pwd 复制上面地址

  6. MFC从字体名获取字库文件路径(从宋体获取到simsun.ttc)

    上一篇有讲到在QT中从字体名获取文字的路径,这个是MFC版本的: #QT从字体名获取字库文件路径#include <string> using namespace std;void wch ...

  7. java 获取包路径_java获取java文件路径的四种方法

    java获取java文件路径的四种方法 发布时间:2020-04-17 11:03:45 来源:亿速云 阅读:750 作者:小新 今天小编给大家分享的是java获取java文件路径的四种方法,很多人都 ...

  8. 【单片机学习笔记】(28):图形用户界面(GUI),串口通信协议与匿名上位机,获取MPU6050欧拉角,H桥电路、制作风力摆(空心杯电机、TB6612)

    Graphical User Interface(GUI) (OLED)使用图形用户界面 简易菜单 菜单和各种显示都放到main.c里面,要显示的数据经过字符转化之后放到buff里面再 调用显示 . ...

  9. WPF编程;上位机编程;C#编程;仿QQ基础实现(一)之界面预览

    简介 一.摘要 1.描述 2.关键字 二.什么是WPF 三.为什么选择WPF 四.仿QQ的登录界面 五.仿QQ联系人界面 六.源码下载 七.其他 八.参考 一.摘要 1.描述 本文主要描述的是如何通过 ...

最新文章

  1. adb logcat查看手机端日志
  2. 如何删除 Windows.old 文件夹
  3. Android 计算布局背景的透明度
  4. 【python 6】Numpy
  5. 5月8日——iOS中的3D Touch效果
  6. html 好看的英文字体,23款网页设计师必备:经典私藏英文字体
  7. 猎证计算机等级考试二级试题讲解,猎证计算机等级考试系统
  8. Messenger Group Redesign - 缓解群组社交压力设计思考
  9. Datalogic得利捷全新自动调焦产品 开启扩展扫码新体验
  10. (2021 最新版)IntelliJ IDEA 下载安装及配置教程
  11. 怎么把unity游戏写进HTML,用 HTML代码加载 Unity 内容_Unity3d中文翻译用户手册-游戏蛮牛...
  12. 游戏外挂开发原理初探——植物大战僵尸内存挂为例
  13. 电容的作用?电容器的作用?
  14. 2022年4月携程暑期实习 搜索推荐算法岗面试题
  15. 画流程的软件 yEd 不错, 支持中
  16. java基础,进阶(二)
  17. 刷机需要的常识双清,BL,REC,TWRP,ROM
  18. 小米Android 13 应用适配指南公告
  19. 研招网官方:关于考研报名的提醒!
  20. 电脑高清,查看电脑显示屏是高清还是标清

热门文章

  1. 报名照片审核处理工具_太浦军考|2020年文职人员报名照片审核程序,照片处理工具应该如何使用?...
  2. 清华大学计算机系牛人,高考状元不靠加分靠实力
  3. ubuntu下c 访问mysql_Ubuntu下用C语言访问MySQL数据库
  4. 学java前要学css_教你一招:学习Java必须学会的CSS用法
  5. babel原理_带你了解 snowpack 原理,你还学得动么(下)
  6. php获得昨天零时的时间戳,php 获取时间今天明天昨天时间戳
  7. java开发环境搭建 pdf_01搭建java web开发环境.pdf
  8. jenkins jar包上传maven仓库
  9. jQuary总结11:jQuery插件封装---jQuery封装 手风琴 动画插件
  10. python web开发-flask访问请求数据request