Blame view

C5/xpadprotocal/src/main/java/com/sunvote/cmd/basestation/SettingVoteRequest.java 3.73 KB
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
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
  package com.sunvote.cmd.basestation;
  
  import com.sunvote.cmd.BaseCmd;
  import com.sunvote.cmd.ICmd;
  
  import java.io.ByteArrayOutputStream;
  import java.util.Arrays;
  
  /**
   * Created by Elvis on 2017/8/30.
   * Email:Eluis@psunsky.com
   * 版权所有:长沙中天电子设计开发有限公司
   * Description:平板模块键盘投票功能模块
   *
   * 设置投票模式,就控制了基站的投票模式,包括投票类型和参数、投票的启动和停止。
   字节	标识符	描述
   1	BASECMD	0x60 基站类指令
   2	BASEID	指定的基站编号
   3	CMDTYPE	基站命令类型
   3 读取当前投票模式,后继的参数无意义
   4 设置当前投票模式
   4	DATAPOS	表决序号(结果记录序号)
   5	MODE	投票模式
   6-29	MODES	投票参数,具体和MODE有关,不同模式下参数意义不同
  
   从第4字节起,参数的含义和表决器投票模式信标中的参数含义是一模一样的,决定了表决器的投票状态,具体参数的含义和格式,参见《表决系统通讯协议-政务商务-表决器部分 V4.1》中的2.2节中的多种投票模式参数。
  
   基站应答:
   字节	标识符	描述
   1	BASECMD	0xE0 基站类指令应答
   2	BASEID	应答的基站的编号
   3	CMDTYPE	应答类型
   3 当前投票模式
   4	DATAPOS	当前表决序号
   5	MODE	当前投票模式
   6-29	MODES	当前投票参数,具体和MODE有关,不同模式下参数意义不同
  
   *
   *
   */
  public class SettingVoteRequest extends BaseCmd {
  
      public static final byte CMD_TYPE = 0x03 ;
      /**
       * @return
       */
  
      public static final byte CMD = 0x60 ;
  
      /**
       * BASECMD
       */
      private byte basecmd = CMD;
      /**
       * 应答的基站的编号
       */
      private byte baseid ;
      /**
       * 应答类型 1 当前信标内容
       */
      private byte cmdtype = CMD_TYPE;
  
      /**
       *表决序号(结果记录序号)
       */
      private byte datapos;
  
      private byte mode;
  
      /**
       * 投票参数,具体和MODE有关,不同模式下参数意义不同
       */
      private byte[] modes = new byte[24];//
  
  
      @Override
      public byte[] toBytes() {
          try {
              ByteArrayOutputStream stream = new ByteArrayOutputStream();
              stream.write(getBasecmd());
              stream.write(getBaseid());
              stream.write(getCmdtype());
              stream.write(getDatapos());
              stream.write(getMode());
              stream.write(getModes());
              return stream.toByteArray();
          }catch (Exception ex){
              ex.printStackTrace();
          }
          return new byte[0];
      }
  
      @Override
      public ICmd parseCmd(byte[] source, int start) {
          setBasecmd(source[start]);
          setBaseid(source[start+1]);
          setCmdtype(source[start+2]);
          setDatapos(source[start+3]);
          setMode(source[start+4]);
          if(source.length > start + 5){
              setModes(Arrays.copyOfRange(source,start+5,source.length));
          }
          return this;
      }
  
      public byte getBasecmd() {
          return basecmd;
      }
  
      public void setBasecmd(byte basecmd) {
          this.basecmd = basecmd;
      }
  
      public byte getBaseid() {
          return baseid;
      }
  
      public void setBaseid(byte baseid) {
          this.baseid = baseid;
      }
  
      public byte getCmdtype() {
          return cmdtype;
      }
  
      public void setCmdtype(byte cmdtype) {
          this.cmdtype = cmdtype;
      }
  
      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;
      }
  }