fac86401
孙向锦
初始化C5 Vote
|
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
|
package com.sunvote.cmd.push;
import com.sunvote.cmd.ICmd;
import java.io.ByteArrayOutputStream;
import java.util.Arrays;
/**
* Created by Elvis on 2017/8/23.
* Email:Eluis@psunsky.com
* 版权所有:长沙中天电子设计开发有限公司
* Description:平板模块键盘投票功能模块
* ReadAndWriteVoterAllocation
*
* 用于读取或修改表决器的基本参数,例如表决器编号。
发送给表决器的指令结构如下:
字节 标识符 描述
1 KEYCMD 0x30 表决器下载单包类指令
2-3 KEYID 表决器编号,或0x0000广播
4 KCMD 1 读表决器配置
2 写表决器配置
5-6 NEWID 写表决器配置操作时候有效
新表决器编号,2字节,高位在前
7 OFFTIME 写表决器配置操作时候有效
表决器自动关机时间,以分钟为单位,0xFF不自动关机
某些型号不支持修改
8 LOCKBASE 固定配对模式还是自由配对模式
目前暂应用在教育系列
1 固定配对 2自由配对(可搜寻基站)
9 FIXCHAN 锁频模式
0和 1自动锁频 2固定锁频
10-24 参数无意义
表决器回应表决器配置信息:
字节 标识符 描述
1 KEYCMD 0xB0 表决器遥控指令应答
2-3 KEYID 表决器编号,2字节,高位在前
4 KCMD 1 表决器配置信息
5-6 KEYID 表决器编号
7 OFFTIME 表决器自动关机时间
8 LOCKBASE 固定配对模式还是自由配对模式
9-24 参数无意义
*/
public class ReadAndWriteVoterAllocation extends DownloadSingletonPkg {
private byte[] newid = new byte[2];
private byte offtime;
private byte lockbase;
private byte fixchan;
private byte[] datas = new byte[15];
@Override
public byte[] toBytes() {
try {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
outputStream.write(getKeycmd());
outputStream.write(getKeyid());
outputStream.write(getKcmd());
outputStream.write(getNewid());
outputStream.write(getOfftime());
outputStream.write(getLockbase());
outputStream.write(getFixchan());
outputStream.write(getDatas());
return outputStream.toByteArray();
}catch (Exception ex){
return new byte[0];
}
}
@Override
public ICmd parseCmd(byte[] source, int start) {
if(source != null && source.length >= start + CMD_LENGTH){
setKeycmd(source[start+0]);
setKeyid(Arrays.copyOfRange(source,start+1,start+3));
setKcmd(source[start+3]);
setNewid(Arrays.copyOfRange(source,start+4,start+6));
setOfftime(source[start+6]);
setLockbase(source[start+7]);
setFixchan(source[8]);
setDatas(Arrays.copyOfRange(source,start+9,start+24));
}
return this;
}
public byte[] getNewid() {
return newid;
}
public void setNewid(byte[] newid) {
this.newid = newid;
}
public byte getOfftime() {
return offtime;
}
public void setOfftime(byte offtime) {
this.offtime = offtime;
}
public byte getLockbase() {
return lockbase;
}
public void setLockbase(byte lockbase) {
this.lockbase = lockbase;
}
public byte getFixchan() {
return fixchan;
}
public void setFixchan(byte fixchan) {
this.fixchan = fixchan;
}
public void setDatas(byte[] datas) {
this.datas = datas;
}
public byte[] getDatas() {
return datas;
}
}
|