package com.szpg.task; import com.szpg.db.dao.impl.PgAcuRdcmdDaoImpl; import com.szpg.db.data.PgAcuRdcmd; import com.szpg.plc.message.AppCommand; import com.szpg.plc.message.command.read.ReadCH4StatusCommand; import com.szpg.plc.protocol.DTProtocolInterface; import com.szpg.plc.protocol.ProtocolFactory; import com.szpg.plc.server.ACUClient; import com.szpg.plc.server.ACUClientUtil; import com.szpg.plc.util.ByteUtil; public class ReadCH4StatusTask implements Runnable { private ACUClient client; private AppCommand appCommand; public ReadCH4StatusTask(ACUClient client, AppCommand command) { this.client = client; this.appCommand = command; } @Override public void run() { DTProtocolInterface finspi = ProtocolFactory.getDefaultDTProtocol(); byte[] content = finspi.messageToBytes(appCommand); // 发送读取甲烷参数内存命令 ACUClientUtil.getInstance().sendACUCommand(client, content); ReadCH4StatusCommand ch4AlmCmd = (ReadCH4StatusCommand) appCommand; // 发送完成之后将命令保存在数据库中 PgAcuRdcmd cmd = new PgAcuRdcmd(); cmd.setId(ch4AlmCmd.getId()); cmd.setTm(ch4AlmCmd.getTime().getTime()); cmd.setCmd_type(ch4AlmCmd.getCommandType()); cmd.setDest(ch4AlmCmd.getDestinationId()); cmd.setMem_area_cd(ByteUtil.binToHexString(new byte[] { ch4AlmCmd.getMemoryArea() })); cmd.setStart_mem_word(ch4AlmCmd.getStartAddress().substring(0, 4)); cmd.setStart_mem_bit(ch4AlmCmd.getStartAddress().substring(4)); cmd.setCount_word(ch4AlmCmd.getCountWord()); cmd.setCount_bit(ch4AlmCmd.getCountBit()); new PgAcuRdcmdDaoImpl().addCmdRecord(cmd); } }