Пример #1
0
 /// <summary>
 /// 添加波形片段
 /// </summary>
 /// <param name="rwf">波形信息</param>
 /// <returns>添加结果 true-添加成功, fasle-添加失败</returns>
 public bool AddInformation(RecordWaveform rwf)
 {
     //判断通道号
     if (Channel == rwf.Channel)
     {
         if (TimeStamp == null)
         {
             //初始化时间戳
             TimeStamp = new CP56Time2a(rwf.TimeStamp.GetDataArray());
         }
         else
         {
             //判断时间戳是否相同,不同则返回
             if (!TimeStamp.IsEqual(rwf.TimeStamp))
             {
                 return(false);
             }
         }
         if (RecordMask[rwf.WaveformNum - 1][rwf.GroupNum - 1] == false)
         {
             RecordMask[rwf.WaveformNum - 1][rwf.GroupNum - 1] = true;
             //计算数据存储索引
             int index = (rwf.WaveformNum - 1) * WavePointNum + (rwf.GroupNum - 1) * 64;
             Array.Copy(rwf.RawAdcArray, 0, WaveDataAdc, index, rwf.RawAdcArray.Length);
             return(true);
         }
         else
         {
             throw new Exception("重复添加波形--RecordDataItem-AddInformation");
         }
     }
     return(false);
 }
Пример #2
0
        /// <summary>
        /// 将波形记录信息添加到指定位置
        /// </summary>
        /// <param name="rwf">一帧数据波形信息</param>
        /// <returns>是否完成添加 true-完成 false-未完成</returns>
        public bool AddRecordWaveform(RecordWaveform rwf)
        {
            var state = RecordList[rwf.Channel].AddInformation(rwf);

            if (++AddCount >= 8 * 12 * 2)
            {
                IsFinished = true;
                foreach (var m in  RecordList)
                {
                    if (m.IsFinished == false)
                    {
                        IsFinished = false;
                        break;
                    }
                }
                if (IsFinished)
                {
                    if (WaveformArrived != null)
                    {
                        WaveformArrived(this, new WaveformArrivedEventArgs(RecordList));
                    }
                }
            }

            return(state);
        }
Пример #3
0
        /// <summary>
        /// 获取校准信息
        /// </summary>
        /// <param name="dataArray">数据数组</param>
        void GetCalbrationMessage(byte[] dataArray)
        {
            int len   = dataArray[2];
            int count = len / 4;
            var array = new UInt32[count];

            for (int i = 0; i < count; i++) //大端模式
            {
                array[i] = ((UInt32)dataArray[4 * i + 7] << 24) + ((UInt32)dataArray[4 * i + 8] << 16) +
                           ((UInt32)dataArray[4 * i + 9] << 8) + (UInt32)dataArray[4 * i + 10];
            }
            CalibrationAction property;

            switch (dataArray[5])
            {
            case 0x40:
            {
                property = CalibrationAction.FactorCall;
                CalibrationMessageArrived(this, new OldCalibrationEventArgs(dataArray, array, property));
                break;
            }

            case 0x41:
            {
                property = CalibrationAction.FactorDownload;
                CalibrationMessageArrived(this, new OldCalibrationEventArgs(dataArray, array, property));
                break;
            }

            case 0x42:
            {
                property = CalibrationAction.FactorFix;
                CalibrationMessageArrived(this, new OldCalibrationEventArgs(dataArray, array, property));
                break;
            }

            case 0x2A:     //录波数据
            {
                property = CalibrationAction.RecordWaveform;
                var form = new RecordWaveform(dataArray);
                RecordWaveformMessageArrived(this, new RecordWaveformEventArgs(form, dataArray));

                break;
            }

            default:
            {
                property = CalibrationAction.Null;
                break;
            }
            }
        }
Пример #4
0
 /// <summary>
 /// 录波数据事件参数
 /// </summary>
 /// <param name="wave">录播数据结构体</param>
 /// <param name="array">字节数组</param>
 public RecordWaveformEventArgs(RecordWaveform wave, byte[] array)
 {
     Waveform  = wave;
     DataArray = array;
 }