/// <summary>
        /// 保存波形,波形内容以byte数组传递,即2byte为一位16进制
        /// 除以转换系数,转换为float型,保存时以,分隔
        /// </summary>
        /// <param name="path"></param>
        /// <param name="waveData"></param>
        /// <param name="filename"></param>
        /// <param name="samplingDate"></param>
        /// <param name="transformCofe"></param>
        public static void SaveWave(string path, byte[] waveData, string filename, DateTime samplingDate, float transformCofe)
        {
            try
            {
                if (waveData == null || waveData.Length == 0)
                {
                    //波形内容为空时,不保存
                    string message = string.Format("波形文件名称为:{0},采集时间为:{1}的波形数据的波形内容为空,无法保存", filename, samplingDate.ToString());
                    LogHelper.WriteLog(new Exception(message));
                    return;
                }

                if (filename.Length == 0)
                {
                    //波形文件名称为空时,不保存
                    string message = string.Format("波形文件名称为:{0},采集时间为:{1}的波形数据的波形文件名称为空,无法保存", filename, samplingDate.ToString());
                    LogHelper.WriteLog(new Exception(message));
                    return;
                }

                if (transformCofe == 0)
                {
                    //转换系数为0时,不保存
                    string message = string.Format("波形文件名称为:{0},采集时间为:{1}的波形数据的转换系数为0,无法保存", filename, samplingDate.ToString());
                    LogHelper.WriteLog(new Exception(message));
                    return;
                }

                StringBuilder sb = new StringBuilder();

                for (int i = 0; i < waveData.Length; i += 2)
                {
                    if (i + 1 == waveData.Length)
                    {
                        break;
                    }
                    float value = (float)(ConvertUtility.ConvertToInt16(waveData, i)) / transformCofe;
                    if (i == waveData.Length - 2)
                    {
                        sb.Append(value.ToString("0.0000"));
                    }
                    else
                    {
                        sb.Append(value.ToString("0.0000") + SeparatorString);
                    }
                }
                //保存
                Save(path, sb.ToString(), filename, samplingDate);
            }
            catch (Exception ex)
            {
                LogHelper.WriteLog(ex);
            }
        }
Пример #2
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);
        }