示例#1
0
        private static void ParseInDirectory_WithoutKAndRFiles(string dir, string filename, string tab2File, int NZones, string kadrDefault = "")
        {
            TobiiCsvReader     tobiiCsvReader   = new TobiiCsvReader();
            TobiiExcelReader   tobiiExcelReader = new TobiiExcelReader();
            List <TobiiRecord> tobiiRecords     = new List <TobiiRecord>();

            tobiiExcelReader.TobiiExelRead(filename, tobiiRecords, NZones);
            List <TobiiRecord> FiltredTobiiList = tobiiCsvReader.CompactTobiiRecords(tobiiRecords);
            TabOfKeys          tabOfKeys        = ExcelReader.ReadTabOfKeys(tab2File, "B");

            //Regex regex = new Regex(@"id\d{3}");
            //MatchCollection matches = regex.Matches(Path.GetFileName(filename));
            //if (matches.Count > 1 || matches.Count == 0) { MessageBox.Show("В имени файла " + filename + " найдено неверное кол-во id (0 или более 1)"); return; }
            //string FileId = matches[0].Value.Replace("id", "");


            FZoneTab           fZoneTab  = new FZoneTab();
            List <TobiiRecord> FZoneList = fZoneTab.Calculate(FiltredTobiiList, tabOfKeys);

            FZoneList = tobiiCsvReader.ClearFromGarbageZone(FZoneList, -1, FixationAddition);
            FZoneList = tobiiCsvReader.CompactTobiiRecords(FZoneList, "FZones");

            fZoneTab.WriteResult(filename.Replace(".xlsx", ".txt"), FZoneList);
        }
示例#2
0
        public SeparatorIntervals ReadCSVForRFiles(string filename)
        {
            string[] wrongEvents = new string[] { null, "", "RecordingPause", "RecordingBuffering",
                                                  "SyncPortOutHigh", "SyncPortOutLow", "под зоны IntervalEnd",
                                                  "под зоны IntervalStart" };


            char separator = '\n';
            char delimiter = '\t';

            int  N_timestampCol = 0, N_eventCol = 0;
            long i = 0;

            SeparatorIntervals separatorIntervals = new SeparatorIntervals();
            List <Interval>    intervals          = new List <Interval>();

            separatorIntervals.filename = filename;
            separatorIntervals.Id       = Path.GetFileNameWithoutExtension(filename);

            using (StreamReader rd = new StreamReader(new FileStream(filename, FileMode.Open)))
            {
                string[] first_string_arr = { "" };
                first_string_arr = rd.ReadLine().Split(delimiter);
                N_timestampCol   = TobiiCsvReader.SearchColFirst(first_string_arr, "Recording timestamp");
                N_eventCol       = TobiiCsvReader.SearchColFirst(first_string_arr, "Event");



                bool EndOfFile = false;
                while (!EndOfFile)
                {
                    string[] str_arr = { "" };
                    string   big_str = "";
                    EndOfFile = TobiiCsvReader.ReadPartOfFile(rd, out big_str);

                    str_arr = big_str.Split(separator);
                    foreach (string s in str_arr)
                    {
                        string[] tmp = { "" };
                        i++;
                        tmp = s.Split(delimiter);
                        if (tmp.Count() < 3)
                        {
                            continue;
                        }
                        if (IsWrongEvent(wrongEvents, tmp[N_eventCol]))
                        {
                            continue;
                        }
                        Interval interval = new Interval();

                        if (!long.TryParse(tmp[N_timestampCol], out interval.Time_ms_beg))
                        {
                            throw new Exception("Не могу преобразовать в timestamp строку  " + tmp[N_timestampCol]);
                        }
                        if (intervals.Count > 0)
                        {
                            intervals.Last().Time_ms_end = interval.Time_ms_beg - 1;
                        }
                        interval.Name = tmp[N_eventCol];
                        intervals.Add(interval);
                    }
                }

                intervals.Remove(intervals.Last());//убираем последний интервал, т.к. там последняя строка записи.
                separatorIntervals.Intervals = intervals;
            }

            return(separatorIntervals);
        }