函数
STDMETHOD (com_ar_query_interp_records_by_mode)(
LONGnMode,
LONGnTagID,
LONGnRecNum,
VARIANT* nSec,
VARIANT* nMsec,
VARIANT* nQuality,
VARIANT* nTagType,
VARIANT* bsValue,
VARIANT* nErrCodes,
LONG* nRetErr
);
参数
[in]LONGnMode,插值类型,值为1表示前向插值;值为0表示线性插值。
[in]LONGnTagID, TagID
[in]LONGnRecNum, 记录的条数。
[in,out]VARIANT* nSec, 时间戳的秒数组,必须是LONG类型,nSec->vt = VT_ARRAY | VT_VARIANT
[in,out]VARIANT* nMsec, 时间戳的毫秒数组,必须是LONG类型,必须是LONG类型,nMsec->vt = VT_ARRAY | VT_VARIANT
[out]VARIANT* nQuality,的数据质量数组,nQuality->vt = VT_ARRAY | VT_VARIANT
[out]VARIANT* nTagType, 记录的Tag类型数组,nTagType->vt = VT_ARRAY | VT_VARIANT
[out]VARIANT* bsValue, 记录的值数组,bsValue->vt = VVT_ARRAY | VT_VARIANT
[out]VARIANT* nErrCodes,每条记录的错误码数组
[out,retval]LONG* nRetErr,返回值
返回值
成功,返回RD_SUCCESS。失败返回其它错误码,见error_code.h
说明
iHyperDB的8种数据类型都支持插值查询。
根据数据实际采集及压缩策略,原始历史数据曲线可能存在数据点时间间隔不均,曲线过于抖动或锐化,通过插值方式可以在现有数据逻辑基础上输出增补点令曲线平滑,数据点间隔均匀。本函数用于根据输入TagID、查询记录条数及查询时间戳数组,来查询单点的多条记录。所查询的时间戳未必是实际存储点的时间戳,但可根据插值类型计算获得。
注意:输入参数中的时间戳数组长度必须与记录条数一致;
插值计算,插入点前后都需要有质量为好的实际存储点,方可插值。
此外,如果插值时间点正好等于原始记录的时间戳,则此数据的插值查询可以成功返回;
如果插值查询的时间戳后无实际存储点,则无法成功查询返回。
举例
|
|
Set objArray= CreateObject("hdCOMInterface.hdCOMClass.1")
Dim ip,port,bakip,bakport,timeout ip= "127.0.0.1" port= 5678 bakip = "1.2.3.4" bakport = 1234 timeout= 3
Dim ret objArray.com_nt_connect ip,port,bakip,bakport,timeout
Dim id,mode,recnum id=14 mode = 1 recnum=3 Dim nsec,nmsec,nquality,ntype,nvalue,nerrcode,result
nsec=Array(CLng(1379310469),CLng(1379310569),CLng(1379310669))
nmsec=Array(CLng(0),CLng(0),CLng(0))
result = CLng(objArray.com_ar_query_interp_records_by_mode( mode,id,recnum,nsec,nmsec,nquality,ntype,nvalue,nerrcode))
Msgbox "com_ar_query_interp_records_by_mode错误码是:" &result
if result=0 or result=119611 then
Dim x6,showerrcode showerrcode = "调用后errcode:" for x6= LBound(nerrcode) to UBound(nerrcode) showerrcode = showerrcode & nerrcode(x6) & "; " next MsgBox showerrcode
Dim x1,showsec showsec = "调用后sec:" for x1= LBound(nsec) to UBound(nsec) showsec = showsec & nsec(x1) & "; " next MsgBox showsec
Dim x2,showmsec showmsec = "调用后msec:" for x2= LBound(nmsec) to UBound(nmsec) showmsec = showmsec & nmsec(x2) & "; " next MsgBox showmsec
Dim x3,showquality showquality = "调用后quality:" for x3= LBound(nquality) to UBound(nquality) showquality = showquality & nquality(x3) & "; " next MsgBox showquality
Dim x4,showtype showtype = "调用后type:" for x4= LBound(ntype) to UBound(ntype) showtype = showtype & ntype(x4) & "; " next MsgBox showtype
Dim x5,showvalue showvalue = "调用后Value:" for x5= LBound(nvalue) to UBound(nvalue) showvalue = showvalue & nvalue(x5) & "; " next MsgBox showvalue
end if
objArray.com_nt_disconnect
Set objArray= nothing |
©2015. All Rights Reserved.