Example #1
0
        public RecordDisk(string driverName)
        {
            disk = new DiskUtil(driverName);

            recordControl = new RecordControl(disk);

            if (recordControl.IsValid == false)
            {
                return;
            }

            long offset = 512;
            int  index  = 0;

            while (true)
            {
                RecordFile file = new RecordFile(disk, offset, index++);
                if (file.Length == 0)
                {
                    break;
                }


                listFile.Add(file);
                offset += file.Length;
            }
        }
Example #2
0
        public SelectChannel(RecordDisk disk, int channel, int index)
        {
            this.file = disk.RecordList[index-1];
            this.channel = channel;
            this.RecordIndex = index;
            this.BeginTime = file.BeginTime.ToString("yyyy-MM-dd HH:mm:ss");
            this.EndTime = file.EndTime.ToString("yyyy-MM-dd HH:mm:ss");

            int seconds = 0;
            if (file.EndTime > file.BeginTime)
            {
                seconds = (int)((file.EndTime - file.BeginTime).TotalSeconds);
                this.RecordSec = seconds;
                int h = seconds / (3600);
                int m = (seconds - h * (3600)) / 60;
                int s = seconds - h * (3600) - m * 60;

                this.TimeLength = h.ToString("00") + ":" + m.ToString("00") + ":" + s.ToString("00");

            }
            else
            {
                this.TimeLength = "---";
            }

            this.Channel = channel;
            this.ChannelName = file.Channels[channel - 1].ChannelName;
               this.ModuleID=file.RecordDevice.DeviceInfo.DevCode+":"+file.RecordDevice.DeviceInfo.ID;
               this.TimeCal = file.Channels[channel - 1].Time;
        }
Example #3
0
        public SignalChannel(RecordFile recordFile, AutoResetEvent autoEvent, byte[] data, int offset)
        {
            this.recordFile = recordFile;
            this.eventDSP   = autoEvent;

            this.DecodeCurve = 0;
            this.DecodeFM    = false;
            this.DecodeAngle = false;
            UInt16 crc = CRC16.ComputeCRC16(data, offset, 124 - 2);


            UInt16 crcCal = BitConverter.ToUInt16(data, offset + 124 - 2);


            if (crc != crcCal)
            {
                return;
            }

            // this.ChannnelNum = data[0 + offset];
            this.State      = (byte)(data[1 + offset] >> 7);
            this.SampleRate = data[0 + offset] + ((data[1 + offset] & 0x1f) << 8);

            this.ChannelType = data[2 + offset];
            //时间
            int year  = data[3 + offset] + 2000;
            int month = data[4 + offset];
            int day   = data[5 + offset];

            this.Time = new DateTime(year, month, day);

            //名字
            int num = data[6 + offset];

            if (num > 0)
            {
                num = num > 8 ? 8 : num;

                this.Person = ASCIIEncoding.UTF8.GetString(data, 7 + offset, num);
            }
            else
            {
                this.Person = "";
            }


            for (int i = 0; i < 21; i++)
            {
                CalcItem calItm = new CalcItem(data, 15 + i * 5 + offset);
                if (calItm.IsValid)
                {
                    calList.Add(calItm);
                }
            }
            this.TimeInterval = 40; //默认是40毫秒计算一个点
        }
Example #4
0
        public SignalChannel(RecordFile recordFile, AutoResetEvent autoEvent, byte[] data, int offset)
        {
            this.recordFile = recordFile;
            this.eventDSP = autoEvent;

            this.DecodeCurve = 0;
            this.DecodeFM = false;
            this.DecodeAngle = false;
            UInt16 crc = CRC16.ComputeCRC16(data, offset, 124 - 2);

            UInt16 crcCal = BitConverter.ToUInt16(data, offset + 124 - 2);

            if (crc != crcCal) return;

            // this.ChannnelNum = data[0 + offset];
            this.State = (byte)(data[1 + offset] >> 7);
            this.SampleRate = data[0 + offset] + ((data[1 + offset] & 0x1f) << 8);

            this.ChannelType = data[2 + offset];
            //时间
            int year = data[3 + offset] + 2000;
            int month = data[4 + offset];
            int day = data[5 + offset];
            this.Time = new DateTime(year, month, day);

            //名字
            int num = data[6 + offset];

            if (num > 0)
            {
                num = num > 8 ? 8 : num;

                this.Person = ASCIIEncoding.UTF8.GetString(data, 7 + offset, num);
            }
            else
            {

                this.Person = "";
            }

            for (int i = 0; i < 21; i++)
            {
                CalcItem calItm = new CalcItem(data, 15 + i * 5 + offset);
                if (calItm.IsValid)
                {
                    calList.Add(calItm);
                }
            }
            this.TimeInterval = 40; //默认是40毫秒计算一个点
        }
Example #5
0
        public void Export(FileStream fs)
        {
            this.ExportOK = false;
            recordControl.Write(fs);

            for (int i = 0; i < listFile.Count; i++)
            {
                RecordFile file = listFile[i];

                if (file.Select)
                {
                    exportFileIndex = i;
                    file.Write(fs);
                    exportedSize += file.Length;
                }
            }
            this.ExportOK = true;
        }
Example #6
0
        public RecordDisk(string driverName)
        {
            disk = new DiskUtil(driverName);

            recordControl = new RecordControl(disk);

            if (recordControl.IsValid == false) return;

            long offset = 512;
            int index = 0;
            while (true)
            {
                RecordFile file = new RecordFile(disk, offset,index++);
                if (file.Length == 0) break;

                listFile.Add(file);
                offset += file.Length;
            }
        }
        private void ExportProc()
        {
            try
            {
                exportTotal = 0;
                exportedSize = 0;
                for (int i = 0; i < MaxSrcs; i++)
                {
                    if (selectChannels[i] != null)
                    {
                        exportTotal += selectChannels[i].File.Length;
                    }
                }
                for (int i = 0; i < MaxSrcs; i += PropChannelNum)
                {

                    if (selectChannels[i] != null)
                    {
                        exportFile = selectChannels[i].File;
                        if (i > 0 && (selectChannels[i - PropChannelNum] != null))
                        {
                            exportedSize += selectChannels[i - PropChannelNum].File.Length;
                        }
                        SignalChannel sigChannel = selectChannels[i].File.Channels[selectChannels[i].Channel-1];

                        int srcIndex = i / PropChannelNum;

                        sigChannel.DecodeFM = false;
                        sigChannel.DecodeCurve = 0;
                        sigChannel.DecodeAngle = false;

                        sigChannel.DecodeFM=selectDevice.DevGroup.SourceGroups[srcIndex].AllowFM;
                        int allowCurve=selectDevice.DevGroup.SourceGroups[srcIndex].AllowCurve;
                        sigChannel.DecodeCurve = allowCurve;
                        bool allowAngle = selectDevice.DevGroup.SourceGroups[srcIndex].AllowAngle;
                        sigChannel.DecodeAngle = allowAngle;
                        if (allowAngle && selectChannels[i + 1] != null) //参考相位
                        {
                            SignalChannel sigChannel1 = selectChannels[i + 1].File.Channels[selectChannels[i + 1].Channel - 1];
                            sigChannel1.DecodeAngle = true;
                            sigChannel1.IsReference = true;
                            selectChannels[i + 1].File.SignalArgsChanged += new EventHandler<RecordAnalyse.Signal.SignalArgs>(FormDataWizard_SignalArgsChanged);
                        }
                        else if (allowCurve>0) //解码道岔曲线
                        {
                           HHDeviceProperty devBindProp= selectDevice.GetProperty(selectDevice.DevGroup.SourceGroups[srcIndex].Properties[0]);
                            DevCurve devCurve= devBindProp.Curves[0];
                            sigChannel.TimeInterval = devCurve.TimeInterval;

                            if (devCurve.MonitorType == Common.SignalType.SignalDCCurve)
                            {
                                sigChannel.DecodeCurve = 2;
                            }
                            else
                            {
                                sigChannel.DecodeCurve = 1;
                            }

                            if ((selectChannels[i + 1] == null) && (selectChannels[i + 2] == null)) //单相
                            {
                                sigChannel.SignalArgsChanged += new EventHandler<RecordAnalyse.Signal.SignalArgs>(FormDataWizard_SignalArgsChanged);
                            }
                            else
                            {
                                curveGrp = new Common.CurveGroup(3, devCurve.Group.Type, devCurve.Index);

                                sigChannel.SignalArgsChanged += new EventHandler<RecordAnalyse.Signal.SignalArgs>(FormDataWizard_SignalArgsChangedA);

                                if (selectChannels[i + 1] != null)
                                {
                                    selectChannels[i + 1].File.Channels[selectChannels[i + 1].Channel - 1].SignalArgsChanged += new EventHandler<RecordAnalyse.Signal.SignalArgs>(FormDataWizard_SignalArgsChangedB); //B相
                                }
                                if (selectChannels[i + 2] != null)
                                {
                                    selectChannels[i + 2].File.Channels[selectChannels[i + 2].Channel - 1].SignalArgsChanged += new EventHandler<RecordAnalyse.Signal.SignalArgs>(FormDataWizard_SignalArgsChangedC); //C相
                                }
                            }
                        }
                        else
                        {
                            sigChannel.SignalArgsChanged += new EventHandler<RecordAnalyse.Signal.SignalArgs>(FormDataWizard_SignalArgsChanged);
                        }
                        exportSrcIndex = srcIndex;
                        selectChannels[i].File.Export();
                        if (allowAngle && selectChannels[i + 1] != null) //参考相位
                        {
                            SignalChannel sigChannel1 = selectChannels[i + 1].File.Channels[selectChannels[i + 1].Channel - 1];
                            sigChannel1.DecodeAngle = true;
                            sigChannel1.SignalArgsChanged -= new EventHandler<RecordAnalyse.Signal.SignalArgs>(FormDataWizard_SignalArgsChanged);
                        }
                        else if ((allowCurve>0) && ((selectChannels[i + 1] != null) || (selectChannels[i + 2] != null))) //有2条以上曲线
                        {
                            HHDeviceProperty devBindProp = selectDevice.GetProperty(selectDevice.DevGroup.SourceGroups[srcIndex].Properties[0]);
                            DevCurve devCurve = devBindProp.Curves[0];

                            sigChannel.SignalArgsChanged -= new EventHandler<RecordAnalyse.Signal.SignalArgs>(FormDataWizard_SignalArgsChangedA);
                            if (selectChannels[i + 1] != null)
                            {
                                selectChannels[i + 1].File.Channels[selectChannels[i + 1].Channel - 1].SignalArgsChanged -= new EventHandler<RecordAnalyse.Signal.SignalArgs>(FormDataWizard_SignalArgsChangedB); //B相
                            }
                            if (selectChannels[i + 2] != null)
                            {
                                selectChannels[i + 2].File.Channels[selectChannels[i + 2].Channel - 1].SignalArgsChanged -= new EventHandler<RecordAnalyse.Signal.SignalArgs>(FormDataWizard_SignalArgsChangedC); //C相
                            }

                        }
                        else
                        {
                            sigChannel.SignalArgsChanged -= new EventHandler<RecordAnalyse.Signal.SignalArgs>(FormDataWizard_SignalArgsChanged);
                        }

                    }
                }

                exportOK = true;
            }
            catch (Exception)
            {

            }
        }