feat: 调整温度采集和保存

hc-jna3
huangfeng 8 hours ago
parent 8d64ad8e57
commit 3f71d05990

@ -3,15 +3,9 @@ package com.xydl.cac.thermal;
import com.hcsdk.HCNetSDK;
import com.sun.jna.Pointer;
import com.xydl.cac.entity.NSensor;
import com.xydl.cac.entity.ThermalConfig;
import com.xydl.cac.model.StaticVariable;
import com.xydl.cac.service.DataService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
@Slf4j
public class HCRemoteConfigCallBack implements HCNetSDK.FRemoteConfigCallBack {
@ -19,43 +13,38 @@ public class HCRemoteConfigCallBack implements HCNetSDK.FRemoteConfigCallBack {
public boolean done;
public NSensor item;
public String time;
public ThermalConfig config;
@Resource
DataService dataService;
public HCThermalService service;
@Override
public void invoke(int dwType, Pointer lpBuffer, int dwBufLen, Pointer pUserData) {
if (done) {
return;
}
HCNetSDK.NET_DVR_THERMOMETRY_UPLOAD data = new HCNetSDK.NET_DVR_THERMOMETRY_UPLOAD();
Pointer pointer = data.getPointer();
pointer.write(0, lpBuffer.getByteArray(0, data.size()), 0, data.size());
data.read();
float fAverageTemperature = data.struLinePolygonThermCfg.fAverageTemperature;
float fMinTemperature = data.struLinePolygonThermCfg.fMinTemperature;
float fMaxTemperature = data.struLinePolygonThermCfg.fMaxTemperature;
log.info("海康热成像采集到max=" + fMaxTemperature + ", min=" + fMinTemperature + ", aver=" + fAverageTemperature);
done = true;
if (StringUtils.isNotBlank(config.getMaxtemp())) {
String value = String.valueOf(fMaxTemperature);
dataService.insertData(item.getTableName(), item.getDevId(), time, config.getMaxtemp(), value);
// 更新最新数据缓存
StaticVariable.updateLastData(item.getDevId(), config.getMaxtemp(), value, time);
}
if (StringUtils.isNotBlank(config.getMintemp())) {
String value = String.valueOf(fMinTemperature);
dataService.insertData(item.getTableName(), item.getDevId(), time, config.getMintemp(), value);
// 更新最新数据缓存
StaticVariable.updateLastData(item.getDevId(), config.getMintemp(), value, time);
}
if (StringUtils.isNotBlank(config.getAvertemp())) {
String value = String.valueOf(fAverageTemperature);
dataService.insertData(item.getTableName(), item.getDevId(), time, config.getAvertemp(), value);
// 更新最新数据缓存
StaticVariable.updateLastData(item.getDevId(), config.getAvertemp(), value, time);
try {
HCNetSDK.NET_DVR_THERMOMETRY_UPLOAD data = new HCNetSDK.NET_DVR_THERMOMETRY_UPLOAD();
Pointer pointer = data.getPointer();
pointer.write(0, lpBuffer.getByteArray(0, data.size()), 0, data.size());
data.read();
float max, min, aver;
if (0 == data.byRuleCalibType) {
max = data.struPointThermCfg.fTemperature;
min = max;
aver = max;
log.info("海康热成像采集到max=" + max + ", min=" + min + ", aver=" + aver);
service.save(item.getTableName(), item.getDevId(),
max, min, aver, time);
done = true;
} else if (1 == data.byRuleCalibType || 2 == data.byRuleCalibType) {
max = data.struLinePolygonThermCfg.fAverageTemperature;
min = data.struLinePolygonThermCfg.fMinTemperature;
aver = data.struLinePolygonThermCfg.fMaxTemperature;
log.info("海康热成像采集到max=" + max + ", min=" + min + ", aver=" + aver);
service.save(item.getTableName(), item.getDevId(),
max, min, aver, time);
done = true;
}
} catch (Exception ex) {
log.error("HCRemoteConfigCallBack异常", ex);
}
}
}

@ -3,8 +3,12 @@ package com.xydl.cac.thermal;
import com.hcsdk.HCModule;
import com.xydl.cac.entity.NSensor;
import com.xydl.cac.entity.ThermalConfig;
import com.xydl.cac.model.StaticVariable;
import com.xydl.cac.service.DataService;
import com.xydl.cac.util.DateUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import javax.annotation.PreDestroy;
@ -16,9 +20,12 @@ import java.util.List;
@Slf4j
public class HCThermalService {
@Resource
DataService dataService;
@Resource
HCRemoteConfigCallBack _callBack;
ThermalConfig _config;
int shutdown = 0;
@PreDestroy
@ -30,6 +37,7 @@ public class HCThermalService {
if (shutdown == 1) {
return;
}
_config = config;
try {
HCModule.init();
NSensor sensor = list.get(0);
@ -43,8 +51,8 @@ public class HCThermalService {
for (NSensor item : list) {
_callBack.done = false;
_callBack.item = item;
_callBack.config = config;
_callBack.time = DateUtil.format(new Date());
_callBack.service = this;
r = HCModule.startRemoteConfig(_callBack, 2, item.getTmId());
if (r) {
int sec = 0;
@ -65,4 +73,27 @@ public class HCThermalService {
HCModule.cleanup();
}
}
@Async
public void save(String tableName, Integer devId,
float max, float min, float aver, String time) {
if (StringUtils.isNotBlank(_config.getMaxtemp())) {
String value = String.valueOf(max);
dataService.insertData(tableName, devId, time, _config.getMaxtemp(), value);
// 更新最新数据缓存
StaticVariable.updateLastData(devId, _config.getMaxtemp(), value, time);
}
if (StringUtils.isNotBlank(_config.getMintemp())) {
String value = String.valueOf(min);
dataService.insertData(tableName, devId, time, _config.getMintemp(), value);
// 更新最新数据缓存
StaticVariable.updateLastData(devId, _config.getMintemp(), value, time);
}
if (StringUtils.isNotBlank(_config.getAvertemp())) {
String value = String.valueOf(aver);
dataService.insertData(tableName, devId, time, _config.getAvertemp(), value);
// 更新最新数据缓存
StaticVariable.updateLastData(devId, _config.getAvertemp(), value, time);
}
}
}

Loading…
Cancel
Save