а мне нужно между ними переключаться пока что выглядит довольно индуссокодуссо: switch (num) { case 0: { test->Field[i]=n; } case 1: { test->Memo=n; } ... у меня просто еще и маллок под структуру, причем это всё в прерывании

Комментарии: 7

  1. Eugene

    malloc и прерывания - антиподы. Вы бы сформулировли более обще вашу задачу, возможно её лучше вообще совсем по-другому решать, тогда и болты против резьбы, возможно, заворачивать не придётся.

    • Anonim

      Парсер ответов АТ-команд, у каждой команды разное количество параметров и их длина

      • Eugene

        У вас команда, наверное, уже лежит в приёмном буфере. В тот момент, когда вы декодировали её структуру (а эти структуры желательно прописать определениями) приводите указатель на её начало в буфере к указателю на соответствующий тип и дальше работайте с этим указателем.

        • Anonim

          увы, но у меня побайтное раскидывание достал и сразу засунул куда надо

          • Maxim

            Тогда проще статически парсер сгенерить

          • Eugene

            Что это значит, опишите подробнее алгоритм?

            • Anonim

              Byte = USART1->DR; Если(Byte не 'буква') Если (режим = 'данные') Если (параметр = 'первый') Структура->элемент1[i] = Byte; Если (параметр = 'второй') Если (i <= n) Структура->элемент2[i] = byte; i++; блин, шифт не зажал, ну да ладно. Примерно так всё и написано

Не нашли ответ?

Вам также может быть интересно