VoteStatusChangeRequest.java
4.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
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,值发生变化的时候,代表是新的一轮表决开始
* <p>
* 6 MODE 投票模式
* Bit7=1表示继续表决,表决器重新提交数据,用于系统恢复,表决器可继续输入或使用原先结果;=0 正常表决
* 低7位是表决模式:
* 1-9是政务应用 10-19商务应用和教育 20-29多项和批次 30-39二维表评测 40-50管理类
* <p>
* 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;
}
}