插值查询(单点查询)com_ar_query_interp_record_by_mode

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

插值查询(单点查询)com_ar_query_interp_record_by_mode

Previous pageReturn to chapter overviewNext page

函数

STDMETHOD (com_ar_query_interp_record_by_mode)(

LONGnMode,

LONGnTagID,

VARIANT* nSec,

VARIANT* nMsec,

VARIANT* nQuality,

VARIANT* nTagType,

VARIANT* bsValue,

LONG* nRetErr

);

 

参数

[in]LONGnMode,插值类型,值为1表示前向插值;值为0表示线性插值

[in]LONGnTagID, TagID。

[in,out]VARIANT* nSec, 插值时间戳的秒,必须是LONG类型,nSec->vt = VT_I4

[in,out]VARIANT* nMsec, 插值时间戳的毫秒,必须是LONG类型,必须是LONG类型,nMsec->vt = VT_I4

[out]VARIANT* nQuality,记录的数据质量,nQuality->vt = VT_I4

[out]VARIANT* nTagType, 记录的Tag类型,nTagType->vt = VT_I4

[out]VARIANT* bsValue, 记录的值,bsValue->vt = VT_BSTR

[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,result

id=13

mode = 1

Dim nsec,nmsec,nquality,ntype,nvalue

 

nsec = CLng(1379310469)

nmsec = CLng(0)

 

result = CLng(objArray.com_ar_query_interp_record_by_mode( mode,id,nsec,nmsec,nquality,ntype,nvalue))

 

Msgbox "com_ar_query_interp_record_by_mode错误码是:" &result

 

if result=0 then

 

Msgbox "sec is:" &nsec

Msgbox "msec is:" &nmsec

Msgbox "quality is:" &nquality

Msgbox "type is:" &ntype

Msgbox "value is:" &nvalue

 

end if

objArray.com_nt_disconnect

 

Set objArray= nothing

 

©2015. All Rights Reserved.