插值查询(单点多记录查询)com_ar_query_interp_records_by_mode

Navigation:  功能明细 > 数据接口 > COM接口 > VB 接口 >

插值查询(单点多记录查询)com_ar_query_interp_records_by_mode

Previous pageReturn to chapter overviewNext page

函数

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.