package com.fzzy.protocol.zldz.cmd;
|
|
import com.fzzy.api.Constant;
|
import com.fzzy.api.data.ApiCommonDevice;
|
import com.fzzy.api.utils.BytesUtil;
|
import com.fzzy.gateway.entity.GatewayDevice;
|
import com.fzzy.io.request.BaseRequest;
|
import com.fzzy.protocol.zldz.data.Message;
|
import com.fzzy.protocol.zldz.data.MessageBody;
|
import com.fzzy.protocol.zldz.server.ZldzServerUtil;
|
|
|
/**
|
* @author Andy
|
*/
|
public class CommandBuilder1116_1 extends CommandBuilder {
|
|
|
private final static CommandBuilder1116_1 instance = new CommandBuilder1116_1();
|
|
private CommandBuilder1116_1() {
|
|
}
|
|
public static CommandBuilder1116_1 getInstance() {
|
return instance;
|
}
|
|
public Message buildMessage(BaseRequest request, GatewayDevice device) {
|
|
Message message = new Message();
|
|
message.setBegin(ZldzServerUtil.MSG_START);
|
|
// 调整Message头部信息
|
buildHeader(message, request, device);
|
|
//包头校验
|
buildCrc8(message);
|
|
// 创建消息体
|
buildBody(message, request, device);
|
|
// 添加校验
|
buildCrc16(message);
|
|
message.setEnd(ZldzServerUtil.MSG_END);
|
|
// 生成整体命令信息和BYte信息
|
build(message);
|
|
return message;
|
}
|
|
public void buildHeader(Message message, BaseRequest request, GatewayDevice device) {
|
|
String hexCompanyId = BytesUtil.getTargetId(request.getCompanyId(), true);
|
hexCompanyId = BytesUtil.tran_LH(hexCompanyId);
|
|
message.setSourceId(hexCompanyId);
|
message.setSendId(hexCompanyId);
|
|
//发送的必须是原来的组织编码
|
String orgId = BytesUtil.tran_LH(BytesUtil.getTargetId(device.getOrgId(), true));
|
message.setCompanyId(orgId);
|
|
message.setTargetId(BytesUtil.tran_LH(BytesUtil.getTargetId(request.getSerId(), true)));
|
message.setMessageType(BytesUtil.tran_LH(ZldzServerUtil.MSG_TYPE_1116));
|
}
|
|
|
public void buildBody(Message message, BaseRequest request, GatewayDevice device) {
|
MessageBody body = new MessageBody();
|
StringBuffer content = new StringBuffer();
|
content.append("01");//写标记
|
content.append(message.getTargetId());
|
content.append(BytesUtil.getTargetId("01", false));//网络ID
|
content.append("0A");//默认10 信道
|
content.append(BytesUtil.getTargetId("03", false));//速率
|
|
ApiCommonDevice commonDevice = Constant.getCommonDeviceCacheByIp(device.getIp());
|
|
String cable = commonDevice.getCable();
|
if (null == cable) {
|
cable = device.getCableRule();
|
}
|
String[] attr = cable.split("-");
|
int z = Integer.valueOf(attr[0]);
|
int y = Integer.valueOf(attr[1]);
|
int x = Integer.valueOf(attr[2]);
|
|
content.append(BytesUtil.toHexString(z));
|
content.append(BytesUtil.toHexString(y));
|
content.append(BytesUtil.toHexString(x));
|
|
content.append(BytesUtil.getTargetId(device.getCableFormat(), false));
|
content.append(BytesUtil.getTargetId(device.getCableType(), false));
|
|
String powerModel = "02";
|
content.append(BytesUtil.getTargetId(powerModel, false));
|
|
content.append(message.getSourceId());
|
|
body.setContent(content.toString());
|
body.setLength(14);
|
message.setBody(body);
|
}
|
|
}
|