回复:(卧龙孔明)程序无法编译通过,因为你没有加#in...
这个我没有复制完全,真个完整的是:
#include<ctype.h>
#include<stdio.h>
#include<string.h>
#define DataN 16 /* 假定数据区间的最长长度 */
/*定义Intel HEX记录的结构*/
struct {
unsigned char ll ; /*长度 */
unsigned int aaaa ; /*地址 */
unsigned char tt ; /*记录类型,0-数据,1-终止*/
unsigned char dd[DataN]; /* 数据 ??*/
unsigned char cc ; /*校验和*/
} IntelHEX ;
bool AnalyseHEX(char hex[])
{
unsigned char i ;
unsigned char j ;
unsigned char t ;
unsigned char n ;
unsigned char cc ;
unsigned int x ;
if(hex[0]!=':') return 1 ; /*检查冒号*/
t=(toint(hex[1])<<4)+toint(hex[2]); /*检查长度*/
if(t>DataN) return 1 ;
n=2*t+12 ; /* 字符串总的长度,不包括'\0',却为何要 12 呢?? */
if(n!=strlen(hex)) return 1 ;
IntelHEX.ll=t ; /* 有效数字个数 */
cc=t ; /* 对所有值求和以便求补 */
t=(toint(hex[3])<<4)+toint(hex[4]); /*提取地址*/
cc+=t ;
x=(unsigned int)t ;/*提取地址高位*/
x<<=8 ; /* 高位加权 */
t=(toint(hex[5])<<4)+toint(hex[6]);
cc+=t ;
x+=(unsigned int)t ;/*提取地址低位*/
IntelHEX.aaaa=x ; /* 地址 */
t=(toint(hex[7])<<4)+toint(hex[8]); /*提取记录类型*/
if((t==0)||(t==1)) { /* 非扩展地址 */
cc+=t ;
IntelHEX.tt=t ;
}
else {
return 1 ; /* 怎么不允许地址扩展?? */
}
/*提取数据*/
i=9 ; /* 有效数据的开始位置 */
if(t==0) /* 有效数据时: */
{
j=0 ;
n=IntelHEX.ll ;
do {
t=(toint(hex[i++])<<4);
t+=toint(hex[i++]);
cc+=t ;
IntelHEX.dd[j++]=t ;
} while(--n!=0);
}
/*提取校验和*/
t=(toint(hex[i++])<<4); t+=toint(hex[i++]); /* 校验和数值 */
cc+=t ;
IntelHEX.dd[j++]=t ;
/*检查校验*/
if(cc==0) return 0 ;
else return 1 ;
}
#define M (DataN+13) /* 假定Intel HEX 文件中最长行的长度 */
#include<ctype.h>
#include<stdlib.h>
int main(void)
{
FILE *fp_in;
char *phex=(char *)malloc(sizeof(char)*M);
if((fp_in=fopen("C:\\cms.hex","r"))==NULL) /*文件名不区分大小写*/
{
perror("Error Open"); /*系统错误信息*/
}
fseek(fp_in, 0, SEEK_SET);
while(!feof(fp_in)) /*直到文件结束*/
{
fgets(phex,M,fp_in); /* 读取一行字符 */
if(AnalyseHEX(phex))
{ printf("%d\t%s\n",AnalyseHEX(phex),phex);
printf("the error file form !!\n");
free(phex);
fclose(fp_in);
return 0 ;
} printf("%d\t%s\n",AnalyseHEX(phex),phex);
}
printf("the exact file form !!\n"); /* 正确的intel hex文件 */
fclose(fp_in);
free(phex);
return 0 ;
}
本来是希望用来判定intel hex文件的检验码是不是正确的!
附件中文件是一个 intel hex格式的文件 例子
[此贴子已经被作者于2007-8-18 9:51:57编辑过]