|
@@ -43,7 +43,7 @@ public class UserHandler extends SimpleChannelInboundHandler<String> {
|
|
private static final Logger logger = Logger.getLogger(UserHandler.class);
|
|
private static final Logger logger = Logger.getLogger(UserHandler.class);
|
|
|
|
|
|
private ChannelHandlerContext ctx;
|
|
private ChannelHandlerContext ctx;
|
|
-
|
|
|
|
|
|
+
|
|
@Resource
|
|
@Resource
|
|
private MouldHistoryMapper mouldHistoryMapper;
|
|
private MouldHistoryMapper mouldHistoryMapper;
|
|
@Resource
|
|
@Resource
|
|
@@ -60,17 +60,16 @@ public class UserHandler extends SimpleChannelInboundHandler<String> {
|
|
private MouldDownPacketMapper mouldDownPacketMapper;
|
|
private MouldDownPacketMapper mouldDownPacketMapper;
|
|
@Resource
|
|
@Resource
|
|
private TimeCalibrationRecordMapper timeCalibrationRecordMapper;
|
|
private TimeCalibrationRecordMapper timeCalibrationRecordMapper;
|
|
-
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
protected void channelRead0(ChannelHandlerContext arg0, String arg1) {
|
|
protected void channelRead0(ChannelHandlerContext arg0, String arg1) {
|
|
String pack = "FAAF0007001e781e50003C37D5";
|
|
String pack = "FAAF0007001e781e50003C37D5";
|
|
- //校准时间
|
|
|
|
-// timeCalibration();
|
|
|
|
|
|
+ // 校准时间
|
|
|
|
+ timeCalibration();
|
|
System.out.println("收到===" + arg1 + "\n");
|
|
System.out.println("收到===" + arg1 + "\n");
|
|
String equipmentNo = processMsg(arg1);
|
|
String equipmentNo = processMsg(arg1);
|
|
- //以下是配置下行数据
|
|
|
|
-// sendPackage(equipmentNo);
|
|
|
|
|
|
+ // 以下是配置下行数据
|
|
|
|
+ // sendPackage(equipmentNo);
|
|
}
|
|
}
|
|
|
|
|
|
private String processMsg(String input) {
|
|
private String processMsg(String input) {
|
|
@@ -93,23 +92,24 @@ public class UserHandler extends SimpleChannelInboundHandler<String> {
|
|
String deviceNum = getStringFromHexStr(deviceNumPart);
|
|
String deviceNum = getStringFromHexStr(deviceNumPart);
|
|
System.out.println("设备No=" + deviceNum);
|
|
System.out.println("设备No=" + deviceNum);
|
|
item.setEquipmentNo(deviceNum);
|
|
item.setEquipmentNo(deviceNum);
|
|
- // 软件版本号25
|
|
|
|
- String version = input.substring(25 * 2, 26 * 2);
|
|
|
|
- System.out.println("软件版本号=" + version);
|
|
|
|
- item.setVersion(version);
|
|
|
|
- String status = input.substring(26 * 2, 27 * 2);
|
|
|
|
- System.out.println("工作状态=" + status);
|
|
|
|
|
|
+ // 发送数据包
|
|
MouldDownPacketExample pExp = new MouldDownPacketExample();
|
|
MouldDownPacketExample pExp = new MouldDownPacketExample();
|
|
pExp.createCriteria().andEquipmentNoEqualTo(deviceNum);
|
|
pExp.createCriteria().andEquipmentNoEqualTo(deviceNum);
|
|
List<MouldDownPacket> packetList = mouldDownPacketMapper.selectByExample(pExp);
|
|
List<MouldDownPacket> packetList = mouldDownPacketMapper.selectByExample(pExp);
|
|
- if(packetList.size()>0){
|
|
|
|
|
|
+ if (packetList.size() > 0) {
|
|
MouldDownPacket packet = packetList.get(0);
|
|
MouldDownPacket packet = packetList.get(0);
|
|
- if(!("0"+packet.getIsUse()).equals(status)){
|
|
|
|
- logger.info("开始下发数据包==>"+packet.getPacketStr());
|
|
|
|
- sendMsg(packet.getPacketStr());
|
|
|
|
- }
|
|
|
|
|
|
+ logger.info("开始下发数据包==>" + packet.getPacketStr());
|
|
|
|
+ sendMsg(packet.getPacketStr());
|
|
|
|
+ //下发完就将数据删除(防止后续数据过大造成性能的影响)
|
|
|
|
+ mouldDownPacketMapper.deleteByPrimaryKey(packet.getId());
|
|
logger.info("判断是否开启或关闭已结束==>");
|
|
logger.info("判断是否开启或关闭已结束==>");
|
|
}
|
|
}
|
|
|
|
+ // 软件版本号25
|
|
|
|
+ String version = input.substring(25 * 2, 26 * 2);
|
|
|
|
+ System.out.println("软件版本号=" + version);
|
|
|
|
+ item.setVersion(version);
|
|
|
|
+ String status = input.substring(26 * 2, 27 * 2);
|
|
|
|
+ System.out.println("工作状态=" + status);
|
|
item.setStatus(Integer.decode("0x" + status).toString());
|
|
item.setStatus(Integer.decode("0x" + status).toString());
|
|
// 经度27-37
|
|
// 经度27-37
|
|
String longitude = getStringFromHexStr(input.substring(27 * 2, 38 * 2));
|
|
String longitude = getStringFromHexStr(input.substring(27 * 2, 38 * 2));
|
|
@@ -196,50 +196,53 @@ public class UserHandler extends SimpleChannelInboundHandler<String> {
|
|
avgTime = totalTime / list.size();
|
|
avgTime = totalTime / list.size();
|
|
}
|
|
}
|
|
handleModLogic(item, avgTime);
|
|
handleModLogic(item, avgTime);
|
|
- //判断预留字节的
|
|
|
|
- if("02".equals(mobilePart)){
|
|
|
|
- //丢包数据已占满缓存,调用读取命令
|
|
|
|
- sendMsg("#PRINTFALL;");
|
|
|
|
|
|
+ // 判断预留字节的
|
|
|
|
+ if ("02".equals(mobilePart)) {
|
|
|
|
+ // 丢包数据已占满缓存,调用读取命令
|
|
|
|
+ String strHexStr16 = strHexStr16("#PRINTFALL;");
|
|
|
|
+ logger.info("丢包数据已占满缓存下发调用读取命令#PRINTFALL;==>" + strHexStr16);
|
|
|
|
+ sendMsg(strHexStr16);
|
|
return deviceNum;
|
|
return deviceNum;
|
|
}
|
|
}
|
|
- //返回设备编号
|
|
|
|
|
|
+ // 返回设备编号
|
|
return deviceNum;
|
|
return deviceNum;
|
|
}
|
|
}
|
|
-
|
|
|
|
- public void sendPackage(String equipmentNo){
|
|
|
|
- if(equipmentNo.indexOf("FAAF") != -1){
|
|
|
|
|
|
+
|
|
|
|
+ public void sendPackage(String equipmentNo) {
|
|
|
|
+ if (equipmentNo.indexOf("FAAF") != -1) {
|
|
logger.info("非法云模盒编号,不作下发处理");
|
|
logger.info("非法云模盒编号,不作下发处理");
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
MouldDownPacketExample exp = new MouldDownPacketExample();
|
|
MouldDownPacketExample exp = new MouldDownPacketExample();
|
|
exp.createCriteria().andEquipmentNoEqualTo(equipmentNo);
|
|
exp.createCriteria().andEquipmentNoEqualTo(equipmentNo);
|
|
List<MouldDownPacket> list = mouldDownPacketMapper.selectByExample(exp);
|
|
List<MouldDownPacket> list = mouldDownPacketMapper.selectByExample(exp);
|
|
- if(list.size()>0){
|
|
|
|
|
|
+ if (list.size() > 0) {
|
|
MouldDownPacket packet = list.get(0);
|
|
MouldDownPacket packet = list.get(0);
|
|
- if(0==packet.getIsUse()){
|
|
|
|
- logger.info("开始下发数据包==>"+packet.getPacketStr());
|
|
|
|
|
|
+ if (0 == packet.getIsUse()) {
|
|
|
|
+ logger.info("开始下发数据包==>" + packet.getPacketStr());
|
|
sendMsg(packet.getPacketStr());
|
|
sendMsg(packet.getPacketStr());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
- public void timeCalibration(){
|
|
|
|
|
|
+
|
|
|
|
+ public void timeCalibration() {
|
|
Integer count = timeCalibrationRecordMapper.selectCountByToday();
|
|
Integer count = timeCalibrationRecordMapper.selectCountByToday();
|
|
- if(count==0){
|
|
|
|
|
|
+ if (count == 0) {
|
|
Date date = new Date();
|
|
Date date = new Date();
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd,HH:mm:ss");
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd,HH:mm:ss");
|
|
String dateStr = sdf.format(date);
|
|
String dateStr = sdf.format(date);
|
|
- dateStr = "#TIME="+dateStr+";";
|
|
|
|
- //#TIME=18-03-06,15:31:48;
|
|
|
|
- logger.info("校准系统模块时间==>"+dateStr);
|
|
|
|
- sendMsg(dateStr);
|
|
|
|
|
|
+ dateStr = "#TIME=" + dateStr + ";";
|
|
|
|
+ // #TIME=18-03-06,15:31:48;
|
|
|
|
+ logger.info("校准系统模块时间==>" + dateStr);
|
|
|
|
+ // 将字符串转成16进制字符串
|
|
|
|
+ String strHexStr16 = strHexStr16(dateStr);
|
|
|
|
+ logger.info("校准系统模块时间转成16进制的字符串==>" + strHexStr16);
|
|
|
|
+ sendMsg(strHexStr16);
|
|
TimeCalibrationRecord timeCalibrationRecord = new TimeCalibrationRecord();
|
|
TimeCalibrationRecord timeCalibrationRecord = new TimeCalibrationRecord();
|
|
timeCalibrationRecordMapper.insertSelective(timeCalibrationRecord);
|
|
timeCalibrationRecordMapper.insertSelective(timeCalibrationRecord);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
-
|
|
|
|
private void handleModLogic(MouldHistory item, int avgTime) {
|
|
private void handleModLogic(MouldHistory item, int avgTime) {
|
|
TbMouldEquipmentExample meqExp = new TbMouldEquipmentExample();
|
|
TbMouldEquipmentExample meqExp = new TbMouldEquipmentExample();
|
|
meqExp.createCriteria().andEquipmentNoEqualTo(item.getEquipmentNo());
|
|
meqExp.createCriteria().andEquipmentNoEqualTo(item.getEquipmentNo());
|
|
@@ -260,8 +263,8 @@ public class UserHandler extends SimpleChannelInboundHandler<String> {
|
|
if (tbMouldMapper.countByExample(tExp) > 0) {
|
|
if (tbMouldMapper.countByExample(tExp) > 0) {
|
|
TbMould tm = tbMouldMapper.selectByExample(tExp).get(0);
|
|
TbMould tm = tbMouldMapper.selectByExample(tExp).get(0);
|
|
tm.setState(item.getStatus());
|
|
tm.setState(item.getStatus());
|
|
- //云模盒运行次数+模具的历史运行次数
|
|
|
|
- tm.setRunTimes(item.getRunCnt()+tm.getHistoryRunTimes());
|
|
|
|
|
|
+ // 云模盒运行次数+模具的历史运行次数
|
|
|
|
+ tm.setRunTimes(item.getRunCnt() + tm.getHistoryRunTimes());
|
|
// 处理每模平均周期(单位秒)
|
|
// 处理每模平均周期(单位秒)
|
|
BigDecimal bd = new BigDecimal(avgTime * 1.00 / 1000);
|
|
BigDecimal bd = new BigDecimal(avgTime * 1.00 / 1000);
|
|
tm.setOcCycle(bd);
|
|
tm.setOcCycle(bd);
|
|
@@ -328,7 +331,7 @@ public class UserHandler extends SimpleChannelInboundHandler<String> {
|
|
return parseDate;
|
|
return parseDate;
|
|
}
|
|
}
|
|
|
|
|
|
- private String getStringFromHexStr(String hexStr) {
|
|
|
|
|
|
+ private static String getStringFromHexStr(String hexStr) {
|
|
StringBuilder sb = new StringBuilder();
|
|
StringBuilder sb = new StringBuilder();
|
|
for (int i = 0; i < hexStr.length() / 2; i++) {
|
|
for (int i = 0; i < hexStr.length() / 2; i++) {
|
|
String str = "0x" + hexStr.substring(i * 2, i * 2 + 2);
|
|
String str = "0x" + hexStr.substring(i * 2, i * 2 + 2);
|
|
@@ -348,7 +351,6 @@ public class UserHandler extends SimpleChannelInboundHandler<String> {
|
|
byte[] buffer = hexStrToBinaryStr(hexString);
|
|
byte[] buffer = hexStrToBinaryStr(hexString);
|
|
ByteBuf bf = Unpooled.buffer(hexString.length() / 2);
|
|
ByteBuf bf = Unpooled.buffer(hexString.length() / 2);
|
|
bf.writeBytes(buffer);
|
|
bf.writeBytes(buffer);
|
|
-
|
|
|
|
ctx.writeAndFlush(bf);
|
|
ctx.writeAndFlush(bf);
|
|
// ctx.close();
|
|
// ctx.close();
|
|
}
|
|
}
|
|
@@ -442,7 +444,39 @@ public class UserHandler extends SimpleChannelInboundHandler<String> {
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 普通字符串转16进制字符串
|
|
|
|
+ *
|
|
|
|
+ * @param str
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+
|
|
|
|
+ public static String strHexStr16(String str) {
|
|
|
|
+ char[] chars = "0123456789ABCDEF".toCharArray();
|
|
|
|
+ StringBuilder sb = new StringBuilder("");
|
|
|
|
+ byte[] bs = str.getBytes();
|
|
|
|
+ int bit;
|
|
|
|
+ for (int i = 0; i < bs.length; i++) {
|
|
|
|
+ bit = (bs[i] & 0x0f0) >> 4;
|
|
|
|
+ sb.append(chars[bit]);
|
|
|
|
+ bit = bs[i] & 0x0f;
|
|
|
|
+ sb.append(chars[bit]);
|
|
|
|
+ // sb.append(' ');
|
|
|
|
+ }
|
|
|
|
+ return sb.toString().trim();
|
|
|
|
+ }
|
|
|
|
+
|
|
public static void main(String[] args) {
|
|
public static void main(String[] args) {
|
|
|
|
+ // Date date = new Date();
|
|
|
|
+ // SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd,HH:mm:ss");
|
|
|
|
+ // String dateStr = sdf.format(date);
|
|
|
|
+ // dateStr = "#TIME="+dateStr+";";
|
|
|
|
+ // System.out.println(dateStr);
|
|
|
|
+ // //#TIME=18-03-06,15:31:48;
|
|
|
|
+ // logger.info("校准系统模块时间==>"+dateStr);
|
|
|
|
+ // String reverseParseHex = strHexStr16(dateStr);
|
|
|
|
+ // System.out.println("reverseParseHex-----"+reverseParseHex);
|
|
|
|
+
|
|
// String str = "1F51";
|
|
// String str = "1F51";
|
|
String input = "FAAF530000000000000000000000003137333030303239343310010000000000000000000000000000000000000000001F51E85F00000000000045004A54000100110000001308160F171F1308160F2D188FCA";
|
|
String input = "FAAF530000000000000000000000003137333030303239343310010000000000000000000000000000000000000000001F51E85F00000000000045004A54000100110000001308160F171F1308160F2D188FCA";
|
|
// String temp = "0x"+str;
|
|
// String temp = "0x"+str;
|