●函数:
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>>
返回值说明:
返回查询历史插值记录结果和对应的错误码。
返回结构体实例及详解:
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();
}
}
}