Beispiel #1
0
        /// <summary>
        /// Функция сбора пакета
        /// </summary>
        /// <param name="lowCommand">Низкоуровневая команда</param>
        /// <param name="data">Данные, усекается до 65529</param>
        /// <returns></returns>
        static byte[] AssemblyRawPack(LowCommands lowCommand, params byte[] data)
        {
            int length = 0;

            byte[] pack = null;

            if (data != null)
            {
                int dataLength = 0;
                dataLength = data.Length > 65530 ? 65530 : data.Length;
                length     = 2 + 1 + 1 + dataLength + 1;
                pack       = new byte[length];
                System.Buffer.BlockCopy(data, 0, pack, 4, dataLength);
                pack[pack.Length - 1] = Crc8.ComputeChecksum(4, dataLength, pack);
            }
            else
            {
                length = 2 + 1 + 1;
                pack   = new byte[length];
            }

            System.Buffer.BlockCopy(BitConverter.GetBytes(length), 0, pack, 0, 2);
            pack[2] = (byte)lowCommand;
            pack[3] = Crc8.ComputeChecksum(0, 3, pack);
            return(pack);
        }
Beispiel #2
0
 /// <summary>
 /// Функция сбора пакета
 /// </summary>
 /// <param name="lowCommand">Низкоуровневая команда</param>
 /// <returns></returns>
 static byte[] AssemblyRawPack(LowCommands lowCommand)
 {
     return(AssemblyRawPack(lowCommand, null));
 }