Я работаю над API для чтения сигнала CAN.Эта часть кода выводит полученный CAN в виде строки.
xlCanGetEventString (& xlCanRxEvt)
Сигнал CAN имеет вид:
XL_CAN_EV_TAG_RX_OK ch:1 t=9026813952 id:98FF1880 dlc:8 862EC5350C138336
XL_CAN_EV_TAG_RX_OK ch:1 t=9027108864 id:98FF1980 dlc:8 500111065C018C03
XL_CAN_EV_TAG_RX_OK ch:1 t=9027411968 id:98FF1A80 dlc:8 0000FFFFFFFFFFFF
XL_CAN_EV_TAG_RX_OK ch:1 t=9027411968 id:98FF1A80 dlc:8 0000FFFFFFFFFFFF
XL_CAN_EV_TAG_RX_OK ch:1 t=9027657728 id:98FF5180 dlc:5 C000000000
В этом сигнале мне нужно прочитать идентификаторы из каждой строки, а затем отобразить данные только для идентификаторов, которые мне нужны.В настоящее время я делаю это, используя кучу операторов if и for, и используя массивы char для чтения различных частей строки.
Это кажется мне очень неэффективным, есть ли другой способ сделать это?Может быть, напрямую извлечь часть Id или сравнить часть идентификатора, не сохраняя весь поток в массиве?Или любой лучший или эффективный способ сделать то же самое?Я не нахожу переменную, хранящую данные или идентификатор в structdef struct xlCanRxEvt.Любое предложение будет с благодарностью.