rdbapi 5.1.1.9 实时数据库C接口 for windows/Linux |

载入中...
搜索中...
未找到
宏定义 | 类型定义 | 函数
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
| TCP连接错误
#define | SE_TCP_PROXY_CONNECT 0x03
| SOCKET5代理错误
#define | SE_TCP_PROXY_AUTH 0x04
| SOCKET5代理验证错误
#define | SE_TCP_DISCONNECT 0x05
| TCP连接断开
#define | SE_TCP_IO 0x06
| TCP网络IO错误
#define | SE_TCP_CONSVRFAIL 0x07
| TCP连接服务器失败
#define | SE_TCP_SENDBLOCK 0x08
| TCP发送阻塞
#define | SE_TCP_ERRPKG 0x0A
| TCP报文错误
#define | SE_TCPCALLTIMEOUT 0x0B
| TCP调用超时
#define | SE_ERRARGS 0x0C
| 调用参数错误
#define | SE_EXP 0x10
| 表达式错误
#define | SE_EXPVAR 0x11
| 表达式引用变量错误
#define | SE_EXPVAROVER 0x12
| 表达式引用变量太多，最多允许4个
#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 | OPT_NOTMODPSW 0x2B
| 不容许修改密码
#define | SE_TG_NOTAG 0x30
| 无此标签
#define | SE_TG_TAGFULL 0x31
| 标签满
#define | SE_TG_NOARCHIVE 0x32
| 不归档
#define | SE_TG_ERRNAME 0x33
| 标签名错误
#define | SE_TG_NOSTATION 0x34
| 无子站或者子站不在线
#define | SE_DA_TIME 0x40
| 时标错误
#define | SE_DA_TYPE 0x41
| 类型错误
#define | SE_DA_QA 0x42
| 质量错误
#define | SE_DA_NODATA 0x43
| 无数据
#define | SE_DA_END 0x44
| 数据结束，这个不是错误，是用于查询记录结束用的
#define | SE_DA_SIZEOVER 0x48
| 数据长度超限
#define | SE_DA_INSERT 0x49
| 数据插入错误
#define | SE_SSC_OVER_TAGS 0x4A
| 匹配订阅超限
#define | SE_SSC_OVER_SESSIONS 0x4B
| 订阅会话数超限
#define | SE_SSC_NOTSSC 0x4C
| 未订阅,取消订阅未订阅的标签时返回这个状态码
#define | SE_CTRLNOROUTE 0x61
| 无路由不能写
#define | SE_CTRLOUTERR 0x62
| 输出错误
#define | SE_SRV_FRMNOOD 0xFF
| 无此命令
#define | SE_SRV_FRMERR 0xFE
| 报文错误
#define | SE_SRV_DBVER 0xFD
| API和实时库版本不一致
#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(* | rdbcb_OnPushValSnaps) (const rec_tagval pvals[], int sizeVals, void *param)
| 服务器推送的订阅标签快照值数据回调函数
typedef void(* | rdbcb_OnPushObjSnaps) (const rec_tagobj pobjs[], int sizeObjs, void *param)
| 服务器推送的订阅标签快照对象数据回调函数
typedef void(* | rdbcb_OnPushJsonMsgs) (const char *jstr, int sizejstr, void *param)
| 服务器推送的JSON消息(包括SOE和订阅数据推送)回调函数,适合高级用户自己解析订阅的SOE和订阅的快照数据JSON报文
typedef void(* | rdbcd_onmessage) (int nmsgcode, const char *smsg, void *param)
| 消息通知回调函数

## 函数
int | rdb_create ()
| 创建接口
int | rdb_setslavedb (int h, const char *sip, unsigned short wport, const char *sUser, const char *sPass)
| 设置从库
int | rdb_setmessagenotify (int h, rdbcd_onmessage fun, void *param)
| 设置消息通知回调函数
int | rdb_destory (int h)
| 删除句柄
int | rdb_connectex (int h, const char *surl, const char *sUser, const char *sPass, int nTimeOutSec)
| 高级模式连接实时库
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_curdb (int h)
| 获取当前连接的实时库
int | rdb_curdb_inver (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 | 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)
| 删除一个标签的扩展属性
int | rdb_datadelete (int h, const char *tagname, const char *datetime_begin, const char *datetime_end, int *pnumdelrecords)
| 删除标签数据记录, 双机热备时，只删除当前连接的实时库中数据。
int | rdb_soedelete (int h, const char *datetime_begin, unsigned int ukey_begin, const char *datetime_end, unsigned int ukey_end, int *pnumdelrecords)
| 删除SOE记录, 双机热备时，只删除当前连接的实时库中数据。
int | rdb_valinsertex (int h, const char *tagname, rec_val vals[], int numvals, int *pninsert, int *pnupdate, int *pnignore)
| 值类型标签数据记录增强插入,无压缩插入一个标签的多条记录,用于备份或者数据维护,如果存在，不相同更改。 双机热备时，只在当前连接的实时库中插入数据。
int | rdb_objinsertex (int h, const char *tagname, rec_obj objs[], int numobjs, int *pninsert, int *pnupdate, int *pnignore)
| 对像类型标签数据记录增强插入一个标签的多条记录,用于备份或者数据维护,如果存在，不相同更改。双机热备时，只在当前连接的实时库中插入数据。
int | rdb_getworkmode (int h, int *pworkmode)
| 读取工作模式
int | rdb_setworkmode (int h, int workmode, int *pworkmode)
| 设置工作模式
int | rdb_pushjsonmessage_setfun (int h, rdbcb_OnPushJsonMsgs fun, void *pfunparam)
| 设置处理实时库推送json消息的处理回调函数，用于高级用户自己解析订阅推送的快照和SOE
int | rdb_subscription_setfun (int h, rdbcb_OnPushValSnaps funVal, void *pValparam, rdbcb_OnPushObjSnaps funObj, void *pObjparam)
| 设置订阅标签快照处理回调函数
int | rdb_sscsnaps (int h, int mode, int codepage, const char *tagnames[], int nsize, void(*funErr)(const char *tagname, int errcode, void *param), void *paramFun)
| 订阅快照,订阅后，当有新的快照数据写入实时库时，对每个订阅者推送一份快照数据。
int | rdb_unsscsnaps (int h, int codepage, const char *tagnames[], int nsize, void(*funErr)(const char *tagname, int errcode, void *param), void *paramFun)
| 取消订阅快照
int | rdb_unsscallsnaps (int h)
| 取消所有订阅
int | rdb_listsscsnaps (int h, int codepage, void(*funTag)(const char *tagname, void *param), void *paramFun)
| 读取当前自己的订阅表
int | rdb_apiver ()
| rdbapi的文件版本
int | rdb_gbk2utf8 (const char *sgbk, size_t gbksize, char *sout, size_t outsize)
| GBK转UTF8
int | rdb_utf82gbk (const char *sutf8, size_t utf8size, char *sout, size_t outsize)
| UTF8转GBK
int | rdb_jtime2string (long long jtime, char *out, size_t outsize, int useLocalTimeZone)
| js时标转ISO8601格式字字符串时标,例"2023-2-20T12:10:32.123+08:00"
long long | rdb_string2jtime (const char *sdatetime, size_t zlen)
| ISO8601字符串格式的时标转换为jtime(int64, 自1970-1-1开始的毫秒数,UTC时标(0时区))

## 详细描述

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

日期
  2024-9-19 增加订阅推送接口和相关错误码定义,GBK和UTF8互转函数,ISO8601时标转换函数。
  2023-12-20 修改rdb_valquery接口lflag参数定义,增加功能
  2023-3-31 增加数据删除、增强插入、工作模式接口
  2021-3-1 监控接口和订阅子站SOE接口。
  2020-12-6 增加混合读取标签快照接口rdb_getsnapshot。
  2020-8-17 增加切换式双库连接。
  2020-6-14 增加人工置数接口。
  2020-3-22 使用基于WS的协议实现,兼容前面应用。
  2008-8-23 增加SOE订阅

## 类型定义说明

## ◆ ctrl_OnObjWriteToDevice

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

对象标签写设备回调函数

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

## ◆ ctrl_OnValWriteToDevice

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

值标签写设备回调函数

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

## ◆ rdbcd_onmessage

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

消息通知回调函数

参数

  nmsgcode | 消息码,MSGCODE_CONNECT_SUCCESS,MSGCODE_CONNECT_FAILED,MSGCODE_DISCONNECTED之一
  smsg | 消息描述
  param | 调用者参数

## 函数说明

## ◆ rdb_initwritetodevice()

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表示成功,其余值为失败错误码。

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

## ◆ rdb_regctrltag()

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

注册控制标签

参数

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

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

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

## ◆ rdb_valgetsnapshot()

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表示有效,否则可能是标签不存在或者没有数据.

## ◆ rdb_writeobjtodevice()

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

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

参数

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

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

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

## ◆ rdb_writevaltodevice()

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

写值标签的值到现场设备

参数

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

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

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