Browse Source

兼容寄存器=01为授权

master
zhizhi wu 5 years ago
parent
commit
eee5c0f915
  1. 32
      ccmq/src/main/java/com/ccsens/ccmq/lowlevel/client/netty/tcphexserver/ModbusConverter.java
  2. 6
      ccmq/src/main/java/com/ccsens/ccmq/lowlevel/message/client/AuthMessage.java
  3. 66
      ccmq/src/main/java/com/ccsens/ccmq/lowlevel/message/common/MessageConstant.java
  4. 6
      ccmq/src/main/java/wiki/tall/ccmq/common/TallMessageApplication.java

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

@ -44,6 +44,13 @@ public class ModbusConverter {
break;
}
default:{
// TODO 兼容智慧平车旧版本的授权操作,智慧平车修改后,即可删除此if语句
MessageConstant.Register type = MessageConstant.Register.valueOf(data[0], data[1] );
if (type == MessageConstant.Register.Auth) {
message = toOldAuthMessage(register,ccModBusEntity.getValue());
return message;
}
// 读写操作
message = new InMessage();
message.setData(JacksonUtil.beanToJson(new ModBusMessage(ccModBusEntity.getAddr(), register,oper,ccModBusEntity.getModbusData())));
@ -115,6 +122,31 @@ public class ModbusConverter {
return inMessage;
}
/**
* OriginaData ==> 0x00 0x00 0x00 0x64
* 授权
* @param register 业务类型
* @param values 授权数据 主版本 次版本 授权ID
* @return
*/
private static InMessage toOldAuthMessage(short register, byte[] values) throws JsonProcessingException {
if (values == null || values.length < 1) {
return null;
}
long userId = 0;
for(int i=0;i<values.length;i++){
userId <<= 8;
userId |= values[i] & 0xFF;
}
AuthMessage message = new AuthMessage(userId);
InMessage inMessage = new InMessage();
inMessage.setData(JacksonUtil.beanToJson(message));
inMessage.setToDomain(MessageConstant.DomainType.Server);
return inMessage;
}
public static CCModBusEntity convertCommonProtocolToCCModbus(OutMessage outMessage) throws IOException {
CCModBusEntity ccModBusEntity = null;

6
ccmq/src/main/java/com/ccsens/ccmq/lowlevel/message/client/AuthMessage.java

@ -47,4 +47,10 @@ public class AuthMessage extends ServerMessage {
data.setMajor(major);
data.setMinor(minor);
}
public AuthMessage(Long authId){
this();
data = new Data();
data.setAuthId(authId);
}
}

66
ccmq/src/main/java/com/ccsens/ccmq/lowlevel/message/common/MessageConstant.java

@ -18,39 +18,39 @@ public class MessageConstant {
}
// /**
// * 寄存器地址
// */
// public enum Register{
// /**授权*/
// Auth((byte) 0x00, (byte) 0x01),
// /**心跳*/
// Ping((byte) 0x00, (byte) 0x02),
// ;
//
// public byte first;
// public byte second;
//
// Register(byte first, byte second){
// this.first = first;
// this.second = second;
//
// }
//
// public long getAddr(){
// long addr = ((long)first << 8 | second) & 0xFFFF;
// return addr;
// }
//
// public static Register valueOf(byte first, byte second) {
// for(Register register : Register.values()){
// if (register.first == first && register.second == second) {
// return register;
// }
// }
// return null;
// }
// }
/**
* 寄存器地址
*/
public enum Register{
/**授权*/
Auth((byte) 0x00, (byte) 0x01),
/**心跳*/
Ping((byte) 0x00, (byte) 0x02),
;
public byte first;
public byte second;
Register(byte first, byte second){
this.first = first;
this.second = second;
}
public long getAddr(){
long addr = ((long)first << 8 | second) & 0xFFFF;
return addr;
}
public static Register valueOf(byte first, byte second) {
for(Register register : Register.values()){
if (register.first == first && register.second == second) {
return register;
}
}
return null;
}
}
public enum ClientMessageType{
//客户端心跳

6
ccmq/src/main/java/wiki/tall/ccmq/common/TallMessageApplication.java

@ -58,8 +58,8 @@ public class TallMessageApplication implements CommandLineRunner {
nettyWsServer.start();
nettyMBServer.start();
nettyTextServer.start();
// for(int i=0;i<1;i++) {
// messageHandler.loopSendMessage();
// }
for(int i=0;i<1;i++) {
messageHandler.loopSendMessage();
}
}
}

Loading…
Cancel
Save