423 lines
14 KiB
C
423 lines
14 KiB
C
#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_MEMORY,dwsize返回最小所需空间大小
|
||
DWORD dwErrorCode,// in,API调用返回的错误码
|
||
char* sval, // out, 存放返回的错误信息,如果传递NULL,则pnrecsize返回所需空间大小
|
||
DWORD *dwsize // in/out, 存放返回的错误信息缓冲区的大小,128长度的sval空间是安全的
|
||
);
|
||
|
||
}
|
||
#endif //_DPAPI2_J_H_I
|