FP300Service.FPURequest.CreateRequest C# (CSharp) Метод

CreateRequest() приватный Метод

private CreateRequest ( String terminalNo, int messageType, Command cmd, byte data, int dataLen ) : byte[]
terminalNo String
messageType int
cmd Command
data byte
dataLen int
Результат byte[]
        private byte[] CreateRequest(String terminalNo, int messageType, Command cmd, byte[] data, int dataLen)
        {
            /*          General Message for Request
            *  XX      Length
            *  ASCII   Terminal Serial
            *  XX      Message Type
            *  BCD     SequenceNum
            *  BCD     Date
            *  BCD     Time
            *          [Detail]
            *  XX      LRC
            */

            Encoding encode         = Encoding.GetEncoding(1254);
            List<byte> reqPacket    = new List<byte>();
            List<byte> msgPacket    = new List<byte>();
            int allLen              = dataLen;

            this.command    = cmd;
            this.data       = data;
            this.sequence   = (MainForm.SequenceNumber++) % MAX_PRCSS_SEC_NUM;

            //SEQUNCE
            reqPacket.AddRange(MessageBuilder.HexToByteArray(GMPCommonTags.TAG_SEQUNCE));
            reqPacket.Add((byte)GMPConstants.LEN_SEQUENCE);
            byte[] arrVal = MessageBuilder.ConvertIntToBCD(this.Sequence, GMPConstants.LEN_SEQUENCE);
            reqPacket.AddRange(arrVal);
            //DATE and TIME
            reqPacket.AddRange(MessageBuilder.GetDateTimeInBytes(DateTime.Now));
            // Fiscal Command
            if (cmd != Command.NULL)
            {
                reqPacket.AddRange(MessageBuilder.HexToByteArray(FPUCommonTags.FPU_FISCAL_COMMAND));
                reqPacket.Add((byte)GMPConstants.LEN_FISCAL_COMMAND);
                reqPacket.Add((byte)cmd);
            }

            if (dataLen > 0)
            {
                reqPacket.AddRange(data);
            }

            // Terminal ID
            msgPacket.AddRange(encode.GetBytes(terminalNo.PadLeft(12, ' ')));
            // Message TAG
            msgPacket.AddRange(MessageBuilder.HexToByteArray(messageType));
            // Message length
            int msgLen = reqPacket.Count;
            msgPacket.AddRange(MessageBuilder.AddLength(msgLen));
            // Message Data
            msgPacket.AddRange(reqPacket);
            // CRC
            short crc = MessageBuilder.CalculateCRC(msgPacket.ToArray(), 0, msgPacket.Count);
            msgPacket.Add((byte)(crc >> 8));
            msgPacket.Add((byte)(crc));

            // All Length
            allLen = msgPacket.Count;
            msgPacket.Insert(0, (byte)(allLen % 256));
            msgPacket.Insert(0, (byte)(allLen / 256));

            return msgPacket.ToArray();
        }