- PARAM_DEFINE_DAT (g_test, PARAM_INT16, 10);
- PARAM_DEFINE_DAT_DEF (g_test_2, PARAM_UINT16, 20);
- PARAM_DEFINE_DAT_RANGE (g_test_3, PARAM_DOUBLE, 3.15, -10, 10);
- PARAM_DEFINE_STR_RANGE (g_test_str, 10, "abcdef", 5);
- PARAM_DEFINE_DAT_RANGE (g_test_4, PARAM_INT8, 8, -10, 10);
- PARAM_DEFINE_DAT_RANGE (g_test_5, PARAM_UINT32, 620, 500, 10000);
- PARAM_DEFINE_DAT_RANGE (g_test_6, PARAM_UINT8, 45, 5, 100);
- PARAM_DEFINE_DAT_RANGE (g_test_7, PARAM_INT64, 5, -542, 5450);
- PARAM_DEFINE_BIND_DAT_RANGE(sg_tTest_test1, PARAM_UINT16, 20, 10, 2000); // 为即将绑定的变量定义相关参数信息
- PARAM_DEFINE_BIND_DAT(sg_tTest_test2, PARAM_FLOAT); // 为即将绑定的变量定义相关参数信息,初值为sg_tTest 变量定义时的初值
- PARAM_DEFINE_BIND_STR_RANGE(sg_tTest_str, sizeof(sg_tTest.str), "const-zpc", 6);// 为即将绑定的变量定义相关参数信息,初值为sg_tTest 变量定义时的初值
- ParamInfo_t sg_ParamTable[] = {
- PARAM_ITEM_DAT(1, g_test, PARAM_ATTR_WR),
- PARAM_ITEM_DAT_DEF(2, g_test_2, PARAM_ATTR_WR),
- PARAM_ITEM_DAT_RANGE(3, g_test_3, PARAM_ATTR_WR),
- PARAM_ITEM_STR_RANGE(4, g_test_str, PARAM_ATTR_WR),
- PARAM_ITEM_DAT_RANGE(5, g_test_4, PARAM_ATTR_WR),
- PARAM_ITEM_DAT_RANGE(6, g_test_5, PARAM_ATTR_WR),
- PARAM_ITEM_DAT_RANGE(7, g_test_6, PARAM_ATTR_WR),
- PARAM_ITEM_DAT_RANGE(8, g_test_7, PARAM_ATTR_READ), // 只读
- PARAM_ITEM_DAT_RANGE_BIND(9, sg_tTest_test1, sg_tTest.test1, PARAM_ATTR_WR),
- PARAM_ITEM_DAT_BIND(10, sg_tTest_test2, sg_tTest.test2, PARAM_ATTR_WR),
- PARAM_ITEM_STR_RANGE_BIND(11, sg_tTest_str, sg_tTest.str, PARAM_ATTR_WR),
- };
通过宏去操作参数示例片段代码
- // 首先需要在头文件声明
- PARAM_EXTERN_DAT(g_test, PARAM_INT16);
- PARAM_EXTERN_DAT(g_test_2, PARAM_UINT16);
- PARAM_EXTERN_DAT(g_test_3, PARAM_DOUBLE);
- PARAM_EXTERN_STR(g_test_str, 10);
- PARAM_EXTERN_DAT(g_test_4, PARAM_INT8);
- PARAM_EXTERN_DAT(g_test_5, PARAM_UINT32);
- PARAM_EXTERN_DAT(g_test_6, PARAM_UINT8);
- PARAM_EXTERN_DAT(g_test_7, PARAM_INT64);
- //函数中使用
- int main()
- {
- //方法一:
- // 对参数g_test_6设置新的值50,如果超出限定范围则不处理
- PARAM_DAT_SET_NEW_VALUE(g_test_6, 50, PARAM_NONE);
- // 对参数g_test_6设置新的值50,如果超出限定范围则重置为默认值
- PARAM_DAT_SET_NEW_VALUE(g_test_6, 50, PARAM_DEF);
- // 对参数g_test_6设置新的值150,如果超出限定范围则参数小于最小值则为最小值, 参数大于最大值则为最大值
- PARAM_DAT_SET_NEW_VALUE(g_test_6, 150, PARAM_MIN_MAX);
- //方法二:
- // 对参数g_test_6设置新的值50,如果超出限定范围则不处理
- g_test_6 = 50;
- PARAM_DAT_CHECK_RANGE(g_test_6, PARAM_NONE);
- // 对参数g_test_6设置新的值50,如果超出限定范围则重置为默认值
- g_test_6 = 50;
- PARAM_DAT_CHECK_RANGE(g_test_6, PARAM_DEF);
- // 对参数g_test_6设置新的值150,如果超出限定范围则参数小于最小值则为最小值, 参数大于最大值则为最大值
- g_test_6 = 150;
- PARAM_DAT_CHECK_RANGE(g_test_6, PARAM_MIN_MAX);
- }
通过函数去操作参数示例片段代码
- //函数中使用
- int main()
- {
- PARAM_UINT16_T tmp;
-
- //方法一:
- // 对参数g_test_6设置新的值50,如果超出限定范围则不处理
- tmp = 50;
- Param_SetNewValue(Param_FindParamByParamPtr(&sg_tParamManager, &g_test_u16), &tmp, PARAM_NONE);
- // 对参数g_test_6设置新的值50,如果超出限定范围则重置为默认值
- tmp = 50;
- Param_SetNewValue(Param_FindParamByParamPtr(&sg_tParamManager, &g_test_u16), &tmp, PARAM_DEF);
- // 对参数g_test_6设置新的值150,如果超出限定范围则参数小于最小值则为最小值, 参数大于最大值则为最大值
- tmp = 150;
- Param_SetNewValue(Param_FindParamByParamPtr(&sg_tParamManager, &g_test_u16), &tmp, PARAM_MIN_MAX);
- //方法二:
- // 对参数g_test_6设置新的值50,如果超出限定范围则不处理
- g_test_6 = 50;
- Param_CheckRange(Param_FindParamByParamPtr(&sg_tParamManager, &g_test_u16), PARAM_NONE);
- // 对参数g_test_6设置新的值50,如果超出限定范围则重置为默认值
- g_test_6 = 50;
- Param_CheckRange(Param_FindParamByParamPtr(&sg_tParamManager, &g_test_u16), PARAM_DEF);
- // 对参数g_test_6设置新的值150,如果超出限定范围则参数小于最小值则为最小值, 参数大于最大值则为最大值
- g_test_6 = 150;
- Param_CheckRange(Param_FindParamByParamPtr(&sg_tParamManager, &g_test_u16), PARAM_MIN_MAX);
- }
序列化 Demo 的结果展示
- # 配置最多支持 15 个参数时加载参数时分多次读取/保存操作打印日志
- load param:
- read: [21] -> 12 0a 00 22 14 00 38 33 33 33 33 33 33 09 40 4a 61 62 63 64 65
- read: [21] -> 66 00 00 00 00 51 08 64 6c 02 00 00 71 2d 88 05 00 00 00 00 00
- save param:
- save: [3] -> 12 0a 00
- save: [3] -> 22 14 00
- save: [9] -> 38 33 33 33 33 33 33 09 40
- save: [11] -> 4a 61 62 63 64 65 66 00 00 00 00
- save: [2] -> 51 08
- save: [5] -> 64 6c 02 00 00
- save: [2] -> 71 2d
- save: [9] -> 88 05 00 00 00 00 00 00 00
- # 配置最多支持 15 个参数时的序列化内容及长度
- "键值对序列化": [44] -> 12 0a 00 22 14 00 38 33 33 33 33 33 33 09 40 4a 61 62 63 64 65 66 00 00 00 00 51 08 64 6c 02 00 00 71 2d 88 05 00 00 00 00 00 00 00
- "序列化": [36] -> 50 00 14 00 33 33 33 33 33 33 09 40 67 5f 74 65 73 74 5f 36 00 00 00 6c 02 00 00 2d 05 00 00 00 00 00 00 00
- # 配置最多支持 256 个参数时的序列化内容及长度
- "键值对序列化": [52] -> 02 01 0a 00 02 02 14 00 08 03 33 33 33 33 33 33 09 40 0a 04 61 62 63 64 65 66 00 00 00 00 01 05 08 04 06 6c 02 00 00 01 07 2d 08 08 05 00 00 00 00 00 00 00
- "序列化": [36] -> 50 00 14 00 33 33 33 33 33 33 09 40 67 5f 74 65 73 74 5f 36 00 00 00 6c 02 00 00 2d 05 00 00 00 00 00 00 00
- # 配置最多支持 4096 个参数时的序列化内容及长度
- "键值对序列化": [60] -> 02 10 00 0a 00 02 20 00 14 00 08 30 00 33 33 33 33 33 33 09 40 0a 40 00 61 62 63 64 65 66 00 00 00 00 01 50 00 08 04 60 00 6c 02 00 00 01 70 00 2d 08 80 00 05 00 00 00 00 00 00 00
- "序列化": [36] -> 50 00 14 00 33 33 33 33 33 33 09 40 67 5f 74 65 73 74 5f 36 00 00 00 6c 02 00 00 2d 05 00 00 00 00 00 00 00
4、下载链接
轻量级参数管理框架代码:https://gitee.com/const-zpc/param/tree/master