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需要解码的数据
nsizepdata的长度(字符数)
sout输出区
noutsize输出区长度(字符数)
返回
返回字节数,输出带0结尾,空间不够返回-1; 当sout为nullptr时,返回需要的输出空间大小
int rdb_base64_encode ( const void *  pdata,
int  nsize,
char *  sout,
int  noutsize 
)

base64快速编码

参数
pdata需要编码的数据
nsizepdata的长度(字符数)
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密码
nTimeOutSec0表示异步连接,立即返回,大于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需要编码的数据
nsizepdata的长度(字符数)
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事件记录数组
nsizepsoe中的记录个数
返回
返回 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"
zlenstr的长度(字符数)
返回
返回实时库时间(从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则输出被截断。