以不同插值算法,查询Tag点的历史插值记录,返回特定时刻的历史差值记录

Navigation:  Java > 记录查询接口 >

以不同插值算法,查询Tag点的历史插值记录,返回特定时刻的历史差值记录

Previous pageReturn to chapter overviewNext page

 

函数:

public List<ImmutablePair<HDRecord, Integer>> queryTagHisInterRecordsByMode(int tagID, HDInterpolationMode mode, int nRecNum, List<HDRecord> hdRecords , HDErrcode errCode) throws HDSdkException

 

参数:

参数名称

数据类型

参数说明

默认值

tagId

int

tag点id

 

mode

HDInterpolationMode

插值方式,参考HDInterpolationMode

可选值:

HDInterpolationMode.FORWARD 前向插值方式(当前时刻有值,则取当前时刻的值,当前时刻无值,则取前一个时刻的值)

HDInterpolationMode.LINEAR 线性插值方式(当前时刻有值,则取当前时刻的值,当前时刻无值,则根据前一个时刻的值和后一个时刻的值计算线性值)

 

hdRecords

List<HDRecord>

所要查询的记录List 所要写入的记录对象,必须设置索要查询的记录时间

 

errcode

HDErrcode

查询结果的总体错误码,可以根据本参数判断是否为部分成功

 

 

返回值:

 

返回值类型:

List<ImmutablePair<HDRecord,Integer>>

 

返回值说明:

返回查询历史插值记录结果和对应的错误码。

返回结构体实例及详解:

clip0163

HDRecord对象中包含

返回值说明

second:当前查询时刻的秒参数

当前时刻值的查询错误码,如果查询成功,值为0.

microSecond:当前查询时刻的毫秒参数

quality:tag点数据质量

dataType:tag点数据类型

valueStr:tag点值,如查询出错,则为错误码

belongTagID:tagid

异常:

当参数出现错误时,向上抛出IllegalArgumentException异常

当后台查询出错时,向上抛出HDSdkException异常

 

说明:

该接口用于以不同插值算法,查询Tag点的历史插值记录,返回特定时刻的历史差值记录。

可能需要先进行登录操作,请参考HDDataConnection类

 

示例代码:

注: 标记为红色的代码行为当前接口的调用

import com.baosight.hdjni.HDErrcode;

import com.baosight.hdsdk.common.*;

import com.baosight.hdsdk.domain.data.HDDataConnection;

import com.baosight.hdsdk.domain.data.HDDataServer;

import com.baosight.hdsdk.domain.data.HDRecord;

import com.baosight.hdsdk.exception.HDSdkException;

import org.apache.commons.lang3.tuple.ImmutablePair;

import java.util.ArrayList;

import java.util.List;

 

public class IhdJavaSdkQueryTagVal {

   public static void main(String[] args) {

       String serverIP = "168.2.237.1";

       String bakIp = "168.2.237.2";

       HDDataServer server = HDServerFactory.getHDDataServer(serverIP,5673,bakIp,5673);

       HDDataConnection hdconn = null;

       try {

           hdconn = HDConnectionFactory.getHDDataConnection(server);

           hdconn.loginToServer("admin", "admin");

          HDErrcode errCode = new HDErrcode();

           List<HDRecord> hdRecordList = new ArrayList<>();

           HDDataProvider dp = new HDDataProvider(hdconn);

           // 此示例模拟了单点查询100个时刻的值

           long second = 1739858220L;

           for (int i = 0; i < 100; i ++) {

               HDRecord hdRecord = new HDRecord();

               hdRecord.setSecond(second);

               short microSecond = 0;

               hdRecord.setMicroSecond(microSecond);

               hdRecordList.add(hdRecord);

               second++;

           }

           List<ImmutablePair<HDRecord, Integer>> snapshotsList = dp.queryTagHisInterRecordsByMode(1, HDInterpolationMode.FORWARD, hdRecordList, errCode);

       } catch (HDSdkException e) {

           e.printStackTrace();

       }

   }

}