检查结构中的更改
Checking for changes in struct
我正在开发一个库(供我自己使用(,该库通过 i2c 无缝地在多个控制器之间同步结构。我的大部分工作正常,但我想检查是否对结构进行了更改,以便我可以在发生这种情况时开始同步。
为了能够通过串行(i2c(发送数据,我将其转换为char数组。
struct MyStruct {
int a = 123;
long b = 4567890;
String c = "abc";
};
MyStruct myData;
char bufferP[sizeof(myData)];
memcpy(bufferP, &myData, sizeof(myData));
另一方面,我这样做
memcpy(&myData, bufferP, sizeof(bufferP));
以使其返回到结构。效果很好!!
我尝试遍历bufferP
以检查更改,以便我知道何时同步,但只有在值中的字符数不同时才会更改。
如果结构是这样的
struct MyStruct {
int a = 123;
long b = 4567890;
String c = "abc";
};
它将输出类似的东西
0 -> 123
1 -> 0
2 -> 82
3 -> 179
4 -> 69
5 -> 0
6 -> 143
7 -> 2
8 -> 3
9 -> 0
10 -> 3
11 -> 0
如果结构像这样
struct MyStruct {
int a = 123;
long b = 4567890;
String c = "def";
};
它将输出完全相同的东西。
有人可以告诉我为什么缓冲区P没有变化吗? 当我把它放回结构体时,变化就像它们应该的那样。
当我不知道结构的结构时,我如何检查结构是否发生了变化?
您有两个选择:
-
单独序列化字符串。这意味着:序列化没有字符串的结构,然后序列化字符串的长度,然后序列化字符串的内容。
-
将字符串替换为
char[50]
。 (或任何适合您的尺寸。
相关文章:
- C++概念:如何使用'concept'检查模板化结构的属性?
- C++ - 使用用户输入的字符串数据检查结构字符串数据(无限执行 while 循环)
- 检查结构中的模板类型
- C++ - 检查结构数据类型中的单词是否为回文
- 如何检查助推融合序列是否为自适应结构
- 助推.测试检查结构是否相等
- C++检查结构为空
- 编译时检查以确保结构中的任何位置都没有填充
- 检查结构中的更改
- 是否可以检查存储在堆栈上的单词是否是回文,而C++中没有任何附加数据结构
- 如何使用 gtest 构造检查存储在向量中的结构(字段)?
- 检查 c++ 结构是否在集合中
- 给定仅包含布尔类型成员的结构的两个对象 s1 和 s2,只要 s1 的成员为 true,请检查 s2 的每个成员是否为真
- 检查类是否在继承层次结构中显式定义了成员类型
- C++如何将结构数组初始化为null,然后在while循环中检查该数组的元素是否为null
- C++检查结构中的所有状态位
- 检查结构数组是否为空
- 哪种数据结构按插入排序并具有快速"contains"检查?
- 日期结构未正确检查
- 检查结构是否不在矢量中