예제 #1
0
 protected override void DoCreateNewFile(int nrSignals, bool overwrite)
 {
     base.DoCreateNewFile(nrSignals, overwrite);
     FileInfo.StrictChecking = StrictChecking;
     for (int i = 0; i < nrSignals; i++)
     {
         EdfSignalInfo newSignalDef = (EdfSignalInfo)CreateSignalInfo();
         newSignalDef.StrictChecking = StrictChecking;
         SignalInfo.Add(newSignalDef);
     }
     DoOpenFile();
     FileInfo.NrSignals     = nrSignals;
     FileInfo.NrDataRecords = 0;
 }
예제 #2
0
 protected override void DoCreateNewFile(int nrSignals, bool overwrite)
 {
     if (!UseMemoryStream)
     {
         string s = Path.GetExtension(FileName);
         if (string.IsNullOrEmpty(s) || (s.ToLower() != ".edf"))
         {
             throw new EdfPlusFileNameExtException(DataFileConsts.EDFPlusFileNameExt);
         }
     }
     base.DoCreateNewFile(nrSignals + 1, overwrite);
     for (int i = 0; i < nrSignals + 1; i++)
     {
         EdfPlusSignalInfo newSignalDef = new EdfPlusSignalInfo(this);
         SignalInfo.Add(newSignalDef);
     }
     DoOpenFile();
     FileInfo.NrSignals     = nrSignals + 1;
     FileInfo.NrDataRecords = 0;
     if (_annotationSignalNrs == null)
     {
         _annotationSignalNrs = new List <int>(1);
     }
     else
     {
         _annotationSignalNrs.Capacity = 1;
     }
     AnnotationSignalNrs.Add(nrSignals);
     SignalInfo[nrSignals].SignalLabel = EdfConstants.AnnotationsSignalLabel;
     SignalInfo[nrSignals].PhysiMin    = 0;
     SignalInfo[nrSignals].PhysiMax    = 1;
     SignalInfo[nrSignals].DigiMin     = -32768;
     SignalInfo[nrSignals].DigiMax     = 32767;
     SignalInfo[nrSignals].NrSamples   = 10; // default value, large enough for time keeping events
     FileInfo.SignalDataIsContinuous   = true;
 }
예제 #3
0
        protected virtual void ReadSignalInfo()
        {
            Debug.Assert(FileHandle != null, DataFileConsts.DataFileIsNotOpen);
            SignalInfo.Clear();
            int dummy;

            if (FileInfo.FieldValid[(int)EdfFileInfoBase.Field.NrSignals] ||
                int.TryParse(FileInfo.EdfFileInfoRaw.NrSignals.Trim(), out dummy))
            {
                List <EdfSignalInfoRaw> tmpSignalInfo = new List <EdfSignalInfoRaw>();
                for (int i = 0; i < FileInfo.NrSignals; i++)
                {
                    EdfSignalInfoBase newSignalDef = CreateSignalInfo();
                    newSignalDef.StrictChecking = StrictChecking;
                    SignalInfo.Add(newSignalDef);
                    tmpSignalInfo.Add(new EdfSignalInfoRaw());
                }
                if (FileSize >= (FileInfo.NrSignals + 1) * 256)
                {
                    lock (FileAccess)
                    {
                        FileHandle.Seek(256, SeekOrigin.Begin);
                        for (int i = 0; i < FileInfo.NrSignals; i++)
                        {
                            tmpSignalInfo[i].SignalLabel = ReadStringField(16);
                        }
                        for (int i = 0; i < FileInfo.NrSignals; i++)
                        {
                            tmpSignalInfo[i].TransducerType = ReadStringField(80);
                        }
                        for (int i = 0; i < FileInfo.NrSignals; i++)
                        {
                            tmpSignalInfo[i].PhysiDim = ReadStringField(8);
                        }
                        for (int i = 0; i < FileInfo.NrSignals; i++)
                        {
                            tmpSignalInfo[i].PhysiMin = ReadStringField(8);
                        }
                        for (int i = 0; i < FileInfo.NrSignals; i++)
                        {
                            tmpSignalInfo[i].PhysiMax = ReadStringField(8);
                        }
                        for (int i = 0; i < FileInfo.NrSignals; i++)
                        {
                            tmpSignalInfo[i].DigiMin = ReadStringField(8);
                        }
                        for (int i = 0; i < FileInfo.NrSignals; i++)
                        {
                            tmpSignalInfo[i].DigiMax = ReadStringField(8);
                        }
                        for (int i = 0; i < FileInfo.NrSignals; i++)
                        {
                            tmpSignalInfo[i].PreFilter = ReadStringField(80);
                        }
                        for (int i = 0; i < FileInfo.NrSignals; i++)
                        {
                            tmpSignalInfo[i].NrSamples = ReadStringField(8);
                        }
                        for (int i = 0; i < FileInfo.NrSignals; i++)
                        {
                            tmpSignalInfo[i].Reserved = ReadStringField(32);
                        }
                    }
                    for (int i = 0; i < FileInfo.NrSignals; i++)
                    {
                        SignalInfo[i].SignalInfoRecord = tmpSignalInfo[i];
                        SignalInfo[i].DataExists       = FileInfo.DataExists;
                    }
                }
                CalculateDataBlockSize();
            }
        }