rdbapi  5.1.1.4
实时数据库接口API
rdbdef.h
1 
9 #ifndef RDBDEF_H
10 #define RDBDEF_H
11 
12 typedef char T_I8; //1字节整数
13 typedef unsigned char T_U8; //1字节无符号整数
14 
15 typedef short int T_I16;//2字节整数
16 typedef unsigned short int T_U16;//2字节无符号整数
17 
18 typedef int T_I32;//4字节整数
19 typedef unsigned int T_U32;//4字节无符号整数
20 
21 typedef long long T_I64;//8字节整数
22 typedef unsigned long long T_U64;//8字节无符号整数
23 
24 typedef float T_F32;//4字节浮点数
25 typedef double T_F64;//8字节双精度浮点数
26 
27 typedef T_I64 T_TIME;//64位时标,精确到100毫秒,UTC/GMT(国际时间)自1970-1-1开始的100毫秒数 = time_t * 10
28 
29 //数据类型
30 #define DT_VOID 0 //空类型
31 #define DT_DIGITAL 1 //开关量,也是4字节整数
32 #define DT_INT32 2 //4字节整数
33 #define DT_FLOAT32 3 //4字节浮点数
34 #define DT_INT64 4 //8字节整数
35 #define DT_FLOAT64 5 //8字节浮点数
36 #define DT_STRING 6 //字符串
37 #define DT_OBJECT 7 //对象类型
38 
39 //标签分类
40 #define TGCLS_DEC 0 //现场设备标签
41 #define TGCLS_DEFINE 1 //定义标签
42 #define TGCLS_PRESET 2 //预处理标签
43 #define TGCLS_CURVE 3 //曲线标签
44 #define TGCLS_SYSTAG 4 //系统标签
45 
46 //压缩方式
47 #define TA_COMPNO 0 //不压缩
48 #define TA_COMPPER 1 //百分比精度压缩
49 #define TA_COMPVAL 2 //绝对值精度压缩
50 #define TA_COMPTIMER 3 //定时存储,使用最大压缩周期间隔存储
51 #define TA_COMPEXTIMER 4 //增强定时存储,使用最大压缩周期间隔存储,并存储区间内的最大最小值记录
52 
53 //数据质量
54 #define QA_OK 0 //质量
55 #define QA_SHUTDOWN 1 //关机,数据不可靠
56 #define QA_ERRDATA 2 //数据无效
57 #define QA_NOTAG 3 //无此标签
58 #define QA_ERRTIME 4 //错误的时标
59 #define QA_MANUAL 5 //人工置数
60 
61 //权限定义
62 #define OPT_POW_READ 0x01 //读取数据
63 #define OPT_POW_WRITE 0x02 //写数据
64 #define OPT_POW_WTAG 0x04 //写标签
65 #define OPT_POW_MAN 0x08 //账号管理
66 #define OPT_POW_CTRL 0x10 //控制权限
67 
68 //标签导入策略,某位有效表示需要修改该项
69 #define TAG_MASK_DES 0x0001 //描述
70 #define TAG_MASK_UNIT 0x0002 //单位
71 #define TAG_MASK_COMPEXC 0x0008 //压缩属性
72 #define TAG_MASK_CLASS 0x0010 //标签分类
73 #define TAG_MASK_ARCHIVE 0x0020 //归档
74 #define TAG_MASK_VDIGITS 0x0040 //显示精度
75 #define TAG_MASK_STEP 0x0080 //梯形插值
76 #define TAG_MASK_LIMIT 0x0100 //上下限值
77 #define TAG_MASK_BKSYN 0x0200 //同步标签
78 #define TAG_MASK_ALARM 0x0400 //Alarm
79 
80 //标签导入结果
81 #define TAGIN_NOTMODIFY 0 //标签未修改
82 #define TAGIN_MODIFY 1 //标签修改
83 #define TAGIN_ADD 2 //标签添加
84 
85 //rdb_valgetsection中参数nflag的定义
86 #define SECTION_INSERT 0 //插值
87 #define SECTION_AFTER 1 //之后, 时标 >= 指定时间
88 #define SECTION_BEFORE (-1) //之前, 时标 <= 指定时间
89 
90 #define SE_OPT_OK 0 //成功
91 #define SE_OPT_NOACTOR 0x20 //无此角色
92 #define SE_OPT_NOUSER 0x21 //无此账号
93 #define SE_OPT_PASSERR 0x22 //密码错误
94 #define SE_OPT_NOPOWER 0x23 //无此权限
95 #define SE_OPT_USEREXIST 0x24 //账号重复
96 #define SE_OPT_ACTOREXIST 0x25 //角色重复
97 #define SE_OPT_ACTORUSE 0x26 //角色正在使用
98 #define SE_OPT_NOLOGIN 0x27 //没有登录
99 #define SE_OPT_NOTACTIVE 0x28 //账号冻结
100 #define SE_OPT_OPTFULL 0x29 //账号满
101 #define SE_OPT_ACTFULL 0x2A //角色满
102 #define SE_OPT_NOTMODPSW 0x2B //不容许修改密码
103 
104 #define SE_TG_NOTAG 0x30 //无此标签
105 #define SE_TG_TAGFULL 0x31 //标签满
106 #define SE_TG_NOARCHIVE 0x32 //不归档
107 #define SE_TG_MODSYSTAG 0x33 //不能修改系统标签
108 
109 #define SE_DA_TIME 0x40 //时标错误
110 #define SE_DA_TYPE 0x41 //类型错误
111 #define SE_DA_QA 0x42 //质量错误
112 #define SE_DA_NODATA 0x43 //无数据
113 
114 #define SE_CTRLNOROUTE 0x61
115 #define SE_CTRLOUTERR 0x62
116 
117 #define SE_SRV_FRMNOOD 0xFF //无此命令
118 #define SE_SRV_FRMERR 0xFE //报文错误
119 #define SE_SRV_DBVER 0xFD //API和实时库版本不一致
120 #define SE_SRV_BACKUOPSRV 0XFB //备份服务器
121 #define SE_SRV_DEMOOVER 0xFC //试用过期,历史数据服务停止
122 
123 
124 //标签越限配置和越限快照读取中cerr定义的值
125 #define LIMIT_LOW 1
126 #define LIMIT_HIGH 2
127 #define LIMIT_LOWLOW 4
128 #define LIMIT_HIGHHIGH 8
129 
133 struct rec_tag
134 {
135  T_U32 uid; //标签ID
136 
137  T_I8 cdatatype; //数据类型
138  T_I8 ctagtype; //标签类型,没有使用,填写TAGTYPE_NONE,可有客户端自定义。
139  T_I8 ccomptype; //压缩类型
140  T_I8 cres; //保留
141 
142  T_F32 fcompval; //压缩精度
143  T_I8 sname[80]; //标签名
144  T_I8 sdes[80]; //描述
145  T_I8 sunit[16]; //工程单位
146 
147  T_I8 cdigits; //小数位数,-20 到 10 ; >0 小数位数,小于0,有效位数
148  T_I8 cclass; //分类,默认TGCLS_DEC
149  T_I8 cstep; //梯形插值,1梯形,0线性
150  T_I8 carchive; //存盘,1存盘,0不存
151 
152  T_F32 fdnval; //下限
153  T_F32 fupval; //上限
154 
155  T_F32 fexcdev; //列外偏差,如果是百分比,则和百分比压缩意义相同
156  T_I16 snexcmin; //最小列外偏差时间
157  T_I16 snexcmax; //最大列外偏差时间
158 
159  T_I16 sncompmin; //最小压缩时间间隔(单位秒)
160  T_I16 sncompmax; //最大压缩时间间隔(单位秒)
161 
162  T_I32 alarmtype; //报警状态
163  float alarm_llv; //报警下下限
164  float alarm_lv; //报警下限
165  float alarm_hv; //报警上限
166  float alarm_hhv; //报警上上限
167 
168  T_U8 sres[24]; //保留,清零
169 }; //sizeof() = 256
170 
171 
175 struct rec_val
176 {
177  T_TIME time; //GMT时标,从1970年1月1日开始的100毫秒数
178  union
179  {
180  T_I32 i32; //存储didital、int32
181  T_F32 f32; //存储float32
182  T_I64 i64; //存储int64
183  T_F64 f64; //存储float64
184  T_U64 u64; //存储64位整数
185  };
186  T_I8 cvt; //类型
187  T_I8 cqa; //质量
188  T_I8 cerr; //错误码
189  T_I8 cres; //保留,读取越限标签快照时,cres为越限状态,LIMIT_LOW,LIMIT_HIGH,LIMIT_LOWLOW,LIMIT_HIGHHIGH
190  T_U32 unres; //保留
191 };//sizeof() = 24
192 
197 {
198  char sname[80]; //标签名
199  rec_val val; //值记录
200 }; // sizeof = 104
201 
202 #define MAX_OBJ_LEN 1000 //最大对象数据字节数
203 
207 struct rec_obj {
208  T_TIME time; //时标
209 
210  T_U32 uobjtype; //类型,用户自定义,可当检索条件
211  T_U32 ures; //以后扩展用,比如第2索引BATID
212 
213  T_I8 cvt; //数据类型,DT_STRING,DT_BLOB
214  T_I8 cqa; //质量
215  T_I8 cerr; //错误码
216  T_I8 cres; //保留
217 
218  T_U16 usres; //保留
219  T_U16 uslen; //数据长度,即sdata的长度,如果是字符串,则不包含结束符0
220 
221  T_I8 sdata[MAX_OBJ_LEN];
222 }; //sizeof() = 1024
223 
228 {
229  char sname[80];
231 }; //sizeof() = 1104
232 
237 {
238  char sname[16]; //用户名<=15字符
239  T_U8 smd5pass[16]; //二进制的MD5加密后的密码
240  char sactor[16]; //角色名,内部表关联用
241  char sdes[80]; //描述
242  T_I32 lbactive; //是否活动,0不活动,1活动
243  char nomodpsw; //禁止修改密码;1:禁止;0:容许
244  char sres[27]; //保留
245 }; //sizeof = 160
246 
247 
251 struct rec_actor
252 {
253  char sname[16]; //角色名
254  char sdes[80]; //描述
255  T_U32 dwpower; //权限
256  char sres[28]; //保留
257 }; //sizeof = 128
258 
262 struct rec_soe
263 {
264  T_TIME time; //GMT时标,从1970年1月1日开始的100毫秒数
265  T_U32 uautokey; //自动主键,解决时间相同的SOE事件主键冲突
266  T_I32 type; //事件类型,4字节有符号,(用户自定义,比如可定义越上限,越下限等)
267  T_I16 argtype; //事件参数格式,2字节带符号,<0 为基于字符串的格式,>0为基于2进制的格式。具体有用户定义,用于客户端解析参数。
268  T_U16 arglen; //参数长度(0-240),基于字符串格式的长度不包括结尾的0。
269  T_I32 level; //事件级别使用
270 
271  char source[80]; //事件来源,0结束的字符串,最多存储79字符,可填写标签名或者其他内容
272  char sdes[160]; //事件描述,0结束的字符串,最多存储159字节
273  char sarg[240]; //事件参数。根据argtype和arglen填写。
274  char cflag; //事件已经处理标识
275  char cstatus; //SOE UPdate返回时用于指示是否更新,0表示更新成功,1表示不存在或更新失败
276  char res[6]; //保留
277 }; // sizeof() = 512
278 
282 typedef struct tag_ext {
283  uint32_t upos;//保留
284  int status;//状态码,或者返回错误码
285  char tagname[80]; //标签名
286  char des_ll[80]; //低低报警描述
287  char des_l[80]; //低报警描述
288  char des_h[80]; //高报警描述
289  char des_hh[80]; //高高报警描述
290  int level_ll;
291  int level_l;
292  int level_h;
293  int level_hh;
294  char rdes_ll[80];//低低报警恢复描述
295  char rdes_l[80]; //低报警恢复描述
296  char rdes_h[80]; //高报警恢复描述
297  char rdes_hh[80];//高高报警恢复描述
299 
300 #endif //RDBDEF_H
事件记录
Definition: rdbdef.h:262
角色记录
Definition: rdbdef.h:251
值标签数据记录
Definition: rdbdef.h:196
标签扩展属性
Definition: rdbdef.h:282
对象数据记录
Definition: rdbdef.h:207
对象标签数据记录
Definition: rdbdef.h:227
账号记录
Definition: rdbdef.h:236
rec_obj var
对象记录
Definition: rdbdef.h:230
值数据记录
Definition: rdbdef.h:175
标签属性记录
Definition: rdbdef.h:133
T_I8 sdata[MAX_OBJ_LEN]
对象数据
Definition: rdbdef.h:221
char sname[80]
标签名
Definition: rdbdef.h:229