记得有一个hex文件转换成2进制的控件
谁帮忙发一下,我上次记得在哪看到过,但是现在搜不到了,请网友帮下忙!谢谢! IAR、MDK可以直接生成啊 是不是 这个 ?! xyz.543 发表于 2015-12-26 17:46是不是 这个 ?!
我记得是一个ocx的控件,现在我是想用自己的上位机上调用这个控件,然后调用里面的函数,讲hex码转换成2进制发送给下位机实现烧录! objcopy -I ihex -O binary xx.hex xx.bin vb的吗? runapp 发表于 2015-12-26 22:48
vb的吗?
ocx控件在任何平台xiaoy都可以用的啊 dhw5qq 发表于 2015-12-26 22:49
ocx控件在任何平台xiaoy都可以用的啊
那就不清楚了…… 本帖最后由 xyz.543 于 2015-12-27 03:03 编辑
dhw5qq 发表于 2015-12-26 22:32
我记得是一个ocx的控件,现在我是想用自己的上位机上调用这个控件,然后调用里面的函数,讲hex码转换成2 ...
我说楼主啊!您要找的这控件还真是不易找啊?! 我有hex转bin的源码 xyz.543 发表于 2015-12-27 03:01
我说楼主啊!您要找的这控件还真是不易找啊?!
上次无意看到有人发帖说自己用上位机实现固件升级,用到的就是那个控件,我当时没收藏!现在需要用,但是又找不到了!
我现在要实现选择hex元件之后转换成16进制,用串口烧录到单片机的bootload区! dhw5qq 发表于 2015-12-27 15:01
上次无意看到有人发帖说自己用上位机实现固件升级,用到的就是那个控件,我当时没收藏!现在需要用,但是 ...
您可以到搜寻引擎如 Google 或 Baidu 中,输入〔side amobbs: 您要找的关键字或词〕之后再慢慢的分析及过滤了。
几年前程序扣出来的,可以看看...那时候刚学上位机编程...将就看看吧...
#include "HexParser.h"
#include <iostream>
#include <fstream>
#include <algorithm>
#include <iterator>
#include <map>
using namespace std;
// ascii码与二进制转换
map<char, byte> mapAsciiToBit4;
// 构造函数
CHexParser::CHexParser()
{
InitMapTable();
}
CHexParser::CHexParser(char* strHexFileName)
{
InitMapTable();
}
// 析构函数
CHexParser::~CHexParser()
{}
bool CHexParser::ParseHexFile(char* strHexFileName)
{
FILE *fp = fopen(strHexFileName, "r");
if(fp ==NULL){
MessageBox(NULL, "文件打开失败", "错误", MB_OK);
return false;
}
m_vecHexPostParse.clear();
char lineBuf={0};
int num;
while((!feof(fp))&&fgets(lineBuf, sizeof(lineBuf), fp) ) //
{
if(lineBuf != ':')
{
MessageBox(NULL, "错误", "Hex文件格式有误", MB_OK);
return false;
}
//num = strlen(lineBuf);
byte high;
byte low;
for(unsigned int i=1; i<(strlen(lineBuf)-3); i+=2)
{
if(i==1){
if(mapAsciiToBit4]!=0){
break; // 02为扩展段地址记录//文件结束
}else{
i=7;
}
}else{
high= mapAsciiToBit4];
low = mapAsciiToBit4];
low = ((low & 0x0F) | ((high & 0x0F) << 4)); //不能在下面直接运算,会出错
low =EncrytData.Encryption(low);
//low=EncrytData.Decryption(high);
m_vecHexPostParse.push_back(low);
}
}
}
fclose(fp);
//SaveBtn->Enabled = true;
return true;
}
bool CHexParser::SaveAsBinaryFile(char* strSaveName)
{
//FILE * fp = fopen(strSaveName, "w");
ofstream fout;
fout.open(strSaveName,ios::binary);
copy(m_vecHexPostParse.begin(), m_vecHexPostParse.end(),ostream_iterator<char>(fout,""));
fout.close();
return true;
}
void CHexParser::InitMapTable()
{
mapAsciiToBit4.insert( pair<char, byte>('0', 0x00));
mapAsciiToBit4.insert( pair<char, byte>('1', 0x01));
mapAsciiToBit4.insert( pair<char, byte>('2', 0x02));
mapAsciiToBit4.insert( pair<char, byte>('3', 0x03));
mapAsciiToBit4.insert( pair<char, byte>('4', 0x04));
mapAsciiToBit4.insert( pair<char, byte>('5', 0x05));
mapAsciiToBit4.insert( pair<char, byte>('6', 0x06));
mapAsciiToBit4.insert( pair<char, byte>('7', 0x07));
mapAsciiToBit4.insert( pair<char, byte>('8', 0x08));
mapAsciiToBit4.insert( pair<char, byte>('9', 0x09));
mapAsciiToBit4.insert( pair<char, byte>('A', 0x0A));
mapAsciiToBit4.insert( pair<char, byte>('B', 0x0B));
mapAsciiToBit4.insert( pair<char, byte>('C', 0x0C));
mapAsciiToBit4.insert( pair<char, byte>('D', 0x0D));
mapAsciiToBit4.insert( pair<char, byte>('E', 0x0E));
mapAsciiToBit4.insert( pair<char, byte>('F', 0x0F));
}
//以上是c文件
//下面是H文件
#ifndef _HEX_PARSER_H
#define _HEX_PARSER_H
#include <vector>
#include <string>
#include <windows.h>
#include "encrypt.h"
using namespace std;
class CHexParser{
public:
CHexParser();
CHexParser(char* strHexFileName);
virtual ~CHexParser();
bool ParseHexFile(char* strHexFileName);
bool SaveAsBinaryFile(char* strSaveName);
void InitMapTable();
private:
vector<byte> m_vecHexPostParse;
Encrypt EncrytData;
};
#endif//_HEX_PARSER_H
mcuyongchao 发表于 2015-12-28 23:31
几年前程序扣出来的,可以看看...那时候刚学上位机编程...将就看看吧...
stc把ISP协议公开了?
页:
[1]