Browse Source

设置参数

master
zy_Java 5 years ago
parent
commit
4568247119
  1. 37
      ccmq/src/main/java/com/ccsens/ccmq/lowlevel/client/netty/tcphexserver/ModbusConverter.java
  2. 9
      ccmq/src/main/java/com/ccsens/ccmq/lowlevel/client/netty/tcphexserver/ModbusEncoder.java
  3. 4
      ccmq/src/main/java/com/ccsens/ccmq/lowlevel/message/MessageHandler.java
  4. 9
      ccmq/src/main/java/wiki/tall/ccmq/common/bean/dto/ccmodbus/CCModBusEntity.java

37
ccmq/src/main/java/com/ccsens/ccmq/lowlevel/client/netty/tcphexserver/ModbusConverter.java

@ -155,11 +155,21 @@ public class ModbusConverter {
public static CCModBusEntity convertCommonProtocolToCCModbus(OutMessage outMessage) throws IOException { public static CCModBusEntity convertCommonProtocolToCCModbus(OutMessage outMessage) throws IOException {
log.info("封装数据");
CCModBusEntity ccModBusEntity = null; CCModBusEntity ccModBusEntity = null;
JsonNode typeNode = JacksonUtil.getJsonProperty(outMessage.getData(), "type"); JsonNode typeNode = null;
try {
typeNode = JacksonUtil.getJsonProperty(outMessage.getData(), "type");
} catch (Exception e) {
ccModBusEntity = getData(outMessage);
log.info("");
return ccModBusEntity;
}
if (typeNode == null || StrUtil.isEmpty(typeNode.textValue())) { if (typeNode == null || StrUtil.isEmpty(typeNode.textValue())) {
ccModBusEntity = fromModBusMessage(JacksonUtil.jsonToBean(outMessage.getData(), ModBusAckMessage.class)); // ccModBusEntity = fromModBusMessage(JacksonUtil.jsonToBean(outMessage.getData(), ModBusAckMessage.class));
log.info("普通的读写操作,返回结果:{}", ccModBusEntity); // log.info("普通的读写操作,返回结果:{}", ccModBusEntity);
ccModBusEntity = getData(outMessage);
return ccModBusEntity; return ccModBusEntity;
} }
@ -187,11 +197,30 @@ public class ModbusConverter {
break; break;
} }
default: default:
ccModBusEntity = getData(outMessage);
} }
log.info("封装完成");
return ccModBusEntity;
}
private static CCModBusEntity getData(OutMessage outMessage) {
CCModBusEntity ccModBusEntity;
byte[] modBusData = null;
ccModBusEntity = new CCModBusEntity();
if (outMessage.getData() != null && outMessage.getData().length() > 0) {
String[] split = outMessage.getData().split(",");
modBusData = new byte[split.length];
for (int i = 0; i < split.length; i++) {
byte hexNum = (byte) (Byte.parseByte(split[i].replace("[","").replace("]","").trim()) & 0Xff);
modBusData[i] = hexNum;
}
}
ccModBusEntity.setModbusData(modBusData);
log.info("封装完成:{}", modBusData);
return ccModBusEntity; return ccModBusEntity;
} }

9
ccmq/src/main/java/com/ccsens/ccmq/lowlevel/client/netty/tcphexserver/ModbusEncoder.java

@ -15,14 +15,21 @@ public class ModbusEncoder extends MessageToByteEncoder<OutMessageSet> {
protected void encode(ChannelHandlerContext channelHandlerContext, OutMessageSet message, ByteBuf out) throws Exception { protected void encode(ChannelHandlerContext channelHandlerContext, OutMessageSet message, ByteBuf out) throws Exception {
log.info("modBus返回数据:{}", message); log.info("modBus返回数据:{}", message);
if (message == null || CollectionUtil.isEmpty(message.getMessageSet())) { if (message == null || CollectionUtil.isEmpty(message.getMessageSet())) {
log.info("message为空,返回");
return; return;
} }
log.info("不为空");
for(OutMessage outMessage : message.getMessageSet()){ for(OutMessage outMessage : message.getMessageSet()){
log.info("循环对象:{}", outMessage);
CCModBusEntity ccModBusEntity = ModbusConverter.convertCommonProtocolToCCModbus(outMessage); CCModBusEntity ccModBusEntity = ModbusConverter.convertCommonProtocolToCCModbus(outMessage);
log.info("modBus数据转化:{}", ccModBusEntity); log.info("modBus数据转化:{}", ccModBusEntity);
if(ccModBusEntity != null){ if(ccModBusEntity != null){
log.info("modbusData不等于空");
byte[] modbusData = ccModBusEntity.getModbusData(); byte[] modbusData = ccModBusEntity.getModbusData();
log.info("长度:{}", modbusData.length);
for (int i = 0; i < modbusData.length; i++) {
log.info("转化后的数据:{}", Integer.toHexString(modbusData[i] & 0xFF));
}
out.writeBytes(modbusData); out.writeBytes(modbusData);
} }
} }

4
ccmq/src/main/java/com/ccsens/ccmq/lowlevel/message/MessageHandler.java

@ -131,10 +131,10 @@ public class MessageHandler {
while(true){ while(true){
try { try {
logger.info("while true"); // logger.info("while true");
//从redis中或取第一个待处理用户 //从redis中或取第一个待处理用户
Object o = RedisUtil.sPop(RedisKeyManager.getPendingClientSetKey()); Object o = RedisUtil.sPop(RedisKeyManager.getPendingClientSetKey());
logger.info("从redis中或取第一个待处理用户:{},{}", RedisKeyManager.getPendingClientSetKey(), o); // logger.info("从redis中或取第一个待处理用户:{},{}", RedisKeyManager.getPendingClientSetKey(), o);
if(o != null && StrUtil.isNotEmpty(typeAndUserId = ackId = (String)o)){ if(o != null && StrUtil.isNotEmpty(typeAndUserId = ackId = (String)o)){
Console.log("RedisUtil.sPop: {}",o); Console.log("RedisUtil.sPop: {}",o);
String []stringArray = CcMessageUtil.splitTypeAndUserId(typeAndUserId); String []stringArray = CcMessageUtil.splitTypeAndUserId(typeAndUserId);

9
ccmq/src/main/java/wiki/tall/ccmq/common/bean/dto/ccmodbus/CCModBusEntity.java

@ -115,6 +115,11 @@ public class CCModBusEntity {
return number; return number;
} }
public CCModBusEntity(){
}
public CCModBusEntity(byte addr,byte oper,byte[] originData){ public CCModBusEntity(byte addr,byte oper,byte[] originData){
modbusData = new byte[SIZE_FILTER + SIZE_LEN + SIZE_ADDR + SIZE_OPER + originData.length + SIZE_CRC + TAILER.length]; modbusData = new byte[SIZE_FILTER + SIZE_LEN + SIZE_ADDR + SIZE_OPER + originData.length + SIZE_CRC + TAILER.length];
int index = 0; int index = 0;
@ -128,8 +133,10 @@ public class CCModBusEntity {
byte crc[] = new byte[SIZE_CRC]; byte crc[] = new byte[SIZE_CRC];
CRCUtil.crc16(crc,modbusData,SIZE_FILTER+SIZE_LEN,originData.length + SIZE_ADDR + SIZE_OPER); CRCUtil.crc16(crc,modbusData,SIZE_FILTER+SIZE_LEN,originData.length + SIZE_ADDR + SIZE_OPER);
modbusData[index++] = crc[1]; // modbusData[index++] = crc[1];
// modbusData[index++] = crc[0];
modbusData[index++] = crc[0]; modbusData[index++] = crc[0];
modbusData[index++] = crc[1];
for(int i=0;i<TAILER.length;i++){ for(int i=0;i<TAILER.length;i++){
modbusData[index++] = TAILER[i]; modbusData[index++] = TAILER[i];
} }

Loading…
Cancel
Save