コード例 #1
0
        /// <summary>
        /// 判断升级文件的合法性
        /// </summary>
        /// <param name="buffer"></param>
        /// <returns></returns>
        public static bool JudgeLegitimacyOfUpgradeFile(byte[] buffer)
        {
            bool result = false;

            if (buffer != null && buffer.Length > 0)
            {
                //add by masu 2016年3月2日15:33:10 判断下发固件升级文件是否正确
                //获取升级文件中魔术数字
                int magicWord = ConvertUtility.ConvertToInt32(new byte[] { buffer[3], buffer[2], buffer[1], buffer[0] }, 0);
                //获取升级的版本号
                UpdateVer.u8Main  = buffer[4];
                UpdateVer.u8Sub   = buffer[5];
                UpdateVer.u8Rev   = buffer[6];
                UpdateVer.u8Build = buffer[7];
                //获取升级文件中包数大小
                UpdateTotalNum = ConvertUtility.ConvertToInt16(new byte[] { buffer[13], buffer[12] }, 0);

                //获取固件大小
                int fwSize = ConvertUtility.ConvertToInt32(new byte[] { buffer[11], buffer[10], buffer[9], buffer[8] }, 0);
                //获取升级文件中单包数据大小
                int singlePacketSize = Convert.ToInt32(buffer[14]);
                //获取总包个数
                int dataTotalCount = (buffer.Length - 19) / singlePacketSize;
                //获取真实总包数目的余数
                int dataTotalCountRemainder = (buffer.Length - 19) % singlePacketSize;
                if (dataTotalCountRemainder > 0)
                {
                    dataTotalCount += 1;
                }
                if (dataTotalCount == UpdateTotalNum && (buffer.Length - 19) == fwSize)
                {
                    result = true;
                }
                else
                {
                    result = false;
                }
            }
            return(result);
        }