精华内容
下载资源
问答
  • bin文件合成工具

    2018-03-28 09:43:29
    bin 文件合成,任意指定地址合成文件,多个文件合成
  • 可以将任意个单独的bin文件合成到一个bin文件上,并且不会出现数据覆盖、丢失。简单实用,只要配置好文件地址以及.bin文件的字节数目即可
  • BIN文件合并,多个BIN文件合并一个文件
  • 上一小节主要是练习下本地文件的打开和另存为,现在我们开始正式bin文件合成工具的开发。 先学习《Qt学习之路2.pdf》第36节 二进制文件读写。 本篇文章的目标: 1.重新设计界面 2.实现不同bin文件的选取 3.合成bin...

    概述

    上一小节主要是练习下本地文件的打开和另存为,现在我们开始正式bin文件合成工具的开发。

    先学习《Qt学习之路2.pdf》第36节 二进制文件读写。

    本篇文章的目标:
    1.重新设计界面
    2.实现不同bin文件的选取
    3.合成bin文件涉及的内容略多:将选好的3个bin文件根据偏移量合成为1个bin文件,空出的内容填充为FF。在本篇文章,我们先实现一个bin文件的读取和另存写入。

    实现步骤

    1.调整界面并布局。

    工具是为了自己开发方便,不求做成一个通用工具去发布给大家使用(这个可能比较耗精力,作为初学者我还是先简单实现即可)。我的实际应用中合成主要分为3端,IAP、APP、最后的参数页。界面设计如下,其中路径和偏移量的显示框我们都是用LineEdit组件,避免出现换行问题:
    在这里插入图片描述

    2.显示文件路径和偏移量

    IAP、APP、Para三个按钮实现功能相同,选取本地bin文件,将路径和默认偏移量填写到界面的对应位置即可。在上一小节已经测试过通过文件框选取本地文件。

        QString path = QFileDialog::getOpenFileName(this,
            tr("Open File"),//控件的objectName
             ".",           //对话框显示时默认打开的目录,"." 代表程序运行目录
            tr("Bin Files(*.bin)"));   //对话框的后缀名过滤器,将txt文件改为bin文件。
        qDebug("path = %s",qPrintable(path));
    

    这里我们只需将过滤器修改为*.bin即可。将path打印出来,即为选中文件的绝对路径:
    在这里插入图片描述
    将path直接填充到路径显示框中即可。程序中没有使用path,而是使用一个QString变量获取文件信息,最后进行填充:

    	QString buf;
    	QFileInfo info(file);
    
    	buf = QString(info.absolutePath());
    	buf.append("/");
    	buf.append(info.baseName());    //直接获得文件名
    	buf.append(".bin");
    	qDebug("%s",qPrintable(buf));   //与上面的path变量相同,可直接使用path变量
    	qDebug() << info.filePath();
    
    	ui->iappathEdit->setText(buf);
    	ui->iapoffsizeEdit->setText(tr("0x00000000"));  //默认偏移量
    

    3.bin文件读取

    要主要分为两步:根据路径显示框来获取文件、读取bin文件到程序中。

            QFile readfile(ui->iappathEdit->text());    //要读取的bin文件
            QFileInfo read_file_info(readfile);         //要读取的bin文件的信息
            if (!readfile.open(QIODevice::ReadOnly)) {  //只读方式打开bin文件
                QMessageBox::warning(this, tr("Read File"),
                    tr("Cannot open file:\n%1").arg(ui->iappathEdit->text()));
                return;
            }
            QDataStream BinFileData(&readfile);  //将刚刚创建的 file 对象的指针传递给一个QDataStream实例 BinFileData
            char *pBuff = new char[read_file_info.size()];  //要读取bin文件的大小
            BinFileData.readRawData(pBuff,static_cast<int>(read_file_info.size()));
    

    这段代码我们看两个地方:
    a. readRawData函数解释如下:
    在这里插入图片描述
    这里实现读取数据到pBuff数组。
    b. static_cast<int>强制转换:

    static_cast相当于传统的C语言里的强制转换,该运算符把expression转换为new_type类型(C++强制类型转换:static_cast)。

    这里将read_file_info.size()转换为int数据。

    参考文章:C++四种类型转换运算符:static_cast、dynamic_cast、const_cast和reinterpret_cast_C语言中文网

    double scores = 95.5;
    int n = static_cast<int>(scores);
    

    4.将读取的bin文件写入到新的文件。

        QString path = QFileDialog::getSaveFileName(this,
            tr("Open File"),
            ".",
            tr("Bin Files(*.bin)"));
        if(!path.isEmpty()) {
            QFile file(path);
            if (!file.open(QIODevice::WriteOnly)) {
                QMessageBox::warning(this, tr("Write File"),
                    tr("Cannot open file:\n%1").arg(path));
                return;
            }
    

    首先通过上一小节使用到另存为对话框,设置我们的存储目标文件。然后直接将第3步读取到的数据写入:

            file.write(pBuff);
    

    5.测试运行效果:

    在这里插入图片描述
    左侧是我们用于测试的源bin文件,右侧是通过generate功能生成的新bin文件。可以看到只有部分数据,到00正好结束。根据以往的单片机编程,很容易想到00是一个字符串的结束符。

    6.解决00结束符问题

    我们打印下读取的文件长度:

    qDebug() << static_cast<int>(read_file_info.size());
    

    控制台输出为8,那么问题应该就出在了file.write(pBuff),查看函数原型:
    在这里插入图片描述
    可以看出,写入长度为data字符串的长度,即遇到00结束。我们将代码修改为:

    	QByteArray DataAllArray;
    	DataAllArray = QByteArray(pBuff,static_cast<int>(read_file_info.size()));
    
    	file.write(DataAllArray);
    

    再次测试,结果如下:
    在这里插入图片描述

    展开全文
  • 如何将多个bin文件合成一个bin文件?一、使用到的软件 WinHex二、所用文件 Bootload.bin Application.bin三、生成目标文件 Target.bin四、步骤 1)新建目标文件target.bin,此时文件大小为0. 2)使用...

    一、使用到的软件
    WinHex

    二、所用文件
    Bootload.bin
    Application.bin

    三、生成目标文件
    Target.bin

    四、步骤
    1)新建目标文件target.bin,此时文件大小为0.
    2)使用WinHex软件打开Target.bin、Bootload.bin和Application.bin文件。
    3)确定合成的顺序,在该实例的执行顺序是先执行Bootload.bin,再执行Application.bin。
    4)将Bootload.bin的文件内容全部复制到Target.bin文件中;再将Application.bin的文件内容复制并黏贴到Target.bin文件末尾(鼠标定位到最后一个字符即可,在执行黏贴动作),最后保存即可。

    五、说明
    该方法简单明了,易于操作。我使用过Ubin软件,发现地址偏移量不知道的情况下合成会失败(合成的文件不是我们想要的)。由于自己试用过WinHex软件,摸索出了这个傻瓜式文件合成方法,供大家参考。

    展开全文
  • 将多个BIN文件合成一个

    千次阅读 2017-06-12 14:58:50
    将多个BIN文件合成一个 摘录于:http://jingyan.baidu.com/article/e2284b2b5b23e5e2e6118db8.html 打开UBIN工具,如下图所示 2 点“浏览”选择BIN文件 3 找到BIN文件 4 选择“打开”,打开...

    将多个BIN文件合成一个

    摘录于:http://jingyan.baidu.com/article/e2284b2b5b23e5e2e6118db8.html

    下面的图片完全是从原文摘录过来的,这里本人绝无盗取原作者知识产权之意,只是为了本人备份知识,请读者阅读原文!


    这里上传本博客使用到的工具:http://download.csdn.net/detail/chengdong1314/9868561

    展开全文
  • J-flash ARM二、所需合成文件 1)Bootload.hex(Bootload.bin) 2)Application.hex(Application.bin)三、步骤 打开J-flash ARM软件,将要合成的第一个文件Bootload.hex拖到J-flash ARM中,接着点击File,打开...

    一、所需软件
    J-flash ARM

    二、所需合成文件
    1)Bootload.hex(Bootload.bin)
    2)Application.hex(Application.bin)

    三、步骤
    打开J-flash ARM软件,将要合成的第一个文件Bootload.hex拖到J-flash ARM中,接着点击File,打开Merge data file…找到第二个要合成的文件Application.hex;最后点击Save data file as…选择要保存的文件类型即可。

    四、说明
    我在所需文件后面有个括号括起来有bin文件,而我只介绍了hex文件的合成。之所以我推荐使用hex文件去合成bin文件,是因为他们的合成方法步骤都一样,但是hex文件打开时不需要输入偏移地址,而bin文件需要手动输入,这样就避免了因偏移地址合成出错的问题。故我推荐使用hex文件去合成所需要的bin文件。

    展开全文
  • 这里写目录标题概述实现步骤偏移量获取数据填充 概述 在上一章节我们实现了单个bin文件的读取和写入,这一节我们实现完整的generate功能。 实现步骤 偏移量获取 数据填充
  • 《Qt学习之路2.pdf》第17节 文件对话框 首先制作一个界面,包括保存、另存为和内容显示。 void Widget::on_openBt_clicked() { QString path = QFileDialog::getOpenFileName(this, tr("Open File"), ".", tr(...
  • 这里写目录标题 概述 增加bin文件大小显示 增加MD5值计算 增加图标打包程序 概述 在这篇文章中,我们对程序进行一些完善,然后打包。 增加bin文件大小显示 增加bin文件大小的显示,这样使用过程中如果选错了文件,...
  • 嵌入式开发中,常需要下载多个BIN文件,如何将多个BIN文件合成一个BIN文件下载呢,本文以UBIN软件为例,操作步骤仅供参考。
  • 嵌入式开发中,常需要下载多个BIN文件,如何将多个BIN文件合成一个BIN文件下载呢,本文以UBIN软件为例,操作步骤仅供参考。
  • 给大家分享一篇合成bin文件的代码(自己用来做·0.96寸OLED播放动画写的) buffer数组根据文件字节数目来自行更改 #include<stdio.h> #include<stdlib.h> #define PICTURE_NUM 1314 int main(void) {...
  • UBIN.zip 两个bin文件 合并成1个bin文件
  • BIN文件合并工具 UBIN

    2019-06-22 11:25:52
    超好用的一个工具,可以实现两个二进制bin文件的合并,任一指定偏移量合并。使用它可以直接将编译好的两个bin文件按照程序员需要合并。在单片机的开发过程中,经常需要将两个单独的bin文件合并成一个文件,方便烧写...
  • 这几天在写STM32的ISP烧录工具,因此有涉及到输入hex文件或bin文件进行烧录的问题,所以对hex文件和bin文件进行了些总结。 1 hex介绍 Hex 全称 (Intel HEX)文件是由一行行符合Intel HEX文件格式的文本所构成的...
  • ELF文件和BIN文件

    2014-08-08 13:37:21
    1. BIN文件是 raw binary 文件,这种文件只包含机器码。 2. ELF文件除了机器码外,还包含其它额外的信息,如段的加载地址,运行地址,重定位表,符号表等。 所以ELF文件的体积比对应的BIN文件要大。 文件的...
  • 使用arduino生成bin二进制文件 1.先编译一次工程 2.点击 项目-> 导出已编译的二进制文件 3.文件位置:两个路径,一个为编译工程的原路径;一个为C盘缓存路径(我的“C:\Users\Administrator\AppData\Local\Temp\...
  • Bin文件合并工具

    2007-12-12 10:13:41
    Bin文件合并工具,支持设定偏移地址。
  • bin文件合并工具(UBIN)使用方法

    千次阅读 2018-11-27 17:26:22
    在单片机的开发过程中,经常需要将两个单独的bin文件合并成一个文件,方便烧写和生产。 超好用的一个工具,可以实现两个二进制bin文件的合并,任一指定偏移量合并。使用它可以直接将编译好的两个bin文件按照程序员...
  • bin文件操作

    2020-07-28 16:18:31
    目前在做一个项目,具有在线升级功能,具有boot区,boot_data区,APP区和上位机升级软件 ... 。正常情况下是下载Boot程序,然后用上位机下载APP,考虑到生产上...1、要能根据APP文件生成boot_data文件; 2、如果考虑加密
  • 将这些.bin文件合成为一个.bin文件4.问题它出现了5.新的尝试6.总结 1.bin是啥 在合成前先了解.bin格式文件是个啥 bin是binary的缩写,是一种二进制文件,其用途依系统或应用而定。 比如虚拟光驱文件常用.bin作为后缀...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,549
精华内容 5,419
关键字:

bin文件合成