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); } }