Я работал над встроенным программным обеспечением. Одно из требований также
связь через CAN по проприетарному протоколу. Ядро общения
Протокол — это таблица связи, которая содержит все передаваемые переменные.
Каждая переменная имеет дополнительную информацию, например, идентификационный номер, имя,
коэффициент масштабирования и так далее.
Эта таблица связи разделена на так называемые блоки, и каждый блок состоит
из нескольких так называемых записей. Одна запись содержит информацию об одной переменной.
Ни блоки, ни записи в одном блоке не являются непрерывными
последовательность чисел. Есть «промежутки» между номерами блоков и записью
номера. Таким образом, таблица может выглядеть, например, следующим образом:
блок 13: запись 01, запись 04, запись 08;
блок 15: запись 02, запись 03;
блок 18: запись 06
Я думал о приемлемой структуре данных для внедрения такого
Таблица. Моей первой идеей был одномерный массив, содержащий
описание каждого блока данных. Это означает номер блока, количество записей в этом
блок и указатель на первую запись в блоке. Каждый блок будет реализован как
одномерный массив, содержащий отдельные записи в виде структур, содержащих
значение, имя, коэффициент масштабирования и т. д.
Программное обеспечение написано на C ++, поэтому я также думал о двухмерном
массив объектов (каждая запись будет реализована как экземпляр класса Record).
Мне очень часто приходится искать в этой таблице, поэтому я решил использовать тот факт,
что блоки и записи в одном блоке всегда сортируются по возрастанию
в соответствии с их идентификационным номером, и я собираюсь реализовать двоичный
алгоритм поиска.
Я бы очень оценил любую оценку моей идеи. Заранее спасибо за любой
предложения.
Задача ещё не решена.
Других решений пока нет …