VS2019 WPF制作OTA上位机(二)获取bin文件路径
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文件路径相关推荐
- VS2019 WPF制作OTA上位机(一)新建工程
首先创建新项目,文件 -> 新建 -> 项目 下拉菜单选择C#和Window,选择WPF应用程序,下一步 输入项目名,下一步 这里选择.NET 5.0,也可以选择其他的,个人习惯.NET, ...
- PYQT5+Matplot制作示波器上位机
PYQT5+Matplot制作示波器上位机 上位机介绍(大家如果需要源码欢迎去下载)[https://download.csdn.net/download/qq_41866091/11226698] ...
- python获取某文件路径_Python获取当前文件路径
一. Python 获取当前文件路径方法 2. sys.path[0] 获取文件当前工作目录路径(绝对路径) sys.argv[0]|获得模块所在的路径(由系统决定是否是全名) 若显示调用python ...
- python 当前文件路径获取方式_Python获取当前文件路径
一. Python 获取当前文件路径方法 2. sys.path[0] 获取文件当前工作目录路径(绝对路径) sys.argv[0]|获得模块所在的路径(由系统决定是否是全名) 若显示调用python ...
- ubuntu18.04.4 获取当前文件路径
ubuntu18.04.4 获取当前文件路径 打开文件夹 右键–>在终端打开 pwd 复制上面地址
- MFC从字体名获取字库文件路径(从宋体获取到simsun.ttc)
上一篇有讲到在QT中从字体名获取文字的路径,这个是MFC版本的: #QT从字体名获取字库文件路径#include <string> using namespace std;void wch ...
- java 获取包路径_java获取java文件路径的四种方法
java获取java文件路径的四种方法 发布时间:2020-04-17 11:03:45 来源:亿速云 阅读:750 作者:小新 今天小编给大家分享的是java获取java文件路径的四种方法,很多人都 ...
- 【单片机学习笔记】(28):图形用户界面(GUI),串口通信协议与匿名上位机,获取MPU6050欧拉角,H桥电路、制作风力摆(空心杯电机、TB6612)
Graphical User Interface(GUI) (OLED)使用图形用户界面 简易菜单 菜单和各种显示都放到main.c里面,要显示的数据经过字符转化之后放到buff里面再 调用显示 . ...
- WPF编程;上位机编程;C#编程;仿QQ基础实现(一)之界面预览
简介 一.摘要 1.描述 2.关键字 二.什么是WPF 三.为什么选择WPF 四.仿QQ的登录界面 五.仿QQ联系人界面 六.源码下载 七.其他 八.参考 一.摘要 1.描述 本文主要描述的是如何通过 ...
最新文章
- adb logcat查看手机端日志
- 如何删除 Windows.old 文件夹
- Android 计算布局背景的透明度
- 【python 6】Numpy
- 5月8日——iOS中的3D Touch效果
- html 好看的英文字体,23款网页设计师必备:经典私藏英文字体
- 猎证计算机等级考试二级试题讲解,猎证计算机等级考试系统
- Messenger Group Redesign - 缓解群组社交压力设计思考
- Datalogic得利捷全新自动调焦产品 开启扩展扫码新体验
- (2021 最新版)IntelliJ IDEA 下载安装及配置教程
- 怎么把unity游戏写进HTML,用 HTML代码加载 Unity 内容_Unity3d中文翻译用户手册-游戏蛮牛...
- 游戏外挂开发原理初探——植物大战僵尸内存挂为例
- 电容的作用?电容器的作用?
- 2022年4月携程暑期实习 搜索推荐算法岗面试题
- 画流程的软件 yEd 不错, 支持中
- java基础,进阶(二)
- 刷机需要的常识双清,BL,REC,TWRP,ROM
- 小米Android 13 应用适配指南公告
- 研招网官方:关于考研报名的提醒!
- 电脑高清,查看电脑显示屏是高清还是标清
热门文章
- 报名照片审核处理工具_太浦军考|2020年文职人员报名照片审核程序,照片处理工具应该如何使用?...
- 清华大学计算机系牛人,高考状元不靠加分靠实力
- ubuntu下c 访问mysql_Ubuntu下用C语言访问MySQL数据库
- 学java前要学css_教你一招:学习Java必须学会的CSS用法
- babel原理_带你了解 snowpack 原理,你还学得动么(下)
- php获得昨天零时的时间戳,php 获取时间今天明天昨天时间戳
- java开发环境搭建 pdf_01搭建java web开发环境.pdf
- jenkins jar包上传maven仓库
- jQuary总结11:jQuery插件封装---jQuery封装 手风琴 动画插件
- python web开发-flask访问请求数据request