1

我一直在研究嵌入式软件。其中一项要求是通过专有协议通过 CAN 进行通信。通信协议的核心是一个包含所有通信变量的通信表。每个变量都有附加信息,例如标识号、名称、缩放系数等。

这个通信表被分成所谓的块,每个块由几个所谓的记录组成。一条记录包含有关一个变量的信息。

无论是块还是一个块中的记录都不构成连续的数字序列。块号和记录号之间存在“间隙”。因此,表格可能看起来像这样:

块13:记录01、记录04、记录08;块15:记录02,记录03;块 18:记录 06

我一直在考虑实现这样一个表的合适的数据结构。我的第一个想法是一个包含每个数据块描述的结构的一维数组。它表示块号,该块中的记录数和指向块中第一条记录的指针。每个块将被实现为包含单个记录的一维数组,作为包含值、名称、缩放系数等的结构。

该软件是用 C++ 编写的,所以我也一直在考虑二维对象数组(每个记录将作为 Record 类的实例实现)。

我需要经常在这个表中搜索,所以我决定利用一个块中的块和记录总是根据它们的标识号以升序方式排序的事实,我将实现二进制搜索算法。

我将非常感谢对我的想法的任何评估。在此先感谢您的任何建议。

4

0 回答 0