断线重连

camera_merge
王一鸣 5 years ago
parent 716b7b6ac8
commit bb6d5215f6

@ -227,6 +227,8 @@ public class PtzControlModule {
}
public static void downloadMp4(Integer cameraId,String path,String orderNum,LocalDateTime start,LocalDateTime end){
//视频结束时间加上5s
end = end.plusSeconds(5);
PathUtil.checkDirc(path);
NetSDKLib.NET_TIME startTime = new NetSDKLib.NET_TIME();
startTime.setTime(start.getYear(),start.getMonthValue(),start.getDayOfMonth(),start.getHour(),start.getMinute(),start.getSecond());
@ -244,7 +246,7 @@ public class PtzControlModule {
NetSDKLib.NET_OUT_DOWNLOAD_BY_DATA_TYPE net_out_download_by_data_type = new NetSDKLib.NET_OUT_DOWNLOAD_BY_DATA_TYPE();
net_out_download_by_data_type.write();
log.info("start download mp4 path:{},startTime:{} ,endTime:{},now:{}",path,startTime.toString(),endTime.toString(),LocalDateTime.now());
NetSDKLib.LLong l = LoginModule.netsdk.CLIENT_DownloadByDataType(CameraConnMap.getConnId(cameraId),download_by_data_type.getPointer(),net_out_download_by_data_type.getPointer(),5000);
NetSDKLib.LLong l = LoginModule.netsdk.CLIENT_DownloadByDataType(CameraConnMap.getConnId(cameraId),download_by_data_type.getPointer(),net_out_download_by_data_type.getPointer(),8000);
if(l.longValue() == 0){
log.error("download error :{}",ToolKits.getErrorCodePrint());
}else {

@ -23,10 +23,14 @@ public class HeartNettyClientFilter extends ChannelInitializer<SocketChannel> {
private PlcService plcService;
public HeartNettyClientFilter(Integer streetId,SendHeart sendHeart,PlcService plcService){
private NettyClient nettyClient;
public HeartNettyClientFilter(Integer streetId,SendHeart sendHeart,PlcService plcService,NettyClient nettyClient){
this.streetId = streetId;
this.sendHeart = sendHeart;
this.plcService = plcService;
this.nettyClient = nettyClient;
}
@Override
@ -36,6 +40,6 @@ public class HeartNettyClientFilter extends ChannelInitializer<SocketChannel> {
ph.addLast(new IdleStateHandler(0, 4, 0, TimeUnit.SECONDS));
ph.addLast(new MyProtocolDecoder(plcService));
ph.addLast(new MyProtocolEncoder());
ph.addLast(new HeartNettyClientHandler(streetId,sendHeart));
ph.addLast(new HeartNettyClientHandler(streetId,sendHeart,nettyClient));
}
}

@ -19,6 +19,11 @@ public class MyProtocolDecoder extends FixedLengthFrameDecoder {
this.plcService = plcService;
}
private static String HEART = "0A";
private static String ORDER = "0B";
private static String ACTION = "0C";
private static String WARN = "0D";
/**
* TCP
*
@ -73,11 +78,10 @@ public class MyProtocolDecoder extends FixedLengthFrameDecoder {
byte[] bytes = new byte[]{b1, b2, b3, b4, b5, b6, b7, b8};
String signal = "pl43"+plcId+type+String.valueOf(taskId)+short1+short2+short3+short4+short5+short6+short7+short8+":"+code+b1+b2+b3+b4+b5+b6+b7+b8;
log.info("plcId:{},原始信号:{}", plcId, signal);
if (type.equals("0A")) {
if (type.equals(HEART)) {
//心跳
log.debug("receive heart plcId:{}", plcId);
} else if (type.equals("0B")) {
} else if (type.equals(ORDER)) {
if ("B1".equals(code)) {
log.info("order start ,plcId:{},orderInfo:{}", plcId, plcOrderInfo.toString());
plcService.orderStart(plcOrderInfo, plcId);
@ -85,10 +89,8 @@ public class MyProtocolDecoder extends FixedLengthFrameDecoder {
log.info("order end, plcId:{},orderInfo:{}", plcId, plcOrderInfo.toString());
plcService.orderStop(plcId, plcOrderInfo.getOrderNum());
}
} else if (type.equals("0C")) {
} else if (type.equals(ACTION)) {
log.info("action code,{} plcId:{},orderInfo:{}", code, plcId, plcOrderInfo.toString());
if(!code.equals("C6")){
Integer times = OrderAction.put(plcOrderInfo.getOrderNum());
//执行动作
@ -96,7 +98,7 @@ public class MyProtocolDecoder extends FixedLengthFrameDecoder {
}else {
plcService.action(plcOrderInfo, plcId, 1, code);
}
} else if (type.equals("0D")) {
} else if (type.equals(WARN)) {
log.info(" warn code:{}", code);
if ("D0".equals(code)) {
log.info("warn start ,plcId:{},warnInfo:b1:{},b2:{},b3:{},b4:{},b5:{},b6:{},b7:{},b8:{}", plcId, b1, b2, b3, b4, b5, b6, b7, b8);

@ -39,7 +39,7 @@ public class NettyClient {
client.group(group);
client.channel(NioSocketChannel.class);
SendHeart sendHeart = new SendHeart(street.getPlcId());
client.handler(new HeartNettyClientFilter(street.getId(), sendHeart, plcService));
client.handler(new HeartNettyClientFilter(street.getId(), sendHeart, plcService,this));
// 连接服务端
client.connect(street.getPlcIp(), street.getPlcPort()).sync().channel();
}

@ -107,12 +107,12 @@ public class OrderService {
if (street.getCamera1Id() != null) {
String path = PathUtil.createFileName("mp4");
PtzControlModule.downloadMp4(street.getCamera1Id(), mp4Path + path, orderNum, order.getStartTime(), order.getEndTime().plusSeconds(5));
PtzControlModule.downloadMp4(street.getCamera1Id(), mp4Path + path, orderNum, order.getStartTime(), order.getEndTime());
update.setVideoPath1(path);
}
if (street.getCamera2Id() != null) {
String path = PathUtil.createFileName("mp4");
PtzControlModule.downloadMp4(street.getCamera2Id(), mp4Path + path, orderNum, order.getStartTime(), order.getEndTime().plusSeconds(5));
PtzControlModule.downloadMp4(street.getCamera2Id(), mp4Path + path, orderNum, order.getStartTime(), order.getEndTime());
update.setVideoPath2(path);
}
orderMapper.updateById(update);

@ -69,6 +69,7 @@ public class PlcService {
public void orderStart(PlcOrderInfo plcOrderInfo,String plcId) {
Order order = new Order();
order.setOrderNum(plcOrderInfo.getOrderNum());
order.setStatus(0);
order.setStartTime(LocalDateTime.now());
Street street = streetService.getStreetByPlcId(plcId);
if(street != null){

Loading…
Cancel
Save