6.3 配置数据存储
配置数据存储SDK主要用于点位配置参数的保存。
1、 使用实例
初始化一个名为config.db的数据库,进行参数写入、读取及参数恢复等操作
#include "paramdb/paramdb.h"
#include <stdio.h>
#include <unistd.h>
#include <assert.h>
#include <string.h>
#include <pthread.h>
#include <stdlib.h>
#define EN_WRITE 1
int main(int argc, char *argv[])
{
printf("[%s][%d][%s]\r\n", __FUNCTION__, __LINE__, __FILE__);
ParamDb *db = new ParamDb("./config.db");
printf("[%s][%d][%s]\r\n", __FUNCTION__, __LINE__, __FILE__);
#if EN_WRITE
/************************ 写入数据 *************************/
printf("[%s][%d][%s]\r\n", __FUNCTION__, __LINE__, __FILE__);
db->SetValue("tab1", 0x0001, 1, 1);
db->SetValue("tab1", 0x0002, 10);
db->SetValue("tab1", 0x0003, 100, 1);
db->SetValue("tab1", 0x0103, 1000);
db->SetValue("tab2", 0x0001, 1000, 1);
db->SetValue("tab2", 0x0010, 10000, 1);
db->SetValue("tab3", 0x1000, 20000);
#endif
/************************ 读取数据 *************************/
printf("[%s][%d][%s]\r\n", __FUNCTION__, __LINE__, __FILE__);
char *tabname =nullptr;
int addr = 0, value = 0;
// 读取 “tab1” 0x0001
tabname = (char *)"tab1";
addr = 0x0001;
db->GetValue(tabname, addr, &value);
printf("tabname=%s, addr=[0x%04X]%d, value=%d\r\n", tabname, addr, addr, value);
// 读取 “tab1” 0x0002
tabname = (char *)"tab1";
addr = 0x0002;
db->GetValue(tabname, addr, &value);
printf("tabname=%s, addr=[0x%04X]%d, value=%d\r\n", tabname, addr, addr, value);
// 读取 “tab1” 0x0003
tabname = (char *)"tab1";
addr = 0x0003;
db->GetValue(tabname, addr, &value);
printf("tabname=%s, addr=[0x%04X]%d, value=%d\r\n", tabname, addr, addr, value);
// 读取 “tab1” 0x0103
tabname = (char *)"tab1";
addr = 0x0103;
db->GetValue(tabname, addr, &value);
printf("tabname=%s, addr=[0x%04X]%d, value=%d\r\n", tabname, addr, addr, value);
// 读取 “tab2” 0x0001
tabname = (char *)"tab2";
addr = 0x0001;
db->GetValue(tabname, addr, &value);
printf("tabname=%s, addr=[0x%04X]%d, value=%d\r\n", tabname, addr, addr, value);
// 读取 “tab2” 0x0010
tabname = (char *)"tab2";
addr = 0x0010;
db->GetValue(tabname, addr, &value);
printf("tabname=%s, addr=[0x%04X]%d, value=%d\r\n", tabname, addr, addr, value);
// 读取 “tab3” 0x1000
tabname = (char *)"tab3";
addr = 0x1000;
db->GetValue(tabname, addr, &value);
printf("tabname=%s, addr=[0x%04X]%d, value=%d\r\n", tabname, addr, addr, value);
#if 0
// 恢复默认值
db->RestoreDefaultValue();
#endif
# if 1
// 将当前值保存为默认值
db->UpdateDefaultFromCurrent();
#endif
while(1) {
sleep(1);
}
return 1;
}
2、 ParamDb类
1. 构造函数
2. 析构函数
3. 获取点的值
/**
* @brief 获取点的值
*
* @param tabname 表名
* @param addr 地址
* @param value 返回值的指针
*
* @return 返回1正常;返回-1未找到点位
*/
int GetValue(const std::string tabname, int addr, int *value);
- 参数
- tabname 表名
- addr 地址
- value 返回值的指针
- 返回值
- 返回1正常;返回-1未找到点位
4. 设置点的值(不带默认值)
/**
* @brief 设置点的值
*
* @param tabname 表名
* @param addr 地址
* @param value 值
*
* @return 返回1正常;
*/
int SetValue(const std::string tabname, int addr, int value);
- 参数
- tabname 表名
- addr 地址
- value 返回值的指针
- 返回值
- 返回1正常;
5. 设置点的值(带默认值)
/**
* @brief 设置点的值
*
* @param tabname 表名
* @param addr 地址
* @param value 值
* @param default_value 默认值
*
* @return 返回1正常;
*/
int SetValue(const std::string tabname, int addr, int value, int default_value);
- 参数
- tabname 表名
- addr 地址
- value 返回值的指针
- default_value 默认值
- 返回值
- 返回1正常;
6. 当前值恢复为默认值
- 参数
- 无
- 返回值
- 返回1正常;
7. 将当前值保存为默认值
/**
* @brief 将当前值保存为默认值(由当前值更新默认值)
* @note 将当前值写入默认值
*
* @return 返回1正常
*/
int UpdateDefaultFromCurrent();
- 参数
- 无
- 返回值
- 返回1正常;