Files
dbp-exporter/dbpapi/include/dbpapi_j.h
2022-11-08 13:49:53 +08:00

423 lines
14 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#if !defined _DPAPI2_J_H_I
#define _DPAPI2_J_H_I
//数据类型
#define DT_VOID 0 //空类型
#define DT_DIGITAL 1 //开关量 ,也是4字节整数
#define DT_INT32 2 //4字节整数
#define DT_FLOAT32 3 //4字节浮点数
#define DT_INT64 4 //8字节整数
#define DT_FLOAT64 5 //8字节浮点数
#define DT_STRING 6 //字符串
#define DT_BLOB 7 //二进制数据块
// 代理服务器质量码
#define DBP_QUALITY_GOOD 0x00 // GOOD
#define DBP_QUALITY_BAD 0x01 // 坏值,但没有特定原因
#define DBP_QUALITY_BAD_CONFIG_ERROR 0x02 // 服务器配置错误。例如,标签从运行的服务器配置中删除了
#define DBP_QUALITY_BAD_NOT_CONNECTED 0x03 // 输入要求连接到其他目标,但无法成功连接。该质量说明在该时间点上的值不可信,因为有一个数据源未提供
#define DBP_QUALITY_BAD_DEVICE_FAIL 0x04 // 检测到设备故障
#define DBP_QUALITY_BAD_SENSOR_FAIL 0x05 // 检测到传感器故障
#define DBP_QUALITY_BAD_LAST 0x06 // 设备与服务器的通讯失败,但是,最后有效值是可用的。请注意,时标标记的是最后一个有效值的时标,而不是质量变更的时标
#define DBP_QUALITY_BAD_COMM_FAIL 0x07 // 设备与服务器的通讯失败,并且没有最后可用的有效值
#define DBP_QUALITY_BAD_OUT_OF_SERVICE 0x08 // 该标签或组被设置为非活动,表示该标签由于某种原因不被服务器更新
#define DBP_QUALITY_UNCERTAIN 0xE0 // 值有效性不确定,但没有特定原因
#define DBP_QUALITY_UNCERTAIN_LAST 0xE1 // 已经停止写入最新值该值应被视为“过去值”。请注意该状态表示为在规定时间内标签未被更新。而Bad/Last Usable Value表示为检测到通讯错误发生
#define DBP_QUALITY_UNCERTAIN_SENSOR 0xE2 // 值超出传感器量程范围或者传感器内部诊断为测量不准确
#define DBP_QUALITY_UNCERTAIN_EU_EXCEEDED 0xE3 // 返回值超出了该值定义的范围。请注意,该状态并不意味着该值是超限的
#define DBP_QUALITY_UNCERTAIN_SUB_NORMAL 0xE4 // 该值来自多个源但其中状态为GOOD的数据源个数少于规定值
#define DBP_QUALITY_CALC_OFF 0xF0 // 计算停止
#define DBP_QUALITY_LOLO_LIMIT 0xF9 // 低低报
#define DBP_QUALITY_LO_LIMIT 0xFA // 低报
#define DBP_QUALITY_HI_LIMIT 0xFB // 高报
#define DBP_QUALITY_HIHI_LIMIT 0xFC // 高高报
#define DBP_QUALITY_NOT_INIT 0xFD // 才被创建,还未被初始化
#define DBP_QUALITY_SHUTDOWN 0xFE // 服务器关闭
#define DBP_QUALITY_UNKOWN 0xFF // 未知错误
// 读历史str,历史blob,SOE是时标的意义
#define RST_CUR 1 //当前时标处
#define RST_AFTER 2 //当前之后一条
#define RST_DEFAULT (RST_CUR | RST_AFTER) //当前或之后一条
// GetHisVal3使用表示如果指定时标无值时如何取值
#define RHV_BEFORE 1 // 取前一值
#define RHV_AFTER 2 // 取后一值
#define RHV_INTERP 3 // 取插值
//权限
#define DS_POWERMAN 0x00000001 //账号管理
#define DS_SYSMAN 0x00000002 //系统管理,数据库管理,标签管理
#define DS_WRITE 0x00000004 //写权限
#define DS_READ 0x00000008 //读权限
//标签类型
#define TAG_FLAG_DDC 0 //现场数据标签(实时库标签) 导入名"ddctag"
#define TAG_FLAG_DEF 1 //定义标签(手工标签) 导入名"deftag"
#define TAG_FLAG_PRE 2 //预处理标签(预处理标签) 导入名"pretag"
#define TAG_FLAG_CUR 3 //曲线标签 导入名"curtag"
#define TAG_FLAG_CALC 4 //计算标签 导入名"calctag"
//历史数据类型
#define HISTORY_RAW 0
#define HISTORY_INSTEP 1
#define HISTPRY_PLOT 2
// 仅为了规范java接口命名
#define DBPGetVersion DBP_GetVersion
extern "C"{
// dbpapi版本号版本号V2.5.4.0表示为0x02050400
DWORD __stdcall DBP_GetVersion();
///////////////////////////////////////////////////////////
//对象管理
DWORD __stdcall DBPCreate( //创建对象
char* sips[], //服务器IP数组 16字节
char* susers[], //登录账号数组 16字节
char* spasss[], //登录密码数组 16字节
WORD wport[], //端口数组
int nsize //数组个数
); //返回对象句柄
DWORD __stdcall DBPCreate2( //创建对象,支持群组
char* sip, // 服务器IP 16字节
char* suser, // 登录账号 16字节
char* spass, // 登录密码 16字节
WORD wport, // 端口
BOOL bUseGroup //是否使用群组
); //返回对象句柄
DWORD __stdcall DBPDestroy( //销毁对象
DWORD h //对象句柄调用Destroy后该参数就不能再使用了
);//返回错误码
///////////////////////////////////////////////////////////
//连接管理
DWORD __stdcall DBPConnect( //连接服务器
DWORD h
);//返回错误码
DWORD __stdcall DBPDisConnect( //断开服务器连接
DWORD h
);//返回错误码
DWORD __stdcall DBPIsConnect( //判断服务器连接
DWORD h,
int* pnCon //in/out, 回填0表示没连接非0表示已连接
);//返回错误码
DWORD __stdcall DBPGetSvrConInfo( //取连接信息
DWORD h,
char* sip, //in/out服务器IP 16字节
int* pnNum // in/out 服务器客户连接数
);//返回错误代码
///////////////////////////////////////////////////////////
//标签属性
DWORD __stdcall DBPQueryTagFromDbp(//查询标签,查询后结果保存在对象中下次用EnumTagAttr逐个取属性
DWORD h,
const char* snameflt, //标签名过滤传NULL或空串表示全部
const char* sdesflt, //描述过滤传NULL或空串表示全部
int ntype, //数据类型,-1表示全部
long* pltagnum //查询到的标签数
);//返回错误码
DWORD __stdcall DBPQueryTagFromDbp2(//查询标签,查询后结果保存在对象中下次用EnumTagAttr逐个取属性
DWORD h,
const char* snameflt, //标签名过滤传NULL或空串表示全部
const char* sdesflt, //描述过滤传NULL或空串表示全部
int ntype, //数据类型,-1表示全部
int ntagtype, //标签类型,-1表示全部
long* pltagnum //查询到的标签数
);//返回错误码
DWORD __stdcall DBPEnumTagAttr( //枚举查询后标签属性
DWORD h,
char* sname, //标签名 80
char* sdbname, //数据库实例名 16
char* sdbtagname, //数据库标签名 80
char* sdes, //描述 80
char* sunit, //单位 16
DWORD* dwid, //标签ID
WORD* wtype, //数据类型
short* errcode, //错误代码
long* ltagflag, //标签类型
int nIndex //位置 0到查询的标签数-1
); //返回 DBP_OK表示成功否则错误或没有了
DWORD __stdcall DBPGetTagAttrFromDbp( //从服务器取标签属性
DWORD h,
char* sname[], //in/out标签名 80
char* sdbname[], //in/out数据库实例名 16
char* sdbtagname[], //in/out数据库标签名 80
char* sdes[], //in/out描述 80
char* sunit[], //in/out单位 16
DWORD dwid[], //in/out标签ID
WORD wtype[], //in/out数据类型
short errcode[], //in/out错误代码
long ltagflag[], //in/out标签类型,
int nsize
);//返回错误码
DWORD __stdcall DBPGetTagAttr( //从服务器取单个标签属性
DWORD h,
char* sname, //in/out标签名 80
char* sdbname, //in/out数据库实例名 16
char* sdbtagname, //in/out数据库标签名 80
char* sdes, //in/out描述 80
char* sunit, //in/out单位 16
DWORD* dwid, //in/out标签ID
WORD* wtype, //in/out数据类型
short* errcode, //in/out错误代码
long* ltagflag //in/out标签类型,
);//返回错误码
///////////////////////////////////////////////////////////
//读值
DWORD __stdcall DBPGetSnapshotStr( //读快照,string
DWORD h,
const char* sname, //标签名
long* pltime,
short* psnqa,
char sval[], //接收区,如果是字符串结尾补0
int nsize, //接收区大小
int* pndatasize //接收的数据字节数不含结束符0
); //返回错误码
DWORD __stdcall DBPGetSnapshotBlob( //读快照,blob
DWORD h,
const char* sname, //标签名
long* pltime,
short* psnqa,
char sval[], //接收区,如果是字符串结尾补0
int nsize, //接收区大小
int* pndatasize //读到的数据字节数。
);//返回错误码
DWORD __stdcall DBPGetHisVal( //读历史
DWORD h,
const char* sname, //标签名
long lts, //in,开始时间
long lte, //in,结束时间
long linsertsec, //in,插值时间
long lflag, //in,标志
double dblvals[],//in/out,double区
long lvals[], //in/out,long 区
long ltimes[], //in/out,时标区
short snqas[], //in/out,质量区
int nsize, //in,空间大小
int* pntype, //in/out,数据类型
int* pndatasize//in/out,数据个数
);
DWORD __stdcall DBPGetHisValFilter(
DWORD h,
const char* sname, //标签名
long lts, //in,开始时间
long lte, //in,结束时间
long linsertsec, //in,插值时间
long lflag, //in,标志
const char *expression,//过滤字符串
double dblvals[],//in/out,double区
long lvals[], //in/out,long 区
long ltimes[], //in/out,时标区
short snqas[], //in/out,质量区
int nsize, //in,空间大小
int* pntype, //in/out,数据类型
int* pndatasize//in/out,数据个数
);
DWORD __stdcall DBPGetHisStr( //读string历史
DWORD h,
const char* sname, //in,标签名
long ltime, //in,开始时间
DWORD dwflag, //in,标志,RST_CUR,RST_AFTER,RST_DEFAULT之一
long* pltime, //in/out, 时标
short* psnqa, //in/out, 质量
char sval[], //接收区,如果是字符串结尾补0
int nsize, //in,接收区大小
int* pndatasize //in/out,接收的数据字节数不含结束符0
); //返回错误码
DWORD __stdcall DBPGetHisBlob( //读BLOB历史
DWORD h,
const char* sname, //in,标签名
long ltime, //in,开始时间
DWORD dwflag, //int,标志,RST_CUR,RST_AFTER,RST_DEFAULT之一
long* pltime, //in/out, 时标
short* psnqa, //in/out, 质量
char sval[], //in/out, 接收区,如果是字符串结尾补0
int nsize, //in,接收区大小
int* pndatasize //in/out,读到的数据字节数。
);//返回错误码
///////////////////////////////////////////////////////////
// 写值
DWORD __stdcall DBPWriteSnapshotStr( //写string 快照
DWORD h,
const char* sname, //标签名
long ltime, //时标
short snqa, //质量
const char* sval //字符串值结尾补0
); //返回错误码
DWORD __stdcall DBPWriteHisStr( //写string历史
DWORD h,
const char* sname, //标签名
long ltime, //时标
short snqa, //质量
const char* sval //字符串值结尾补0
); //返回错误码
DWORD __stdcall DBPWriteSnapshotBlob( //写BLOB快照
DWORD h,
const char* sname, //标签名
long ltime, //时标
short snqa, //质量
char* pval, //值
int ndatasize //值长度
); //返回错误码
DWORD __stdcall DBPWriteHisBlob( //写BLOB历史
DWORD h,
const char* sname, //标签名
long ltime, //时标
short snqa, //质量
char* pval, //值
int ndatasize //值长度
); //返回错误码
DWORD __stdcall DBPDelHis( //删除单点历史
DWORD h,
const char* sname, //in 标签名
long lts, //in 开始时间
long lte //in 结束时间
);
DWORD __stdcall DBPGetSumVal(
DWORD h,
const char* sname, //in,标签名
long lts, //in,开始时间
long lte, //in,结束时间
long ltype, //in,统计类型
long lds, //in,分段时间
long ltimes[], //in/out,时标
short snqas[], //in/out,质量
double dblvals[], //in/out,dblval值输出区
int lvals[], //in/out,long值输出区
int nsize, //in,输出区值空间大小
int* pntype, //in/out,标签值类型DT_FLOAT32等
int* pnrecsize //in/out,实际输出数据个数
);//读统计值最多读nsize条记录
DWORD __stdcall DBPDelHis2( //删除多点历史
DWORD h,
char* sTagNames[], //in,标签名字符串指针数组
long ltimes[], //in, 时标
short errs[], //in/out, 错误码
int nsize //in,个数
);
/* 不再支持该接口由DBPGetMultiPointHisVal()代替
DWORD __stdcall DBPGetHisVal2( //读多点历史
DWORD h,
long ltime, //in,时间
char* sTagNames[], //标签名字符串指针数组 //apistring
int ntypes[], //in/out,数据类型,DT_INT32,DT_FLOAT32等
double dblvals[], //in/out,值输出空间
long lvals[], //in/out,值输出空间
short snqas[], //in/out,质量
short snerrs[], //in/out,错误
int nsize //in,标签个数
);
*/
DWORD __stdcall DBPGetSnapshot( //读快照
DWORD h,
char* sTagNames[],//in,标签名字符串指针数组
long ltimes[], //in/out, 时标
short snqas[], //in/out, 质量
double dblvals[], //in/out, 存放double值,DT_FLOAT32,DT_FLOAT64存放区
long lvals[], //in/out, 存放Long值,DT_DIGITAL,DT_INT32,DT_INT64存放区
int ntypes[], //in/out, 数据类型,DT_INT32,DT_FLOAT32等。
short errs[], //in/out, 错误码
int nsize //in, 个数
);//返回错误码
DWORD __stdcall DBPWriteHis( //写历史
DWORD h,
char* sTagNames[], //in,标签名字符串指针数组
long ltimes[], //in, 时标
short snqas[], //in, 质量
double dblvals[], //in, 存放double值,DT_FLOAT32,DT_FLOAT64存放区
long lvals[], //in, 存放Long值,DT_DIGITAL,DT_INT32,DT_INT64存放区
int ntypes[], //in, 数据类型,DT_INT32,DT_FLOAT32等。
short errs[], //in/out, 错误码
int nsize //in, 个数
);
DWORD __stdcall DBPWriteSnapshot( //写快照
DWORD h,
char* sTagNames[], //in,标签名字符串指针数组
long ltimes[], //in, 时标
short snqas[], //in, 质量
double dblvals[], //in, 存放double值,DT_FLOAT32,DT_FLOAT64存放区
long lvals[], //in, 存放Long值,DT_DIGITAL,DT_INT32,DT_INT64存放区
int ntypes[], //in, 数据类型,DT_INT32,DT_FLOAT32等。
short errs[], //in/out, 错误码
int nsize //in, 个数
);
DWORD __stdcall DBPGetServerInfo(
DWORD h,
DWORD *dwVersion, // 代理服务器版本号
long *lNowTime, // 当前时间
long *lStartupTime, // 启动时间
DWORD *dwConnectCount, // 当前连接数
DWORD *dwTagCount, // 当前标签总数
float *fCPUUsage, // CPU占用
DWORD *dwHandleCount, // 句柄数
DWORD *dwThreadsCount, // 线程数
DWORD *dwMemoryBytes, // 内存使用
DWORD *dwMemoryBytesPeak, // 高峰内存使用
DWORD *dwVirtualBytes, // 虚拟内存大小
DWORD *dwVirtualBytesPeak // 高峰虚拟内存大小
);
DWORD __stdcall DBPGetMultiPointHisVal(
DWORD h,
long lMode, //取值模式RHV_BEFORE、RHV_AFTER、RHV_INTERP
char* sTagNames[], //标签名字符串指针数组 //apistring
long ltimes[], //in/out,标签名对应时标数组如果为RHV_BEFORE、RHV_AFTER类型会返回标符值的真实时标
int ntypes[], //in/out,数据类型,DT_INT32,DT_FLOAT32等
double dblvals[], //in/out,值输出空间
long lvals[], //in/out,值输出空间
short snqas[], //in/out,质量
short snerrs[], //in/out,错误
int nsize //in,标签个数
);
DWORD __stdcall DBPGetDiSumVal(
DWORD h,
const char* sname, //in,标签名
long lts, //in,开始时间
long lte, //in,结束时间
long lds, //in,分段时间
long lval, //in,统计开关量值
long lpSumCount[], //in/out,返回的统计次数数组
long lpSumTimes[], //in/out,返回的统计时间数组
int nsize, //in,输出区值空间大小
int* pnrecsize //in/out,实际输出数据个数
);
DWORD __stdcall DBPGetErrorMessage( //获取错误码的描述信息如果sval==NULL或dwsize空间不足则函数返回APIE_MEMORYdwsize返回最小所需空间大小
DWORD dwErrorCode,// in,API调用返回的错误码
char* sval, // out, 存放返回的错误信息如果传递NULL则pnrecsize返回所需空间大小
DWORD *dwsize // in/out, 存放返回的错误信息缓冲区的大小128长度的sval空间是安全的
);
}
#endif //_DPAPI2_J_H_I