Exemple #1
0
        public byte[] PackData(MsgId msgId, string terminalId, byte[] data)
        {
            int pos      = 0;
            int data_len = data.Length;

            byte[] arr = new byte[15 + data_len];

            arr[0] = 0x7E;
            arr[1] = Convert.ToByte((((int)msgId) & 0xFF00) >> 8); //消息ID,低字节
            arr[2] = Convert.ToByte(((int)msgId) & 0x00FF);        //消息ID高字节
            // 消息体长度
            arr[3] = Convert.ToByte((data_len & 0xFF00) >> 8);
            arr[4] = Convert.ToByte(data_len & 0x00FF);
            //终端号码
            terminalId.PadLeft(12, '0');
            arr[5]  = Convert.ToByte(terminalId.Substring(0 * 2, 2), 16);
            arr[6]  = Convert.ToByte(terminalId.Substring(1 * 2, 2), 16);
            arr[7]  = Convert.ToByte(terminalId.Substring(2 * 2, 2), 16);
            arr[8]  = Convert.ToByte(terminalId.Substring(3 * 2, 2), 16);
            arr[9]  = Convert.ToByte(terminalId.Substring(4 * 2, 2), 16);
            arr[10] = Convert.ToByte(terminalId.Substring(5 * 2, 2), 16);
            // 消息流水号
            Int16 serialNo = ProtocolUtil.GetSerialNo();

            arr[11] = Convert.ToByte((serialNo & 0xFF00) >> 8); //流水号,低字节
            arr[12] = Convert.ToByte(serialNo & 0x00FF);        //流水号高字节
            //数据体填充
            Array.Copy(data, 0, arr, 13, data_len);
            pos += 12 + data_len;
            // 校验码
            arr[++pos] = ProtocolUtil.XorByByte(arr, 1, 12 + data_len);
            //标识位置
            arr[++pos] = 0x7E;



            return(ProtocolUtil.Transfer(arr));
        }