package com.sunvote.cmd.push; import com.sunvote.cmd.ICmd; /** * Created by Elvis on 2017/8/8. * Email:Eluis@psunsky.com * Description: * 字节 标识符 描述 * 1 REQUEST_CMD 0x72 投票信标变化 * 2 BADDH 基站编号,保证有效数据从第3字节开始,和查询指令相同 * 3,4 NOWT 时标值,2字节,高位在前 * 从投票启动开始的时间,用于表决器同步计时,20ms为单位,最大约21分钟,最大0xFFFF不自动变为0 * 5 DATAPOS 表决序号(结果记录序号) * 1-0xFF,值发生变化的时候,代表是新的一轮表决开始 *
* 6 MODE 投票模式 * Bit7=1表示继续表决,表决器重新提交数据,用于系统恢复,表决器可继续输入或使用原先结果;=0 正常表决 * 低7位是表决模式: * 1-9是政务应用 10-19商务应用和教育 20-29多项和批次 30-39二维表评测 40-50管理类 *
* 7-25 MODES 投票参数,具体和MODE有关,不同模式下参数意义不同 */ public class VoteStatusChangeRequest extends PushBaseCmd { public final static byte REQUEST_CMD = (byte) 0x72 ; public VoteStatusChangeRequest(){ cmd = REQUEST_CMD; } public VoteStatusChangeRequest(VoteStatusChangeResponse response){ parseCmd(response.toBytes()); setCmd(REQUEST_CMD); } public static final int CMD_LENGTH = 25 ; /** * 0x72 投票信标变化 */ private byte cmd = REQUEST_CMD; /** * 基站编号 */ private byte baddh; /** * 时标值,2字节,高位在前 * 从投票启动开始的时间,用于表决器同步计时,20ms为单位,最大约21分钟,最大0xFFFF不自动变为0 */ private byte[] nowt = new byte[2]; /** * 表决序号(结果记录序号) * 1-0xFF,值发生变化的时候,代表是新的一轮表决开始 */ private byte datapos; /** * 投票模式 * Bit7=1表示继续表决,表决器重新提交数据,用于系统恢复,表决器可继续输入或使用原先结果;=0 正常表决 * 低7位是表决模式: * 1-9是政务应用 10-19商务应用和教育 20-29多项和批次 30-39二维表评测 40-50管理类 */ private byte mode; /** * 投票参数,具体和MODE有关,不同模式下参数意义不同 */ private byte[] modes = new byte[19]; public byte getCmd() { return cmd; } public void setCmd(byte cmd) { this.cmd = cmd; } public byte getBaddh() { return baddh; } public void setBaddh(byte baddh) { this.baddh = baddh; } public byte[] getNowt() { return nowt; } public void setNowt(byte[] nowt) { this.nowt = nowt; } public byte getDatapos() { return datapos; } public void setDatapos(byte datapos) { this.datapos = datapos; } public byte getMode() { return mode; } public void setMode(byte mode) { this.mode = mode; } public byte[] getModes() { return modes; } public void setModes(byte[] modes) { this.modes = modes; } @Override public byte[] toBytes() { byte[] result = new byte[modes.length + 6]; result[0] = cmd ; result[1] = baddh; for (int i = 0; i < 2; i++) { result[2 + i] = nowt[i]; } result[4] = datapos ; result[5] = mode ; for (int i = 0; i < 19 || i < modes.length; i++) { result[6+i] = modes[i] ; } /* System.arraycopy(module.cmd,0,result,0,1); System.arraycopy(baddh,0,result,1,2); System.arraycopy(nowt,0,result,2,4); System.arraycopy(datapos,0,result,4,5); System.arraycopy(mode,0,result,5,6); System.arraycopy(modes,0,result,6,25);*/ return result; } @Override public ICmd parseCmd(byte[] source, int start) { if(source != null && source.length >= CMD_LENGTH + start) { cmd = source[start]; baddh = source[start + 1]; for (int i = 0; i < 2; i++) { nowt[i] = source[start + 2 + i]; } datapos = source[start + 4]; mode = source[start + 5]; for (int i = 0; i < 19 || i < source.length - 6; i++) { modes[i] = source[start + 6 + i]; } } return this; } }