rdbapi 5.1.1.4 实时数据库接口API

- 首页
- 相关页面
- 结构体
- 文件

- 文件列表
- 全局定义

宏定义 | 类型定义 | 函数
rdbapi.h 文件参考

实时库接口API定义 for windows and linux 更多...

`#include "rdbdef.h"`

浏览源代码.

## 宏定义
#define | DBR_SUCCESS 0
#define | SE_ERRHANDLE (-1)
#define | SE_OK 0x00
#define | SE_SUCCESS SE_OK
#define | SE_FAILED 0x01
#define | SE_TCP_CONNECT 0x02
#define | SE_TCP_PROXY_CONNECT 0x03
#define | SE_TCP_PROXY_AUTH 0x04
#define | SE_TCP_DISCONNECT 0x05
#define | SE_TCP_IO 0x06
#define | SE_TCP_CONSVRFAIL 0x07
#define | SE_TCP_SENDBLOCK 0x08
#define | SE_TCP_ERRPKG 0x0A
#define | SE_TCPCALLTIMEOUT 0x0B
#define | SE_ERRARGS 0x0C
#define | SE_EXP 0x10
#define | SE_EXPVAR 0x11
#define | SE_EXPVAROVER 0x12
#define | SE_BUSY 0x13
#define | SE_NOTCONNECT 0x1F
#define | SE_OPT_OK 0
#define | SE_OPT_NOACTOR 0x20
#define | SE_OPT_NOUSER 0x21
#define | SE_OPT_PASSERR 0x22
#define | SE_OPT_NOPOWER 0x23
#define | SE_OPT_USEREXIST 0x24
#define | SE_OPT_ACTOREXIST 0x25
#define | SE_OPT_ACTORUSE 0x26
#define | SE_OPT_NOLOGIN 0x27
#define | SE_OPT_NOTACTIVE 0x28
#define | SE_OPT_OPTFULL 0x29
#define | SE_OPT_ACTFULL 0x2A
#define | SE_TG_NOTAG 0x30
#define | SE_TG_TAGFULL 0x31
#define | SE_TG_NOARCHIVE 0x32
#define | SE_DA_TIME 0x40
#define | SE_DA_TYPE 0x41
#define | SE_DA_QA 0x42
#define | SE_DA_NODATA 0x43
#define | SE_CTRLNOROUTE 0x61
#define | SE_CTRLOUTERR 0x62
#define | SE_SRV_FRMNOOD 0xFF
#define | SE_SRV_FRMERR 0xFE
#define | SE_SRV_DBVER 0xFD
#define | SE_SRV_BACKUOPSRV 0XFB
#define | SE_SRV_DEMOOVER 0xFC
#define | MSGCODE_CONNECT_SUCCESS 60001
| 异步连接成功
#define | MSGCODE_CONNECT_FAILED 60002
| 异步连接失败
#define | MSGCODE_DISCONNECTED 60003
| 连接断开,包含接收数据和发送数据时

## 类型定义
typedef bool(* | rdbcb_OnReadTags) (rec_tag ptags[], int nitems, void *pParam)
| 标签查询回调函数,nitems <= 256 return false表示终止查询
typedef bool(* | rdbcb_OnReadVals) (rec_val pvals[], int nitems, void *pParam)
| 值记录查询回调函数,nitems <= 2560 return false表示终止查询
typedef bool(* | rdbcb_OnReadObjs) (rec_obj pobjs[], int nitems, void *pParam)
| 对象记录查询回调函数,nitems <= 64 return false表示终止查询
typedef bool(* | rdbcb_OnReadSoes) (rec_soe psoes[], int nitems, void *pParam)
| SOE记录查询回调函数,nitems <= 128 return false表示终止查询
typedef void(* | rdbcb_OnSscPutSoes) (rec_soe psoes[], int nitems, void *param)
| 服务器推送的订阅SOE记录回调函数
typedef bool(* | ctrl_OnValWriteToDevice) (rec_tagval *pval, void *pParam)
| 值标签写设备回调函数 更多...
typedef bool(* | ctrl_OnObjWriteToDevice) (rec_tagobj *pobj, void *pParam)
| 对象标签写设备回调函数 更多...
typedef void(* | rdbcd_onmessage) (int nmsgcode, const char *smsg, void *param)
| 消息通知回调函数 更多...

## 函数
int | rdb_create ()
| 创建接口 更多...
int | rdb_curdb (int h)
| 获取当前连接的实时库 更多...
int | rdb_curdb_inver (int h)
| 获取当前实时库的内部版本 更多...
int | rdb_setslavedb (int h, const char *sip, unsigned short wport, const char *sUser, const char *sPass)
| 设置从库 更多...
int | rdb_destory (int h)
| 删除句柄 更多...
int | rdb_connectex (int h, const char *surl, const char *sUser, const char *sPass, int nTimeOutSec)
| 高级连接,rdb2020.3版开始增加的接口 更多...
int | rdb_connect (int h, const char *sServerIP, unsigned short wPort, const char *lpszUser, const char *lpszPass)
| 连接实时库 更多...
int | rdb_connectasyn (int h, const char *sServerIP, unsigned short wPort, const char *lpszUser, const char *lpszPass)
| 异步连接实时库 更多...
int | rdb_disconnect (int h)
| 断开实时库 更多...
bool | rdb_isconnected (int h)
| 判断连接状态 更多...
int | rdb_actoradd (int h, rec_actor *pa)
| 添加用户角色 更多...
int | rdb_actordel (int h, const char *sname)
| 删除用户角色 更多...
int | rdb_actorsget (int h, rec_actor actors[], int nrecbufsize, int *pnacts)
| 读取角色表 更多...
int | rdb_operatoradd (int h, rec_operator*po)
| 添加用户账号 更多...
int | rdb_operatordel (int h, const char *sname)
| 删除用户账号 更多...
int | rdb_operatorsget (int h, rec_operator opts[], int nrecbufsize, int *pnopts)
| 读取账号表 更多...
int | rdb_operatormodifypass (int h, const char *sname, const char *soldpass, const char *snewpass)
| 更改自己密码 更多...
int | rdb_taginport (int h, unsigned int dwflag, rec_tag *ptag, int *presult)
| 导入(添加,更改)标签 更多...
int | rdb_tagget (int h, rec_tag *ptag)
| 读取标签属性记录 更多...
int | rdb_tagdel (int h, const char *sname)
| 删除标签 更多...
int | rdb_tagquery (int h, const char *snamefilter, const char *sdesfilter, int ndatatype, int ntagclass, rdbcb_OnReadTags pfun, void *pParam)
| 查询标签 更多...
int | rdb_valputsnapshot (int h, rec_tagval vals[], int nsize)
| 写值标签快照(写值标签实时数据) 更多...
int | rdb_valgetsnapshot (int h, rec_tagval vals[], int nsize)
| 读取值标签快照(读值标签实时数据) 更多...
int | rdb_valinsert (int h, rec_tagval vals[], int nsize)
| 补录值标签数据(写值标签历史数据) 更多...
int | rdb_valgetsection (int h, long long ltime, int nflag, rec_tagval vals[], int nsize)
| 读取值标签历史断面数据 更多...
int | rdb_valquery (int h, const char *sname, const char *sexp, long long lts, long long lte, long long lds, int lflag, rdbcb_OnReadVals pfun, void *pParam)
| 查询值标签历史数据记录 更多...
int | rdb_objputsnapshot (int h, rec_tagobj pobjs[], int nsize)
| 写对象标签快照(写对象标签实时数据) 更多...
int | rdb_objgetsnapshot (int h, rec_tagobj pobjs[], int nsize)
| 读取对象标签快照数据(读对象标签实时数据) 更多...
int | rdb_objinsert (int h, rec_tagobj pobjs[], int nsize)
| 补录对象标签历史数据(写对象标签历史数据) 更多...
int | rdb_objget (int h, const char *stagname, long long lts, long long lte, rdbcb_OnReadObjs pfun, void *pParam)
| 读取对象标签历史数据 更多...
int | rdb_soeput (int h, rec_soe psoe[], int nsize)
| 写入SOE事件 更多...
int | rdb_soequery (int h, long long lts, unsigned int autokey, long long lte, const char *sexp, rdbcb_OnReadSoes pfun, void *pParam)
| 查询SOE事件 更多...
int | rdb_soeupdate (int h, rec_soe psoe[], int nsize)
| 更新SOE事件记录 更多...
int | rdb_soesubscription (int h, int flag)
| 订阅SOE事件 更多...
int | rdb_soesubscription_setfun (int h, rdbcb_OnSscPutSoes fun, void *param)
| 设置处理订阅的SOE事件处理回调函数 更多...
int | rdb_countvalue (int h, const char *sname, const char *sexp, long long lts, long long lte, rec_val *pMin, rec_val *pMax, double *pavg, double *psum, int *plrecs)
| 值标签数据记录统计 更多...
int | rbd_countstatuschang (int h, const char *sname, long long lts, long long lte, int nlowval, int nhighval, int *pnl2h, int *pnh2l)
| 值标签状态改变统计 更多...
int | rdb_countvaltime (int h, const char *sname, const char *sexp, long long lts, long long lte, long long *pltime, int *plrecs)
| 值标签数据c持续时间统计 更多...
long long | rdb_time ()
| 获取当前时间的实时库时标 更多...
long long | rdb_localtime2rdbtime (int nyear, int nmon, int nday, int nhour, int nmin, int nsec, int nmsec)
| 本地时间合成为实时库时标T_TIME 更多...
bool | rdb_rdbtime2localtime (T_TIME ltime, int *pnyear, int *pnmon, int *pnday, int *pnhour, int *pnmin, int *pnsec, int *pnmsec)
| 实时库时标T_TIME分解为本地时间 更多...
int | rdb_initwritetodevice (int h, ctrl_OnValWriteToDevice funvalw, void *paramvalw, ctrl_OnObjWriteToDevice funobjw, void *paramobjw)
| 初始化写设备回调函数 更多...
int | rdb_regctrltag (int h, const char *stagname)
| 注册控制标签 更多...
int | rdb_writevaltodevice (int h, rec_tagval *pval)
| 写值标签的值到现场设备 更多...
int | rdb_writeobjtodevice (int h, rec_tagobj *pobj)
| 写对象标签的值到现场设备 更多...
int | rdb_setmessagenotify (int h, rdbcd_onmessage fun, void *param)
| 设置消息回掉函数 更多...
int | rdbtime_tostr (int64_t ltime, char *sout, size_t outsize)
| 实时库时间(从1970-1-1开始的100毫秒数)转换为字符串 更多...
int64_t | rdbtime_fromstr (const char *str, size_t zlen)
| 本地字符串表达的时间转换为实时库时间 更多...
void | rdb_md5_encode (const void *pdata, int nsize, unsigned char out[16])
| 计算md5散列值 更多...
int | rdb_base64_encode (const void *pdata, int nsize, char *sout, int noutsize)
| base64快速编码 更多...
int | rdb_base64_decode (const char *pdata, int nsize, unsigned char *sout, int noutsize)
| base64快速解码 更多...
const char * | rdb_geterrmsg (int nerrcode)
| 根据错误码获取错误描述 更多...
int | rdb_manual_set (int h, rec_tagval *pval)
| 设置人工置数 更多...
int | rdb_manual_del (int h, const char *stagname)
| 取消人工置数 更多...
int | rdb_getoutlimit_snaps (int h, const char *station, void(*onread)(rec_tagval pvals[], int nitems, void *param), void *puserparam)
| 读取当前越限标签快照 更多...
int | rdb_getsnapshot (int h, const char *tagnames[], int nsize, void(*funval)(const rec_tagval vals[], size_t valsize, void *param), void *param_val, void(*funobj)(const rec_tagobj objs[], size_t objsize, void *param), void *param_obj)
| 读取快照,不分值标签还是对象标签 更多...
int | rdb_callmsg (int h, const char *request, int requestsize, void(*fun)(const char *response, int sizeresponse, void *app_param), void *app_param)
| 向实时库请求消息; 更多...
int | rdb_putmsg (int h, const char *jstr, int jstrsize)
| 向实时库推送消息 更多...
int | rdb_soesubscription_ex (int h, int flag, const char *station)
| 订阅SOE的高级版，支持通过中心站订阅子站SOE 更多...
int | rdb_soequery_ex (int h, const char *station, long long lts, unsigned int autokey, long long lte, const char *sexp, rdbcb_OnReadSoes pfun, void *puserparam)
| 查询SOE事件高级版，支持通过中心站从子站查询 更多...
int | rdb_liststation (int h, void(*fun)(const char *jsresp, int sizeresp, void *app_param), void *app_param)
| 从中心站查询当前在线子站列表和概要信息 更多...
int | rdb_getruninfo (int h, const char *stationid, void(*fun)(const char *jsresp, int sizeresp, void *app_param), void *app_param)
| 从中心站查询子站运行信息 更多...
int | rdb_tagext_inport (int h, tag_ext *pext, uint32_t umask)
| 导入标签扩展属性 更多...
int | rdb_tagext_get (int h, tag_ext *ptags, int size)
| 获取一批标签扩展属性 更多...
int | rdb_tagext_del (int h, const char *tagname)
| 删除一个标签的扩展属性 更多...

## 详细描述

实时库接口API定义 for windows and linux

2021-3-1 监控接口和订阅子站SOE接口。 2020-12-6 增加混合读取标签快照接口rdb_getsnapshot。 2020-8-17 增加切换式双库连接。 2020-6-14 增加人工置数接口。 2020-3-22 使用基于WS的协议实现,兼容前面应用。 2008-8-23 增加SOE订阅

## 类型定义说明

typedef bool(* ctrl_OnObjWriteToDevice) (rec_tagobj *pobj, void *pParam)

对象标签写设备回调函数

返回
  0表示失败,非零表示成功

typedef bool(* ctrl_OnValWriteToDevice) (rec_tagval *pval, void *pParam)

值标签写设备回调函数

返回
  0表示失败,非零表示成功

typedef void(* rdbcd_onmessage) (int nmsgcode, const char *smsg, void *param)

消息通知回调函数

参数

  nmsgcode,MSGCODE_CONNECT_SUCCESS,MSGCODE_CONNECT_FAILED,MSGCODE_DISCONNECTED之一 |

## 函数说明

int rbd_countstatuschang | ( | int | h,
|  | const char * | sname,
|  | long long | lts,
|  | long long | lte,
|  | int | nlowval,
|  | int | nhighval,
|  | int * | pnl2h,
|  | int * | pnh2l
| ) |  |

值标签状态改变统计

参数

  h | [in] rdb_create创建的句柄.
  sname | [in] 标签名
  lts | [in] 开始时标,参见T_TIME
  lte | [in] 结束时标,参见T_TIME
  nlowval | [in] 低电平值或者断开状态值
  nhighval | [in] 高电平值或者闭合状态值
  pnl2h | [out] 断开到闭合的改变次数
  pnh2l | [out] 闭合到断开的改变次数

返回
  返回 0 表示成功,其余值为失败错误码。

备注
  常用于统计开关或断路器动作次数，此函数PRESET标签不反回数据。

int rdb_actoradd | ( | int | h,
|  | rec_actor * | pa
| ) |  |

添加用户角色

参数

  h | [in] rdb_create创建的句柄.
  pa | [in] 角色结构体指针

返回
  返回 0 表示成功，其余值为失败错误码

备注
  需要账号管理权限 OPT_POW_MAN

int rdb_actordel | ( | int | h,
|  | const char * | sname
| ) |  |

删除用户角色

参数

  h | [in] rdb_create创建的句柄.
  sname | [in] 角色名

返回
  返回 0 表示成功，其余值为失败错误码

备注
  需要账号管理权限 OPT_POW_MAN

int rdb_actorsget | ( | int | h,
|  | rec_actor | actors[],
|  | int | nrecbufsize,
|  | int * | pnacts
| ) |  |

读取角色表

参数

  h | [in] rdb_create创建的句柄.
  actors | [out] 用于接收角色记录的结构体数组
  nrecbufsize | [in] actors数组大小,能容纳角色记录的个数
  pnacts | [out] 实际读取到并存放到actors数组中的记录数

返回
  返回 0 表示成功，其余值为失败错误码

备注
  需要账号管理权限 OPT_POW_MAN

int rdb_base64_decode | ( | const char * | pdata,
|  | int | nsize,
|  | unsigned char * | sout,
|  | int | noutsize
| ) |  |

base64快速解码

参数

  pdata | 需要解码的数据
  nsize | pdata的长度(字符数)
  sout | 输出区
  noutsize | 输出区长度(字符数)

返回
  返回字节数,输出带0结尾，空间不够返回-1; 当sout为nullptr时,返回需要的输出空间大小

int rdb_base64_encode | ( | const void * | pdata,
|  | int | nsize,
|  | char * | sout,
|  | int | noutsize
| ) |  |

base64快速编码

参数

  pdata | 需要编码的数据
  nsize | pdata的长度(字符数)
  sout | 输出区
  noutsize | 输出区长度(字符数)

返回
  返回字节数,输出带0结尾，空间不够返回-1; 当sout为nullptr时,返回需要的输出空间大小

int rdb_callmsg | ( | int | h,
|  | const char * | request,
|  | int | requestsize,
|  | void(*)(const char *response, int sizeresponse, void *app_param) | fun,
|  | void * | app_param
| ) |  |

向实时库请求消息;

参数

  h[in] | rdb_create创建的句柄.
  request | [in] 请求的消息，JSON字符串，utf8编码
  requestsize | [in] request的长度，字节数
  fun | [in] 接收消息回调函数。
  app_param | [in] 应用层传递的参数, fun函数的最后一个参数.

返回
  0: success; 其他为错误码

备注
  返回消息通过回调函数返回，response为JSON应答字符串,sizeresponse为应答字符串的长度(字节数)。这个函数可以用于调用以后增加的消息。

int rdb_connect | ( | int | h,
|  | const char * | sServerIP,
|  | unsigned short | wPort,
|  | const char * | lpszUser,
|  | const char * | lpszPass
| ) |  |

连接实时库

参数

  h | [in] rdb_create创建的句柄.
  sServerIP | [in] 实时库服务器IP地址,点分字符串格式,比如"192.168.1.61".
  wPort | [in] 实时库TCP服务端口.
  lpszUser | [in] 用户账号名.
  lpszPass | [in] 用户账号密码.

返回
  返回 0 表示成功，其余值为失败错误码

int rdb_connectasyn | ( | int | h,
|  | const char * | sServerIP,
|  | unsigned short | wPort,
|  | const char * | lpszUser,
|  | const char * | lpszPass
| ) |  |

异步连接实时库

参数

  h | [in] rdb_create创建的句柄.
  sServerIP | [in] 实时库服务器IP地址,点分字符串格式,比如"192.168.1.61".
  wPort | [in] 实时库TCP服务端口.
  lpszUser | [in] 用户账号名.
  lpszPass | [in] 用户账号密码.

返回
  返回 0 表示成功，其余值为失败错误码

备注
  异步连接实时库，结果通过rdbcd_onmessage回调通知

int rdb_connectex | ( | int | h,
|  | const char * | surl,
|  | const char * | sUser,
|  | const char * | sPass,
|  | int | nTimeOutSec
| ) |  |

高级连接,rdb2020.3版开始增加的接口

参数

  surl | 连接URL字符串, "wss://192.168.161:921" 或者 "ws://192.168.161:921",或者"wss://kipwa.net"
  sUser | 账号
  sPass | 密码
  nTimeOutSec | 0表示异步连接，立即返回，大于0表示同步方式，等待超时秒数

int rdb_countvaltime | ( | int | h,
|  | const char * | sname,
|  | const char * | sexp,
|  | long long | lts,
|  | long long | lte,
|  | long long * | pltime,
|  | int * | plrecs
| ) |  |

值标签数据c持续时间统计

参数

  h | [in] rdb_create创建的句柄.
  sname | [in] 标签名
  sexp | [in] 表达式
  lts | [in] 开始时标,参见T_TIME
  lte | [in] 结束时标,参见T_TIME
  pltime | [out] 满足表达式条件的数据持续时间
  plrecs | [out] 满足表达式条件的数据样本值记录数

返回
  返回 0 表示成功,其余值为失败错误码。

备注
  常用于统计数据合格率，此函数PRESET标签不反回数据。

int rdb_countvalue | ( | int | h,
|  | const char * | sname,
|  | const char * | sexp,
|  | long long | lts,
|  | long long | lte,
|  | rec_val * | pMin,
|  | rec_val * | pMax,
|  | double * | pavg,
|  | double * | psum,
|  | int * | plrecs
| ) |  |

值标签数据记录统计

参数

  h | [in] rdb_create创建的句柄.
  sname | [in] 标签名
  sexp | [in] 表达式
  lts | [in] 开始时标,参见T_TIME
  lte | [in] 结束时标,参见T_TIME
  pMin | [out] 最小值出现处的记录
  pMax | [out] 最大值出现处的记录
  pavg | [out] 平均值
  psum | [out] 累计值
  plrecs | [out] 记录数

返回
  返回 0 表示成功,其余值为失败错误码。

备注
  此函数PRESET标签不反回数据。

int rdb_create | ( |  | ) |

创建接口

返回
  返回句柄,-1表示失败，>=0为成功创建的句柄号

备注
  句柄为大于等于0的整数,一个句柄代表一个API对象，如果要建立多个到实时库的连接,可以创建多个句柄，每个进程最多可以创建64个句柄。

int h = rdb_create();
if(h == SE_ERRHANDLE)
printf("error\n");

int rdb_curdb | ( | int | h | ) |

获取当前连接的实时库

返回
  0:主库; 1:从库; -1表示失败

备注
  fileversion 5.0.6.9开始有效

int rdb_curdb_inver | ( | int | h | ) |

获取当前实时库的内部版本

参数

  h | [in] rdb_create创建的句柄.

返回
  -1:失败; >0 内部版本号，比如5104,从5104开始支持该接口

int rdb_destory | ( | int | h | ) |

删除句柄

参数

  h | [in] rdb_create创建的句柄.

返回
  返回 0 表示成功，其余值为失败错误码

备注
  不再使用实时库连接后,使用这个函数删除句柄,释放系统资源,使用前先调用rdb_disconnect断开连接.

int rdb_disconnect | ( | int | h | ) |

断开实时库

参数

  h | [in] rdb_create创建的句柄.

返回
  返回 0 表示成功，其余值为失败错误码

备注
  不再使用实时库连接后,先使用rdb_disconnect断开连接,然后调用rdb_destory销毁句柄释放资源.

const char* rdb_geterrmsg | ( | int | nerrcode | ) |

根据错误码获取错误描述

参数

  nerrcode | 错误码

返回
  返回错误信息。

int rdb_getoutlimit_snaps | ( | int | h,
|  | const char * | station,
|  | void(*)(rec_tagval pvals[], int nitems, void *param) | onread,
|  | void * | puserparam
| ) |  |

读取当前越限标签快照

参数

  h[in] | rdb_create创建的句柄.
  station[in] | 站名,nullptr表示主站
  onread[in] | 数据回调函数
  puserparam回调函数的参数,会原样填写到onread的param里。 |

返回
  0表示成功, 其余值为失败错误码。

int rdb_getruninfo | ( | int | h,
|  | const char * | stationid,
|  | void(*)(const char *jsresp, int sizeresp, void *app_param) | fun,
|  | void * | app_param
| ) |  |

从中心站查询子站运行信息

参数

  h | [in] rdb_create创建的句柄.
  stationid[in] | 子站ID，null表示从目前连接的站查询。stationid用 "子站名.master" 表示子站主站，"子站id.slave" 表示子站从站。
  fun | [in] 接收消息回调函数。
  app_param | [in] 应用层传递的参数, fun函数的最后一个参数.

返回
  0: success; 其他为错误码

备注
  返回消息通过回调函数返回，jsresp为JSON应答字符串,sizeresp为应答字符串的长度(字节数)。返回的JSON对象定义参见协议文档《rdb_data_exchange_protocol.pdf》8.2。

int rdb_getsnapshot | ( | int | h,
|  | const char * | tagnames[],
|  | int | nsize,
|  | void(*)(const rec_tagval vals[], size_t valsize, void *param) | funval,
|  | void * | param_val,
|  | void(*)(const rec_tagobj objs[], size_t objsize, void *param) | funobj,
|  | void * | param_obj
| ) |  |

读取快照,不分值标签还是对象标签

参数

  h[in] | rdb_create创建的句柄.
  tagnames[in] | 标签名字符串数组
  nsize | [in] 标签个数
  funval | [in] 值数据回调函数 param_val [in] funval的最后一个参数。
  funobj | [in] 对像数据回调函数 param_obj [in] funobj的最后一个参数。

返回
  0表示成功, 其余值为失败错误码。

备注
  每个回调函数可能被多次回调. rdbapi fileversion 5.0.7.2新增

int rdb_initwritetodevice | ( | int | h,
|  | ctrl_OnValWriteToDevice | funvalw,
|  | void * | paramvalw,
|  | ctrl_OnObjWriteToDevice | funobjw,
|  | void * | paramobjw
| ) |  |

初始化写设备回调函数

参数

  h | [in] rdb_create创建的句柄.
  funvalw | [in] 值标签写设备回调函数
  paramvalw | [in] 值标签写设备回调函数的pParam参数
  funobjw | [in] 对象标签写设备回调函数
  paramobjw | [in] 对象标签写设备回调函数的pParam参数

返回
  0表示成功,其余值为失败错误码。

备注
  只有数据采集和控制前置机需要将实时库标签写入到现场设备时才需要设置写设备回调函数。

bool rdb_isconnected | ( | int | h | ) |

判断连接状态

参数

  h | [in] rdb_create创建的句柄.

返回
  返回 非0 表示处于连接状态; 0表示处于断开状态

int rdb_liststation | ( | int | h,
|  | void(*)(const char *jsresp, int sizeresp, void *app_param) | fun,
|  | void * | app_param
| ) |  |

从中心站查询当前在线子站列表和概要信息

参数

  h | [in] rdb_create创建的句柄.
  fun | [in] 接收消息回调函数。
  app_param | [in] 应用层传递的参数, fun函数的最后一个参数.

返回
  0: success; 其他为错误码

备注
  返回消息通过回调函数返回，jsresp为JSON应答字符串,sizeresp为应答字符串的长度(字节数)。返回的JSON对象定义参见协议文档《rdb_data_exchange_protocol.pdf》8.1。

long long rdb_localtime2rdbtime | ( | int | nyear,
|  | int | nmon,
|  | int | nday,
|  | int | nhour,
|  | int | nmin,
|  | int | nsec,
|  | int | nmsec
| ) |  |

本地时间合成为实时库时标T_TIME

参数

  nyear | [in] 年1970-...
  nmon | [in] 月1-12
  nday | [in] 日1-31
  nhour | [in] 时0-23
  nmin | [in] 分0-59
  nsec | [in] 秒0-59
  nmsec | [in] 毫秒0-999

返回
  返回实时库时标T_TIME

int rdb_manual_del | ( | int | h,
|  | const char * | stagname
| ) |  |

取消人工置数

参数

  h[in] | rdb_create创建的句柄.
  stagname[in] | 标签名

返回
  0表示成功, 其余值为失败错误码。

int rdb_manual_set | ( | int | h,
|  | rec_tagval * | pval
| ) |  |

设置人工置数

参数

  h[in] | rdb_create创建的句柄.
  pval | [in] 标签和预设值的数据

返回
  返回错误码，0表示成功。

void rdb_md5_encode | ( | const void * | pdata,
|  | int | nsize,
|  | unsigned char | out[16]
| ) |  |

计算md5散列值

参数

  pdata | 需要编码的数据
  nsize | pdata的长度(字符数)
  out | 输出区,最小16字节

返回
  无，结果16字节在out中。

int rdb_objget | ( | int | h,
|  | const char * | stagname,
|  | long long | lts,
|  | long long | lte,
|  | rdbcb_OnReadObjs | pfun,
|  | void * | pParam
| ) |  |

读取对象标签历史数据

参数

  h | [in] rdb_create创建的句柄.
  stagname | [in] 标签名
  lts | [in] 开始时标,参见T_TIME
  lte | [in] 结束时标,参见T_TIME，-1表示直到读取完
  pfun | [in] 数据到达回调函数，参见rdbcb_OnReadObjs
  pParam | [in] 回调函数的参数

返回
  返回 0 表示成功,其余值为失败错误码。

备注
  直到数据查询完成或者回调函数返回0表示结束查询,调用者可以随时通过回调函数返回0结束查询。整个查询过程中，回调函数可能被调用多次.

int rdb_objgetsnapshot | ( | int | h,
|  | rec_tagobj | pobjs[],
|  | int | nsize
| ) |  |

读取对象标签快照数据(读对象标签实时数据)

参数

  h | [in] rdb_create创建的句柄.
  pobjs | [in/out] 对象标签数据记录数组,调用前填写每个记录结构体中的标签名sname字段
  nsize | [in] pobjs中的记录数.

返回
  返回 0 表示成功,其余值为失败错误码。调用成功后,还需判断每个记录的pobjs[i].var.cerr错误码,cerr为0表示有效,否则可能是标签不存在或者没有数据.

int rdb_objinsert | ( | int | h,
|  | rec_tagobj | pobjs[],
|  | int | nsize
| ) |  |

补录对象标签历史数据(写对象标签历史数据)

参数

  h | [in] rdb_create创建的句柄.
  pobjs | [in] 对象标签数据记录数组
  nsize | [in] pobjs中的记录数.

返回
  返回 0 表示成功,其余值为失败错误码。

int rdb_objputsnapshot | ( | int | h,
|  | rec_tagobj | pobjs[],
|  | int | nsize
| ) |  |

写对象标签快照(写对象标签实时数据)

参数

  h | [in] rdb_create创建的句柄.
  pobjs | [in/out] 对象标签记录数据数组
  nsize | [in] pobjs中的记录数.

返回
  返回 0 表示成功,其余值为失败错误码,调用成功后,还需判断每个记录的pobjs[i].var.cerr错误码。

备注
  写快照是追加模式,生产现场的DT_STRING和DT_OBJECT型实时数据使用这个接口写入到实时库。 从rdb1911开始(rdbsrv file version 5.0.6.0)，如果时标填写0则表示快照时标使用实时库服务器的当前时间作为时标，特别适合对于无实时钟或者时钟无法校时的数据采集网关提交快照数据。 注意对于DEC(设备)标签，新数据的时标必须大于旧数据的时标。对于PRESET标签，新数据的时标大于等于旧数据的时标。

int rdb_operatoradd | ( | int | h,
|  | rec_operator* | po
| ) |  |

添加用户账号

参数

  h | [in] rdb_create创建的句柄.
  po | [in] 账号结构体指针

返回
  返回 0 表示成功，其余值为失败错误码

备注
  需要账号管理权限 OPT_POW_MAN

int rdb_operatordel | ( | int | h,
|  | const char * | sname
| ) |  |

删除用户账号

参数

  h | [in] rdb_create创建的句柄.
  sname | [in] 账号名

返回
  返回 0 表示成功，其余值为失败错误码

备注
  需要账号管理权限 OPT_POW_MAN

int rdb_operatormodifypass | ( | int | h,
|  | const char * | sname,
|  | const char * | soldpass,
|  | const char * | snewpass
| ) |  |

更改自己密码

参数

  h | [in] rdb_create创建的句柄.
  sname | [in] 自己的用户名
  soldpass | [in] 旧密码
  snewpass | [in] 新密码

返回
  返回 0 表示成功，其余值为失败错误码

int rdb_operatorsget | ( | int | h,
|  | rec_operator | opts[],
|  | int | nrecbufsize,
|  | int * | pnopts
| ) |  |

读取账号表

参数

  h | [in] rdb_create创建的句柄.
  opts | [out] 用于接收账号记录的结构体数组
  nrecbufsize | [in] opts数组大小,能容纳账号记录的个数
  pnopts | [out] 实际读取到并存放到opts数组中的记录数

返回
  返回 0 表示成功，其余值为失败错误码

备注
  需要账号管理权限 OPT_POW_MAN

int rdb_putmsg | ( | int | h,
|  | const char * | jstr,
|  | int | jstrsize
| ) |  |

向实时库推送消息

参数

  h[in] | rdb_create创建的句柄.
  jstr | [in] 推送的JSON消息，utf8编码
  jstrsize | [in] jstr的长度，字节数

返回
  0: success; 其他为错误码

备注
  这是内部用的，目前用于rdbdac_ux定时推送网关运行信息.

bool rdb_rdbtime2localtime | ( | T_TIME | ltime,
|  | int * | pnyear,
|  | int * | pnmon,
|  | int * | pnday,
|  | int * | pnhour,
|  | int * | pnmin,
|  | int * | pnsec,
|  | int * | pnmsec
| ) |  |

实时库时标T_TIME分解为本地时间

参数

  ltime | [in] 实时库时标
  pnyear | [out]
  pnmon | [out]
  pnday | [out]
  pnhour | [out]
  pnmin | [out]
  pnsec | [out]
  pnmsec | [out]

返回
  返回true表示成功，false表示失败

int rdb_regctrltag | ( | int | h,
|  | const char * | stagname
| ) |  |

注册控制标签

参数

  h | [in] rdb_create创建的句柄.
  stagname | [in] 标签名

返回
  0表示成功,其余值为失败错误码。

备注
  只有数据采集和控制前置机需要将实时库标签写入到现场设备时才需要使用本函数。这个函数的目的是向实时库报告stagname由当前连接负责写入现场设备，相当于建立一条 由实时库写入现场设备的路由。当前连接断开后，实时库自动清除stagname的写设备路由信息。

int rdb_setmessagenotify | ( | int | h,
|  | rdbcd_onmessage | fun,
|  | void * | param
| ) |  |

设置消息回掉函数

参数

  h | [in] rdb_create创建的句柄.
  fun | [in] 处理消息通知的回调函数,注意和调用者不在一个线程中
  param | [in] 回调函数自己使用的参数

int rdb_setslavedb | ( | int | h,
|  | const char * | sip,
|  | unsigned short | wport,
|  | const char * | sUser,
|  | const char * | sPass
| ) |  |

设置从库

参数

  h | [in] rdb_create创建的句柄.
  sip | [in] ipv4地址.
  wport | [in] 服务端口.
  sUser | [in] 账号.
  sPass | [in] 账号密码.

返回
  0:成功; -1表示失败

备注
  fileversion 5.0.6.9开始有效, 在rdb_create之后，connect之前设置从库的参数，从库的协议和主库相同， 即主库是ws协议则从库也是ws协议通道，主库是wss协议则从库也是wss协议通道。 主库和从库采用切换机制，同一时刻只有一个活动连接，主库失败或断开后尝试使用从库参数连接，从库失败或断开后尝试使用主库参数连接。 只有断开才会发生切换连接操作。

int rdb_soeput | ( | int | h,
|  | rec_soe | psoe[],
|  | int | nsize
| ) |  |

写入SOE事件

参数

  h | [in] rdb_create创建的句柄.
  psoe | [in] SOE事件记录数组
  nsize | psoe中的记录个数

返回
  返回 0 表示成功,其余值为失败错误码。

备注
  这个函数为写入新的SOE事件，每个SOE记录的uautokey字段填写0,追加和历史补录均使用本函数;

int rdb_soequery | ( | int | h,
|  | long long | lts,
|  | unsigned int | autokey,
|  | long long | lte,
|  | const char * | sexp,
|  | rdbcb_OnReadSoes | pfun,
|  | void * | pParam
| ) |  |

查询SOE事件

参数

  h | [in] rdb_create创建的句柄.
  lts | [in] 开始时标,参见T_TIME
  autokey | [in] 开始时标处的autokey
  lte | [in] 结束时标,参见T_TIME,-1表示查询到数据结束
  sexp | [in] 查询表达式
  pfun | [in] 查询结果记录回调函数
  pParam | [in]回调参数

返回
  返回 0 表示成功,其余值为失败错误码。

备注
  直到查询完成或者回调函数返回0表示结束查询,调用者可以随时通过回调函数返回0结束查询。整个查询过程中，回调函数可能被调用多次.

int rdb_soequery_ex | ( | int | h,
|  | const char * | station,
|  | long long | lts,
|  | unsigned int | autokey,
|  | long long | lte,
|  | const char * | sexp,
|  | rdbcb_OnReadSoes | pfun,
|  | void * | puserparam
| ) |  |

查询SOE事件高级版，支持通过中心站从子站查询

参数

  h | [in] rdb_create创建的句柄.
  station[in] | 子站名，null表示从目前连接的站查询(和rdb_soequery功能同)。
  lts | [in] 开始时标,参见T_TIME
  autokey | [in] 开始时标处的autokey
  lte | [in] 结束时标,参见T_TIME,-1表示查询到数据结束
  sexp | [in] 查询表达式
  pfun | [in] 查询结果记录回调函数
  pParam | [in]回调参数

返回
  返回 0 表示成功,其余值为失败错误码。

备注
  直到查询完成或者回调函数返回0表示结束查询,调用者可以随时通过回调函数返回0结束查询。整个查询过程中，回调函数可能被调用多次.

int rdb_soesubscription | ( | int | h,
|  | int | flag
| ) |  |

订阅SOE事件

参数

  h | [in] rdb_create创建的句柄.
  flag | [in] 订阅模式; 0:取消订阅; 1:订阅最新; 2:订阅更新的SOE(被处理后的SOE); 3:订阅最新和更新后的SOE.

返回
  返回 0 表示成功,其余值为失败错误码。

int rdb_soesubscription_ex | ( | int | h,
|  | int | flag,
|  | const char * | station
| ) |  |

订阅SOE的高级版，支持通过中心站订阅子站SOE

参数

  h[in] | rdb_create创建的句柄.
  flag[in] | 订阅模式; 0:取消订阅; 1:订阅最新; 2:订阅更新的SOE(被处理后的SOE); 3:订阅最新和更新后的SOE.
  station[in] | 子站名，null表示订阅目前连接的站的SOE(和rdb_soesubscription功能同)。

返回
  0: success; 其他为错误码

int rdb_soesubscription_setfun | ( | int | h,
|  | rdbcb_OnSscPutSoes | fun,
|  | void * | param
| ) |  |

设置处理订阅的SOE事件处理回调函数

参数

  h | [in] rdb_create创建的句柄.
  fun | [in] 回调函数
  param | [in] 回调函数自己带入的参数

返回
  返回 0 表示成功,其余值为失败错误码。

备注
  在调用rdb_soesubscription前调用本函数设置处理订阅推送回来的SOE事件

int rdb_soeupdate | ( | int | h,
|  | rec_soe | psoe[],
|  | int | nsize
| ) |  |

更新SOE事件记录

参数

  h | [in] rdb_create创建的句柄.
  psoe | [in/out] 事件记录数组,返回时cstatus字段会被改写
  nsize | [in] psoe中的记录数

返回
  返回 0 表示成功,其余值为失败错误码。

备注
  SOE事件使用time字段和uautokey字段组合主键来决定唯一的SOE记录,当返回0后，还需判断每个SOE记录中的status字段为0表示成功，1表示更新失败

int rdb_tagdel | ( | int | h,
|  | const char * | sname
| ) |  |

删除标签

参数

  h | [in] rdb_create创建的句柄.
  sname | [in] 要删除的标签名.

返回
  返回 0 表示成功,其余值为失败错误码。

备注
  删除标签的同时删除历史数据并释放实时库内部逻辑存储页面。

int rdb_tagext_del | ( | int | h,
|  | const char * | tagname
| ) |  |

删除一个标签的扩展属性

参数

  h | [in] rdb_create创建的句柄.
  tagname[in] | 标签名

返回
  0: success; 其他为错误码

int rdb_tagext_get | ( | int | h,
|  | tag_ext * | ptags,
|  | int | size
| ) |  |

获取一批标签扩展属性

参数

  h | [in] rdb_create创建的句柄.
  ptags[in] | in/out 标签扩展属性数组,输入时只填写标签名
  size | [in] ptags中标签个数

返回
  0: success; 其他为错误码

int rdb_tagext_inport | ( | int | h,
|  | tag_ext * | pext,
|  | uint32_t | umask
| ) |  |

导入标签扩展属性

参数

  h | [in] rdb_create创建的句柄.
  pext[in] | 扩展属性结构体。
  umask | [in] 掩码

返回
  0: success; 其他为错误码

int rdb_tagget | ( | int | h,
|  | rec_tag * | ptag
| ) |  |

读取标签属性记录

参数

  h | [in] rdb_create创建的句柄.
  ptag | [in/out] 标签属性记录,调用前填写sname字段.

返回
  返回 0 表示成功,其余值为失败错误码。成功调用后,ptag的其余字段被填写.

int rdb_taginport | ( | int | h,
|  | unsigned int | dwflag,
|  | rec_tag * | ptag,
|  | int * | presult
| ) |  |

导入(添加,更改)标签

参数

  h | [in] rdb_create创建的句柄.
  dwflag | [in] 导入策略,指明当标签存在时修改哪些字段,参见TAG_MASK_DES
  ptag | [in] 标签记录指针
  presult | [out] 处理结果; 0未更改; 1修改了; 2添加了

返回
  返回 0 表示成功，其余值为失败错误码

int rdb_tagquery | ( | int | h,
|  | const char * | snamefilter,
|  | const char * | sdesfilter,
|  | int | ndatatype,
|  | int | ntagclass,
|  | rdbcb_OnReadTags | pfun,
|  | void * | pParam
| ) |  |

查询标签

参数

  h | [in] rdb_create创建的句柄.
  snamefilter | [in] 标签名过滤串,空或*表示全部,支持*和?匹配
  sdesfilter | [in] 标签描述过滤串,空或*表示全部,支持*和?匹配
  ndatatype | [in] 标签名数据类型,-1表示全部
  ntagclass | [in] 标签分类,-1表示全部
  pfun | [in] 回调函数,参见rdbcb_OnReadTags,查询到标签记录后使用回调函数处理.
  pParam | [in] 回调函数的参数.

返回
  返回 0 表示成功,其余值为失败错误码。

备注
  当查询结束或者回调函数返回0时结束查询，也就是调用者可以中途终止查询.整个查询过程中，回调函数可能被调用多次.

long long rdb_time | ( |  | ) |

获取当前时间的实时库时标

返回
  返回当前时间的T_TIME值

int rdb_valgetsection | ( | int | h,
|  | long long | ltime,
|  | int | nflag,
|  | rec_tagval | vals[],
|  | int | nsize
| ) |  |

读取值标签历史断面数据

参数

  h | [in] rdb_create创建的句柄.
  ltime | [in] 断面时标,见T_TIME定义
  vals | [in/out] 标签值记录数组,调用前填写每个记录结构体中的标签名sname字段
  nflag | [in] 断面处理标识,0:插值; -1:时标小于等于ltime的样本值记录; 1:时标大于等于ltime的样本值记录;
  nsize | [in] vals中的记录数.

返回
  返回 0 表示成功,其余值为失败错误码。调用成功后,还需判断每个记录的vals[i].val.cerr错误码,cerr为0表示有效,否则可能是标签不存在或者没有数据.

备注
  此函数PRESET标签不反回数据。

int rdb_valgetsnapshot | ( | int | h,
|  | rec_tagval | vals[],
|  | int | nsize
| ) |  |

读取值标签快照(读值标签实时数据)

参数

  h | [in] rdb_create创建的句柄.
  vals | [in/out] 标签值记录数组,调用前填写每个记录结构体中的标签名sname字段
  nsize | [in] vals中的记录数.

返回
  返回 0 表示成功,其余值为失败错误码。调用成功后,还需判断每个记录的vals[i].val.cerr错误码,cerr为0表示有效,否则可能是标签不存在或者没有数据.

int rdb_valinsert | ( | int | h,
|  | rec_tagval | vals[],
|  | int | nsize
| ) |  |

补录值标签数据(写值标签历史数据)

参数

  h | [in] rdb_create创建的句柄.
  vals | [in] 标签值记录数组
  nsize | [in] vals中的记录数.

返回
  返回 0 表示成功,其余值为失败错误码。

备注
  补录是插入模式,如果前置机到服务器的网络通道故障，可以将数据暂存在前置机本地,故障恢复后可以补录未提交的数据,补录和最新的快照(实时数据)可以同时向服务器提交。 补录属于历史插入,也支持压缩,但不支持例外,补录的的效率主要受服务器存储IO性能的影响(大约在1千到10万记录每秒)。实际应用中可单独开启一个补录连接使用单独线程处理补录数据。

int rdb_valputsnapshot | ( | int | h,
|  | rec_tagval | vals[],
|  | int | nsize
| ) |  |

写值标签快照(写值标签实时数据)

参数

  h | [in] rdb_create创建的句柄.
  vals | [in/out] 标签值记录数组,rdb_valputsnapshot返回0时,每个记录中的cerr为0表示该记录成功,否则为错误码
  nsize | [in] vals中的记录数.

返回
  返回 0 表示成功,其余值为失败错误码。

备注
  写快照是追加模式,生产现场的实时数据使用这个接口写入到实时库,实时库会根据例外和压缩参数处理。这个接口提交数据记录时，服务器的处理能力大于100万记录每秒 从rdb1911开始(rdbsrv file version 5.0.6.0)，如果时标填写0则表示快照时标使用实时库服务器的当前时间作为时标，特别适合对于无实时钟或者时钟无法校时的数据采集网关提交快照数据。 注意对于DEC(设备)标签，新数据的时标必须大于旧数据的时标。对于PRESET标签，新数据的时标大于等于旧数据的时标。

int rdb_valquery | ( | int | h,
|  | const char * | sname,
|  | const char * | sexp,
|  | long long | lts,
|  | long long | lte,
|  | long long | lds,
|  | int | lflag,
|  | rdbcb_OnReadVals | pfun,
|  | void * | pParam
| ) |  |

查询值标签历史数据记录

参数

  h | [in] rdb_create创建的句柄.
  sname | [in] 标签名
  sexp | [in] 查询表达式
  lts | [in] 开始时标,参见T_TIME定义
  lte | [in] 结束时标,参见T_TIME定义,-1表示直到读完
  lds | [in] 插值间隔时间,单位为100毫秒数,0表示读取样本值
  lflag | [in] 读取标识 0: 默认模式，QA = 1的shutdown的时间段数据不插值。 1: 绘图数据，插值包含样本值，因此插值出来的记录数据多余预计的记录数，QA = 1的shutdown的时间段数据不插值 2: 全数据插值，不管数据质量 3: 全数据绘图数据，不管数据质量，插值包含样本值，因此插值出来的记录数据多余预计的记录数 4: 读取区间最小值，内部版本5114及以后支持。 5: 读取区间最大值，内部版本5114及以后支持。 6: 读取区间最小值，不管数据质量，内部版本5114及以后支持。 7: 读取区间最大值，不管数据质量，内部版本5114及以后支持。 注1）4，5，6，7模式dt 必须 > 0表示区间(等于0会返回样本值)，表达式sexp参数被忽略。当区间内无样本值记录时，会采用插值方式补齐，插值模式根据标签属性中的定义决定使用梯形还是线性插值。4，5模式QA = 1的shutdown的时间段数据不插值；6，7模式则不关心QA的值。 注2）1，3模式绘图数据从内部版本5114开始，表达式sexp参数被忽略；lds为0表示服务器通过time_begin和time_end值自动计算间隔；
  pfun | [in] 数据记录到达回掉函数,参见rdbcb_OnReadVals
  pParam | [in] pfun使用的参数

返回
  返回 0 表示成功,其余值为失败错误码。

备注
  直到数据查询完成或者回调函数返回0表示结束查询,调用者可以随时通过回调函数返回0结束查询。整个查询过程中，回调函数可能被调用多次.

int rdb_writeobjtodevice | ( | int | h,
|  | rec_tagobj * | pobj
| ) |  |

写对象标签的值到现场设备

参数

  h | [in] rdb_create创建的句柄.
  pobj | [in] 对象标签数据记录

返回
  0表示成功,其余值为失败错误码。

备注
  写入现场设备的标签必须是通过rdb_regctrltag由自己或其他连接注册了标签,已经建立了写设备路由,否则会返回SE_CTRLNOROUTE错误。

int rdb_writevaltodevice | ( | int | h,
|  | rec_tagval * | pval
| ) |  |

写值标签的值到现场设备

参数

  h | [in] rdb_create创建的句柄.
  pval | [in] 值标签数据记录

返回
  0表示成功,其余值为失败错误码。

备注
  写入现场设备的标签必须是通过rdb_regctrltag由自己或其他连接注册了标签,已经建立了写设备路由，否则会返回SE_CTRLNOROUTE错误。

int64_t rdbtime_fromstr | ( | const char * | str,
|  | size_t | zlen
| ) |  |

本地字符串表达的时间转换为实时库时间

参数

  str | 字符串，比如"2019/12/3 12:24:56.200" 或者 "2019/12/3 12:24:56"
  zlen | str的长度(字符数)

返回
  返回实时库时间(从1970-1-1开始的100毫秒数)

int rdbtime_tostr | ( | int64_t | ltime,
|  | char * | sout,
|  | size_t | outsize
| ) |  |

实时库时间(从1970-1-1开始的100毫秒数)转换为字符串

参数

  ltime实时库时间 |
  sout | 输出空间
  outsize | 输出空间大小(字节数)

返回
  返回输出的字符数,意义同snprintf德返回值,如果错误返回-1; 如果返回值大于等于outsize则输出被截断。