CODE
void prog(void)
{
char buffer[64];
char line_hex[64];
char buf[64];
char i;
char str_count;
char x;
char y;
str_count=0;
i=0;
x=0;
nbytes=0;
while(f_open(&file,path,FA_READ)!=FR_OK){};
do
{
i=0;
str_count=0;
x=0;
while (i!=64) //почистим буферы
{
line_hex[i]=0;
buffer[i]=0;
buf[i]=0;
i++;
}
do
{
while (f_read(&file,buf,1,&nbytes)!=FR_OK){}; //читаем из файла посимвольно
if ((buf[0]!=0x0D)&&(buf[0]!=0x0A)&&(buf[0]!=0x3A)){line_hex[str_count]=buf[0];str_count++;}//не учитываем : и знаки конца строки
}
while ((buf[0]!=0x0D)&&(buf[0]!=0x0A)); //пока не нашли конец строки
if ((strcmp(line_hex,"00000001FF"))!=0) //если не последняя строка то будем конвертировать в другой формат
{
i=0;
while (i!=str_count) //сначала переведем в hex из ascii
{
if (line_hex[i]==0x30)buffer[i]=0x00;
if (line_hex[i]==0x31)buffer[i]=0x01;
if (line_hex[i]==0x32)buffer[i]=0x02;
if (line_hex[i]==0x33)buffer[i]=0x03;
if (line_hex[i]==0x34)buffer[i]=0x04;
if (line_hex[i]==0x35)buffer[i]=0x05;
if (line_hex[i]==0x36)buffer[i]=0x06;
if (line_hex[i]==0x37)buffer[i]=0x07;
if (line_hex[i]==0x38)buffer[i]=0x08;
if (line_hex[i]==0x39)buffer[i]=0x09;
if (line_hex[i]==0x41)buffer[i]=0x0A;
if (line_hex[i]==0x42)buffer[i]=0x0B;
if (line_hex[i]==0x43)buffer[i]=0x0C;
if (line_hex[i]==0x44)buffer[i]=0x0D;
if (line_hex[i]==0x45)buffer[i]=0x0E;
if (line_hex[i]==0x46)buffer[i]=0x0F;
i++;
}
i=0;
while (i!=64) //почистим буферы
{
buf[i]=0;
i++;
}
i=0;
x=0;
while (i!=str_count) //окончательно формируем hex строку
{
buf[x]=buffer[i]<<4;
i++;
buf[x]=buffer[i]|buf[x];
i++;
x++;
}
i=0;
while (i!=64) //почистим буфер в котором будем формировать строку прошивки
{
buffer[i]=0;
i++;
}
buffer[0]=0x07;
buffer[1]=0x0E;
buffer[2]=((buf[0])+4);
buffer[3]=0x57;
buffer[4]=0x00;
buffer[5]=buf[1];
buffer[6]=buf[2];
putchar(buffer[0]);
putchar(buffer[1]);
putchar(buffer[2]);
putchar(buffer[3]);
putchar(buffer[4]);
putchar(buffer[5]);
putchar(buffer[6]);
}
}
while ((strcmp(line_hex,"00000001FF"))!=0); //будем выполнять действия пока не найдем последнюю строку hex
}