Browse Source

设置参数

master
zy_Java 4 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 {
log.info("封装数据");
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())) {
ccModBusEntity = fromModBusMessage(JacksonUtil.jsonToBean(outMessage.getData(), ModBusAckMessage.class));
log.info("普通的读写操作,返回结果:{}", ccModBusEntity);
// ccModBusEntity = fromModBusMessage(JacksonUtil.jsonToBean(outMessage.getData(), ModBusAckMessage.class));
// log.info("普通的读写操作,返回结果:{}", ccModBusEntity);
ccModBusEntity = getData(outMessage);
return ccModBusEntity;
}
@ -187,11 +197,30 @@ public class ModbusConverter {
break;
}
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;
}

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 {
log.info("modBus返回数据:{}", message);
if (message == null || CollectionUtil.isEmpty(message.getMessageSet())) {
log.info("message为空,返回");
return;
}
log.info("不为空");
for(OutMessage outMessage : message.getMessageSet()){
log.info("循环对象:{}", outMessage);
CCModBusEntity ccModBusEntity = ModbusConverter.convertCommonProtocolToCCModbus(outMessage);
log.info("modBus数据转化:{}", ccModBusEntity);
if(ccModBusEntity != null){
log.info("modbusData不等于空");
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);
}
}

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

@ -131,10 +131,10 @@ public class MessageHandler {
while(true){
try {
logger.info("while true");
// logger.info("while true");
//从redis中或取第一个待处理用户
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)){
Console.log("RedisUtil.sPop: {}",o);
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;
}
public CCModBusEntity(){
}
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];
int index = 0;
@ -128,8 +133,10 @@ public class CCModBusEntity {
byte crc[] = new byte[SIZE_CRC];
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[1];
for(int i=0;i<TAILER.length;i++){
modbusData[index++] = TAILER[i];
}

Loading…
Cancel
Save