Я пытаюсь прочитать текстовый файл с данными CAN, формат файла примерно такой:
XL_CAN_EV_TAG_RX_OK ch: 0 t = 51165282304 id: 98FF5C80 dlc: 7 000000040000E0 XL_CAN_EV_TAG_RX_O0 т = 51172728832 ID: 98FF1480 DLC: 7 FFFFFFAD7C1CFF XL_CAN_EV_TAG_RX_OK ч: 0 т = 51173007360 ID: 98FF1080 DLC: 7 FFFFE30C0E01FF XL_CAN_EV_TAG_RX_OK ч: 0 т = 51173285888 ID: 98FF1180 DLC: 7 FFFF9706FEFFFB XL_CAN_EV_TAG_RX_OK ч: 0 т = 51173564416 ID: 98FF1280 DLC: 7 FFFF9706FEFFFB
Я должен прочитать CANid и CANDATA, как показано выше, мне удалось прочитать CANID, используя:
unsigned int hex = 0;
fscanf(fr, "%X", &hex);
printf(" %X ", hex);
Я использую c = fgetc(FR);пока c не читает второе «:», а hex читает «canid».
Но когда мне нужно прочитать данные, используя тот же код "fscaf", он читает только последние 7 данных, например, я получаю результаты, подобные этому:
40000e0
D7C1CFF
C0E01FF
6FEFFFB
6FEFFFB
Это проблема.Альтернатива, которую я нашел, состоит в том, чтобы прочитать это как символ.
Если я использую getc для чтения, я получаю данные в формате char, я не уверен, как преобразовать это в шестнадцатеричный код, а также он читает каждую букву отдельно, и мне нужно объединить их, а затем преобразовать ихв частности, в тип int (hex) и отправьте его в массив, примерно так:
data [0] = FF;Данные [1] = FF;Данные [2] = FF;Данные [3] = АД;Данные [4] = 7C;Данные [5] = 1С;data [6] = FF;
Я застрял здесь два дня, все погуглил и все перепробовал, похоже, ничего не работает, не могли бы вы помочь мне с этим.Спасибо.