.bin文件怎么打开,bin的后缀文件怎么打开

单片机BootLoader上位机简介BootLoader上位机开发语言为C#,选择uart通信,需要用到几个常用的串口控件:串口号,波特率,数据位和打开串口按钮。另外需要一个打开HEX的按钮,一个保存

单片机BootLoader上位机简介

BootLoader上位机开发语言为C#,选择uart通信,需要用到几个常用的串口控件:串口号,波特率,数据位和打开串口按钮。另外需要一个打开HEX的按钮,一个保存bin文件的按钮。打开一个BLE.HEX文件,上位机对hex文件进行解析,然后显示在窗口,最后也可以保存成bin文件,再来就是一个下载按钮,点击按钮则开始下载程序。

上位机界面

HEX文件解析工作

打开hex文件

保存bin文件

hex与bin文件比较,hex文件会有跳存储地址情况,则在空的地址填补十六进制 FF。这样既可生成完整的bin。

左hex和右bin文件比较

C# 程序部分代码览阅

using System;

using System.Collections.Generic;

using System.ComponentModel;

一、bin文件的打开方式 具体有以下两种打开方法:1、下载后如扩展名为BIN,MDF,ISO等,必须使用DAEMON TOOLS等虚拟光驱安装,DAEMON TOOLS 对于BIN和MDF等装入的时候,应该选择*.*才行。光盘镜像格式主要有:Bin,mds, ccd, 。

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using Microsoft.Win32.SafeHandles;

using System.Runtime.InteropServices;

using System.IO;

using System.Diagnostics;

using System.IO.Ports;

using System.Threading;

namespace Boot

{

public partial class Bootloader : Form

{

bool ReceiveByte_Busy = false;

bool serialPort_Closing = false;//串口正在关闭标志

Int32 ReceiveByte_Cnt = 0;//串口操作,接收字节计数

Int32 SendByte_Cnt = 0;//串口操作,发送字节计数

public List<byte> BufferData = new List<byte>();//串口数据数据帧识别缓存空间

// public FormTM tmfrm = null;//new FormTM();

public Thread thrd = null;

public FileStream writefile = null;

byte[] buffer = new byte[1024 * 1024 * 5]; // 打开文件hex to bin缓存

int bufferAdr; // 打开文件hex to bin缓存指针

public Bootloader()

{

InitializeComponent();

}

private void Form1_Load(object sender,EventArgs e)

{

#region 串口设置初始状态

try

{

foreach (string com in System.IO.Ports.SerialPort.GetPortNames())//自动获取串口号名称

{

this.cmbboxCom.Items.Add(com);

}

cmbboxCom.SelectedIndex = 0;

//默认串口设置显示

cmbBaudRate.Items.Add("1200");

cmbBaudRate.Items.Add("2400");

cmbBaudRate.Items.Add("4800");

cmbBaudRate.Items.Add("9600");

cmbBaudRate.Items.Add("19200");

cmbBaudRate.Items.Add("38400");

cmbBaudRate.Items.Add("115200");

cmbBaudRate.SelectedIndex = 3;

cmbDataBit.SelectedIndex = 0;

}

catch

{

MessageBox.Show("找不到串口连接!","Error");

}

#endregion

}

private void btnOpen_Click(object sender,EventArgs e)

{

#region 串口点击设置

if (!serialPort1.IsOpen)

{

string sComNum = cmbboxCom.Text;

string sBaudRate = cmbBaudRate.Text;

string sDataBit = cmbDataBit.Text;

try

{

serialPort1.PortName = sComNum;

serialPort1.BaudRate = Int32.Parse(sBaudRate);

serialPort1.DataBits = Int32.Parse(sDataBit);

serialPort1.ReadTimeout = 500;

serialPort1.WriteTimeout = 500;

serialPort1.Open();

if (serialPort1.IsOpen)

{

btnOpen.Text = "关闭";

cmbboxCom.Enabled = false;

cmbBaudRate.Enabled = false;

cmbDataBit.Enabled = false;

}

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

}

else

{

try

{

serialPort1.Close();

if (!serialPort1.IsOpen) // 如果已经关闭串口

{

btnOpen.Text = "打开";

cmbboxCom.Enabled = true;

cmbBaudRate.Enabled = true;

cmbDataBit.Enabled = true;

this.cmbboxCom.Items.Clear();

foreach (string com in System.IO.Ports.SerialPort.GetPortNames()) //重新自动获取串口号名称

{

this.cmbboxCom.Items.Add(com);

}

}

bin文件打开方法如下:1、首先打开此电脑,点击查看,勾选文件扩展名。2、右键点击bin文件,选择重命名,修改文件后缀,尝试txt、jpg、zip、pdf等常见格式。3、系统提示改变扩展名可能导致文件不可用,点击是,然后打开文件,。

}

catch { }

}

#endregion

}

private void serialPort1_DataReceived(object sender,System.IO.Ports.SerialDataReceivedEventArgs e)

{

if (serialPort_Closing == true)//如果正在关闭,忽略操作,直接返回,尽快的完成串口监听线程的一次循环

{

return;

}

try

{

ReceiveByte_Busy = true;//串口接收忙碌标志

int ReceiveNums = serialPort1.BytesToRead;//记录缓存数量

ReceiveByte_Cnt += ReceiveNums;

this.Invoke((EventHandler)(delegate

{

txtbRcvArea.Text = ReceiveByte_Cnt.ToString("D");

if (chkbHexDisplay.CheckState == CheckState.Checked)

{

byte[] buf = new byte[ReceiveNums];//

serialPort1.Read(buf,0,ReceiveNums);//读取缓冲数据

ThreadPool.QueueUserWorkItem(new WaitCallback(ThreadSavDat),buf);

int idx = 0;

for (; idx < BufferData.Count - 3; idx++)

{

if (BufferData[idx] == 0x39 && BufferData[idx + 1] == 0xD7 && BufferData[idx + 2] == 0x11)

{

if (BufferData.Count - idx >= 33)

{

byte[] tmb = new byte[33];

BufferData.CopyTo(idx,tmb,0,tmb.Length);

}

else

{

break;

}

}

}

BufferData.RemoveRange(0,idx);

string tempstr = string.Empty;

for (int i = 0; i < ReceiveNums; i++)

{

tempstr += buf[i].ToString("X2") + " ";

}

if (chkbPauDisp.CheckState == CheckState.Unchecked)

{

txtbRcvArea.AppendText(tempstr);//追加到接收数据显示框中

bin文件打开方法如下:1、首先打开此电脑,点击查看,勾选文件扩展名。2、右键点击bin文件,选择重命名,修改文件后缀,尝试txt、jpg、zip、pdf等常见格式。3、系统提示改变扩展名可能导致文件不可用,点击是,然后打开文件,。

}

}

else

{

serialPort1.Encoding = System.Text.Encoding.GetEncoding("GB2312");//解决乱码问题,国标2312编码格式

if (chkbPauDisp.CheckState == CheckState.Unchecked)

{

txtbRcvArea.AppendText(serialPort1.ReadExisting());

}

}

// ledRcvStat.LEDSwitch = true;

// ledRcvStat.Invalidate();

// stat_timer.Enabled = true;

}));

ReceiveByte_Busy = false;

}

catch (Exception er)

{

}

}

void ThreadSavDat(object o)

{

byte[] buf = o as byte[];

if (writefile != null && writefile.CanWrite)

{

writefile.Write(buf,0,buf.Length);

}

}

private void button1_Click(object sender,EventArgs e)

{

OpenFileDialog ofd = new OpenFileDialog();

ofd.Title = "请选择要打开的文本文件";

ofd.InitialDirectory = @"C:\Users\SpringRain\Desktop";

ofd.Multiselect = true;

ofd.Filter = "HEX文件|*.hex|文本文件|*.txt|所有文件|*.*";

ofd.ShowDialog();

string path = ofd.FileName; //获得用户选中的文件的路径

//list.Add(path);//将文件的全路径存储到泛型集合中

string fileName = Path.GetFileName(path);//获得了用户打开文件的文件名

//listBox1.Items.Add(fileName);//将文件名放到ListBox中

tbHexPath.Text = fileName;

if (path == "")

{

return;

}

FileStream fsRead = new FileStream(path,FileMode.OpenOrCreate,FileAccess.Read);

string szLine;

int startAdr;

int endAdr;

endAdr = 0;

bufferAdr = 0;

txtbRcvArea.Text = "";

while (true)

{

szLine = HexReader.ReadLine(); //读取Hex中一行

if (szLine == null) { break; } //读取完毕,退出

if (szLine.Substring(0,1) == ":") //判断首字符是”:”

{

if (szLine.Substring(1,8) == "00000001") { break; } //文件结束标识

if ((szLine.Substring(8,1) == "0") || (szLine.Substring(8,1) == "1"))//直接解析数据类型标识为 : 00 和 01 的格式

{

int lineLenth;

string hexString;

hexString = szLine.Substring(1,2);

lineLenth = Int32.Parse(hexString,System.Globalization.NumberStyles.HexNumber); // 获取一行的数据个数值

hexString = szLine.Substring(3,4);

startAdr = Int32.Parse(hexString,System.Globalization.NumberStyles.HexNumber); // 获取地址值

for (int i = 0; i < startAdr - endAdr; i++) // 补空位置

{

hexString = "FF";

buffer[bufferAdr] = value;

bufferAdr++;

}

for (int i = 0; i < lineLenth; i++) // hex转换为byte

{

hexString = szLine.Substring(i * 2 + 9,2);

byte value = byte.Parse(hexString,System.Globalization.NumberStyles.HexNumber);

buffer[bufferAdr] = value;

bufferAdr++;

}

endAdr = startAdr + lineLenth;

}

}

}

txtbRcvArea.Text = byteToHexStr(buffer,bufferAdr);

}

private void button3_Click(object sender,EventArgs e)

{

SaveFileDialog sfd = new SaveFileDialog();

sfd.InitialDirectory = @"C:\Users\SpringRain\Desktop";

sfd.Title = "请选择要保存的文件路径";

sfd.Filter = "BIN文件|*.bin|文本文件|*.txt|所有文件|*.*";

.bin文件怎么打开

sfd.ShowDialog();

//获得用户要保存的文件的路径

string path = sfd.FileName;

//获得了用户打开文件的文件名

string fileName = Path.GetFileName(path);

rbHexPath.Text = fileName;

if (path == "")

{

return;

}

FileStream fsWrite = new FileStream(path,FileMode.OpenOrCreate,FileAccess.Write);

// byte[] buffer = Encoding.Default.GetBytes(txtbRcvArea.Text);

fsWrite.Write(buffer,0,bufferAdr);

MessageBox.Show("保存成功");

}

//字节数组转16进制字符串

public static string byteToHexStr(byte[] bytes,int len)

{

string returnStr = "";

if (bytes != null)

{

for (int i = 0; i < len; i++)

{

returnStr += bytes[i].ToString("X2");

}

bin文件是PE光盘镜像文件。打开bin格式文件的方法如下:1、首先下载一个叫做软媒魔方的工具,然后在软媒魔方主界面找到【应用大全】,点击打开。2、在【磁盘文件】下找到虚拟光驱,点击打开。3、弹出“软媒虚拟光驱”窗口,点击。

}

return returnStr;

}

private void button4_Click(object sender,EventArgs e)

{

txtbRcvArea.Text = "";

}

}

}

上一篇 2023年02月10 00:51
下一篇 2023年02月08 04:59

相关推荐

  • wifi怎么连接,手机一招连接邻居wifi

    手机一招连接邻居wifi,现在每户家庭都会装有无线路由器,我们平时不管是在哪个地方都会需要给手机或者笔记本、平板电脑连接wifi网络上网,这个时候无线路由器就发挥了很大的作用,那么无线路由器怎么设置w

    2023年02月09 222
  • 安全模式怎么进,win10开机如何进入安全模式

    有位win10系统用户,win10开机如何进入安全模式,在开机的时候长按f8已经进不去安全模式里面,今天就和大家介绍win10系统进入安全模式的方法。1、同时按下”win+r“组合按键,输入命令:ms

    2023年01月09 299
  • win10系统怎么升级,win10系统怎么升级系统版本

    IT之家12月21日消息,微软承认本月补丁星期二活动日中发布的KB5021233更新,导致部分Win10设备升级之后出现0xc000021a蓝屏错误。虽然这个问题出现存在于Win10系统,但是部分Wi

    2023年02月06 254
  • 怎么重装,联想笔记本开机自动修复开不了机

    一、硬件1、CPU首先确定CPU,CPU是整机的性能瓶颈。根据自己需求来,不懂可以找客服问问。需要关注带字母的CPU步骤一:首先,我们先去网页下载一个重装系统大师的重装系统大师在最上方我们可以找到“系

    2023年02月03 268
  • 怎么下载两个微信

    微信占据了我们的生活,很多人为了让自己的私人生活不受打扰,准备两部手机,这样就有两个微信了,一个用来工作,个人私生活不受打扰,另一个则是生活号。不过其实不需要那么麻烦,为了要一个微信号,多买一部手机花

    2023年02月04 251
  • 苹果笔怎么用,ipad

    我们在工作中,每次开会都要手写会议纪要,其实苹果手机自带会议记录神器,只要按下这个按钮,就能一键记录会议内容。1.先进入微信对话框,ipad,然后长按2秒选择「全屏输入」,整块屏幕都变成白板了,点击底

    2023年02月05 259
  • 怎么看显卡配置,如何看自己电脑的显卡配置

    我们买电脑的时候,根本就不清楚电脑的性能,只是听了导购说了一大堆听不懂的神功能,如何看自己电脑的显卡配置,最后很可能被坑了几百甚至几千块!,买电脑我们主要看的就是两个硬件功能,一:显卡,二:处理器一、

    2023年01月09 277
  • 苹果悬浮球怎么设置,苹果悬浮球怎么设置返回上一层

    现在很多手机都备有“悬浮球”功能,对于现在的全面屏手机来说,“悬浮球”功能简直不要太好用了。它不仅可以直接回到桌面,还可以自定义设置很多有趣的功能。而在我们不需要它的时候,它会自动的半透明化,完全不影

    2023年01月19 290
  • 微信公众号怎么发布

    微信表示,希望运营者遵守平台规范,自查整改,避免违规。共建安全、健康、绿色的平台生态环境。

    2023年01月17 260
  • 钢化膜怎么取下来,手机钢化膜太久没换抠不下来

    滚叔最近开了一个保护膜的读者社群,这是一个意想不到的群。滚叔是一个随便散漫的老头,除了保鲜膜之外,手机不贴膜,家里从来不用其它膜,当然面膜更不用了,那也真够娘娘腔的。我觉得家具就该是家具的样子,开裂、

    2023年01月20 300
  • 页眉怎么删除,页眉横线一直删除不了

    如果说Word中什么东西最烦人,那么对于不少小伙伴来说,无疑就是页眉横线了,怎么也删不掉,真糟心!其实,想要快速Word中烦人的页眉横线并不难,这里就有4种删除方法,学会后,不用几分钟就能搞定了~一、

    2023年01月15 212
  • 公众号怎么申请,怎么到微信公众号怎么申请

    一、明确无误的微信公众号名称:几种命名方法二、及时互动,促成成交。微信公众号开场白设置企业回云客员工微信管理系统员工微信聊天记录同步文字、语音、图片、视频、文件等各种类型聊天内容实时上传云端;随时查看

    2023年02月03 259
  • 苹果8怎么截图,苹果8怎么双击截图

    新买的iPhone手机,还只会使用它的基础功能吗?今天给大家分享8个iPhone里隐藏的实用小技巧,苹果8怎么双击截图,让你的手机变得更智能便捷,千万不要错过了~1.备忘录扫描苹果8手机的截屏方式有两

    2023年02月04 265
关注微信