Fortolke Intel Hex Format
Jeg har brug for at fortolke og gemme informationer der er læst ud fra en fil i Intel Hex Formatet.Et eksempel herpå er følgende (der er indsat mellemrum af pædagogiske grunde)
:10 05AA 00 000102030405060708090A0B0C0D0E0F 88
progLength = 0x10 = 16
ADDRESS = 0x05AA
RECTYPE = 00
DATA = 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F
CHKSUM = 0x88
Jeg indlæser 1 linie af gangen og forestiller mig at jeg skal bruge en pointer til at iterere mig gennem arrayet. Men hvordan ???
Og hvordan får jeg de korrekte informationer ind i mine variabler?
#include<stdio.h>
#include<stdlib.h>
main(int argc, char *argv[])
{
FILE *fp1;
char prog[0x10000]; /* programlager hvor data fra hex-fil gemmes*/
char progline[0x50]; /* den indlæste linie */
char *ppl;
fp1 = fopen("input.hex","r");
while (fscanf(fp1,"%s",&progline) != EOF)
{
ppl = progline;
char *progLength;
char *progOffset = 0;
/* Start Code accepted */
if ( *ppl++ == ':' )
{
/* *ppl peger nu på 1 (se eksemepl) */
/* 10 (0x10) skal lægges ind i progLength */
/* 05AA (0x05AA) skal ind i progOffset */
/* 00 er ikke nødvendig at reagere på */
/* De efterfølgende data skal placeres fra offset (0x05AA) og fremad i prog */
} else {
/* No start code found */
}
}
}