Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdint.h>
- #include <stdlib.h>
- #pragma warning(disable:4996)
- //ram loader
- uint8_t raw_block[180];
- uint8_t count;
- uint8_t readHex(char c)
- {
- char res;
- if (isdigit(c) != 0)
- res = c - 48; //convert ascii to digit
- else
- res = c - 55;
- return res;
- }
- int main(int argc, char **argv)
- {
- uint8_t ch;
- char file_name[255];
- FILE *fp;
- uint16_t count;
- uint16_t addr;
- uint8_t data;
- uint16_t sum;
- uint8_t sum_check;
- int cs;
- int k;
- //printf("Argc: %d\n", argc);
- if (argc == 2)
- {
- strcpy(file_name, argv[1]);
- fp = fopen(file_name, "rb"); // read mode
- if (fp == NULL)
- {
- perror("Error while opening the file.\n");
- exit(EXIT_FAILURE);
- }
- while (!feof(fp))
- {
- uint16_t checksum = 0;
- ch = fgetc(fp);
- //printf("%c", ch);
- //printf("%d",ch);
- //checksum += ch;
- int raw_data;
- if (ch == 0xAA) //check sync1
- {
- //printf("1");
- ch = fgetc(fp);
- //checksum += ch;
- if (ch == 0xAA) //check sync2
- {
- //printf("2\n");
- ch = fgetc(fp);
- //checksum += ch;
- if (ch == 0x04) //check size
- {
- //printf("3\n");
- ch = fgetc(fp);
- checksum += ch;
- if (ch == 0x80) //check raw type
- {
- //printf("R\n");
- ch = fgetc(fp);
- checksum += ch;
- if (ch == 0x02) //check 2 bytes size
- {
- //printf("R\n");
- cs = fgetc(fp);
- checksum += (uint8_t)cs;
- raw_data = cs << 8;
- cs = fgetc(fp);
- checksum += (uint8_t)cs;
- raw_data = raw_data | cs;
- checksum &= 0xFF;
- checksum = ~checksum & 0xFF;
- ch = fgetc(fp);
- if (ch==checksum)
- printf("%d\n", raw_data);
- else printf("-10\n"); //crc error
- }
- }
- }
- }
- }//end of sync 1 check
- //else printf("Skip\n");
- }
- fclose(fp);
- }
- //getch();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement