●函数:
public List<HDRecord> queryTagHisRawRecords(int tagID, Date startTime, Date endTime) throws HDSdkException
●参数:
参数名称 |
数据类型 |
参数说明 |
默认值 |
tagID |
int |
tag点id |
|
startTime |
Date |
起始时间 |
|
endTime |
Date |
终止时间 |
|
●返回值:
返回值类型 |
返回值说明 |
List<HDRecord> |
记录列表,按照时间最新排列靠前排序 |
●异常:
当参数出现错误时,向上抛出IllegalArgumentException异常
当后台查询出错时,向上抛出HDSdkException异常
●说明:
该接口用于查询Tag点在某时间段内的原始记录,如果该时间段记录超过65535条记录,则只返回65535条。
可能需要先进行登录操作,请参考HDDataConnection类
●示例代码:
注: 标记为红色的代码行为当前接口的调用
import com.baosight.hdsdk.HDConnectionFactory;
import com.baosight.hdsdk.HDDataProvider;
import com.baosight.hdsdk.HDServerFactory;
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 java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
public class IhdJavaSdkQueryTagVal {
// 查询Tag点在某时间段内的原始记录当前尝试次数
private static int currentTry = 1;
// 查询Tag点在某时间段内的原始记录最大尝试次数
private static final int maxTries = 3;
public void queryTagHisRawRecords() {
// 设置服务器信息
String serverIP = "168.2.237.1";
String bakIp = "168.2.237.2";
HDDataServer server = HDServerFactory.getHDDataServer(serverIP,5673,bakIp,5673);
HDDataConnection dataConn = null;
try {
dataConn = HDConnectionFactory.getHDDataConnection(server);
dataConn.loginToServer("admin", "admin");
HDDataProvider dp = new HDDataProvider(dataConn);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date startTime = dateFormat.parse("2025-01-01 12:00:00");
Date endTime = dateFormat.parse("2025-01-01 13:00:00");
List<HDRecord> rawRecordsList = new ArrayList<>();
while(true) {
List<HDRecord> tempRawRecordList = dp.queryTagHisRawRecords(1, startTime, endTime);
rawRecordsList.addAll(tempRawRecordList);
if (tempRawRecordList.size() == 65535) { // 时间范围内记录条数超出65535,以最后一条记录的timestamp作为endTime继续查询
endTime = dateFormat.parse(tempRawRecordsList.get(65534).getTimeStampStr());
} else {
break;
}
}
dataConn.dispose();
} catch (HDSdkException e) {
e.printStackTrace();
try { // 查历史值异常后,休眠三秒进行重试
System.out.println("【查询Tag点在某时间段内的原始记录】接口第" + currentTry + "次调用失败, 执行重试");
Thread.sleep(3000);
currentTry ++;
if (currentTry <= maxTries) {
queryTagHisRawRecords();
} else {
System.out.println("【查询Tag点在某时间段内的原始记录】接口重试调用已达" + maxTries + "次, 查询失败");
currentTry = 1; // 接口调用当前尝试次数复位
}
} catch (InterruptedException ex) {
ex.printStackTrace();
}
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
}