コード例 #1
0
        /// <summary>
        /// Синхронизировать K-файл в соответствии с ID и таблицей синхронизации
        /// </summary>
        /// <param name="file_k">Путь к Rфайлу</param>
        /// <param name="SyncToIdTableFilename">Путь к таблице синхронизации по ID</param>
        public static void SyncronizeKFileAccordingToSyncToIdTable(string file_k, string SyncToIdTableFilename, TextBox OuterTextBox)
        {
            List <KadrIntervals> K = SpecialFor9_41_SCENARY2.DeserializeKFiles(file_k);

            //считываем данные из Excel файла в двумерный массив
            Excel.Application xlApp = new Excel.Application();   //Excel
            Excel.Workbook    xlWB;                              //рабочая книга
            Excel.Worksheet   xlSht;                             //лист Excel
            xlWB  = xlApp.Workbooks.Open(SyncToIdTableFilename); //название файла Excel
            xlSht = xlWB.Worksheets[1];                          //название листа или 1-й лист в книге xlSht = xlWB.Worksheets[1];

            int iLastRow = xlSht.Cells[xlSht.Rows.Count, "A"].End[Excel.XlDirection.xlUp].Row;
            var arrData  = (object[, ])xlSht.Range["A1:B" + iLastRow].Value; //берём данные с листа Excel

            int i;

            foreach (var Intervals in K)
            {
                string curId = Intervals.Id;
                bool   curIdFindInSyncTable = false;
                for (i = 1; i <= arrData.GetUpperBound(0); i++)
                {
                    string idFromSyncTable = (arrData[i, 1]).ToString();
                    if (curId == idFromSyncTable)
                    {
                        long delta_t = (long)(24 * 3_600_00 * (double)arrData[i, 2]);
                        curIdFindInSyncTable = true;
                        foreach (var interval in Intervals.Intervals)
                        {
                            if (Intervals.Intervals.IndexOf(interval) != 0)
                            {
                                interval.Time_ms_beg += delta_t;
                                if (interval.Time_ms_beg < 0)
                                {
                                    interval.Time_ms_beg = 0;
                                }
                            }
                            else
                            {
                                interval.Time_ms_beg = 0;
                            }
                            interval.Time_ms_end += delta_t;
                            if (interval.Time_ms_end < 0)
                            {
                                interval.Time_ms_end = 0;
                            }
                        }
                        break;
                    }
                }

                if (!curIdFindInSyncTable)
                {
                    OuterTextBox.Text += "Id файла:     " + curId + "   не найден в " + Path.GetFileName(SyncToIdTableFilename) + " \n";
                }
            }
            new SpecialFor9_41_SCENARY2().SerializeKFiles(K, file_k.Replace(".xml", "_sync.xml"));
        }
コード例 #2
0
        /// <summary>
        /// Вывод всех ID, которые есть в К-файле
        /// </summary>
        /// <param name="file_r"></param>
        /// <param name="OuterTextBox"></param>
        public static void OutputIdFromKFile(string file_k, TextBox OuterTextBox)
        {
            List <KadrIntervals> Lst = SpecialFor9_41_SCENARY2.DeserializeKFiles(file_k);

            OuterTextBox.Text += "----------" + "\n" + "Перечень ID в файле " + file_k + "\n" + "-----------------------" + "\n";
            foreach (var Interval in Lst)
            {
                OuterTextBox.Text += Interval.Id + "\n";
            }
            OuterTextBox.Text += "\n" + "-----------------------";
        }
コード例 #3
0
        private static void ParseInDirectory_OneRegFile(string dir, string file_csv, string file_k, string file_r, string tab2File, int NZones, string kadrDefault = "", string tab2FileLastColumn = "T")
        {
            TobiiCsvReader     tobiiCsvReader = new TobiiCsvReader();
            List <TobiiRecord> tobiiRecords   = new List <TobiiRecord>();

            tobiiCsvReader.TobiiCSCRead(file_csv, tobiiRecords, NZones);
            List <TobiiRecord> FiltredTobiiList = tobiiCsvReader.CompactTobiiRecords(tobiiRecords);
            TabOfKeys          tabOfKeys        = ExcelReader.ReadTabOfKeys(tab2File, tab2FileLastColumn);

            Regex           regex   = new Regex(@"id\d{3}");
            MatchCollection matches = regex.Matches(Path.GetFileName(file_csv));

            if (matches.Count > 1 || matches.Count == 0)
            {
                MessageBox.Show("В имени файла " + file_csv + " найдено неверное кол-во id (0 или более 1)"); return;
            }
            string FileId = matches[0].Value.Replace("id", "");

            KadrIntervals kadrIntervals;

            kadrIntervals = SpecialFor9_41_SCENARY2.GetKadrIntervalsInXmlKFile(file_k, FileId);


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

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

            fZoneTab.WriteResult(file_csv.Replace(".csv", ".txt"), FZoneList);

            SeparatorIntervals separatorIntervals = SpecialFor9_41_SCENARY2.GetSeparatorIntervalsInXmlKFile(file_r, FileId);

            ResultSeparator resultSeparator = new ResultSeparator(dir + @"\reg\", separatorIntervals.Intervals, FZoneList, Path.GetFileName(file_csv).Replace(".csv", "_"));

            resultSeparator.Separate();
        }
コード例 #4
0
 private void MenuItem_Click_19(object sender, RoutedEventArgs e)
 {
     SpecialFor9_41_SCENARY2.UnionFilesOnRegims(TextBoxTarget.Text);
 }
コード例 #5
0
ファイル: FZoneTab.cs プロジェクト: lvovandrey/GTobiiParser
        /// <summary>
        /// По моему это бесполезно комментировать....
        /// Короче тут происходит самое основное - вроде как смотрится каждая строка, потом выясняется в каком она кадре
        /// Потом .... вобщем ей назначается одна только зона в результате....
        /// </summary>
        /// <param name="tobiiRecords"></param>
        /// <param name="kadrIntervals"></param>
        /// <param name="tabOfKeys"></param>
        /// <returns></returns>
        public List <TobiiRecord> Calculate(List <TobiiRecord> tobiiRecords, KadrIntervals kadrIntervals, TabOfKeys tabOfKeys)
        {
            // FZoneList = new List<TobiiRecord>();
            foreach (var TR in tobiiRecords)//проходим по всем записям
            {
                foreach (var zone in TR.zones)
                {
                    int    MFINumber;
                    string kadr;
                    int    Fzone;
                    MFINumber = SpecialFor9_41_SCENARY2.GetMFINumber(zone);
                    kadr      = kadrIntervals.GetKadr(TR.time_ms, MFINumber);
                    if (kadr == "")
                    {
                        throw new Exception("Не могу найти подходящий кадр для интервала id = " + kadrIntervals.Id + " при времени" + TR.time_ms);
                    }
                    Fzone = tabOfKeys.GetFuncZone(zone, kadr);
                    TR.fzones.Add(Fzone);
                }

                TR.fzones = TR.fzones.Distinct().ToList();

                //Убираем нулевые зоны
                if (TR.fzones.Count() > 1)
                {
                    if (TR.fzones.Contains(0))
                    {
                        TR.fzones.Remove(0);
                    }
                }

                //убираем низкоприоритетные зоны - тут например убрали зоны "кадр БР целиком"
                for (int i = 0; i < 5; i++)
                {
                    if (TR.fzones.Count() > 1)
                    {
                        if (TR.fzones.Contains(18))
                        {
                            TR.fzones.Remove(18);
                        }
                    }

                    if (TR.fzones.Count() > 1)
                    {
                        if (TR.fzones.Contains(19))
                        {
                            TR.fzones.Remove(19);
                        }
                    }

                    if (TR.fzones.Count() > 1)
                    {
                        if (TR.fzones.Contains(20))
                        {
                            TR.fzones.Remove(20);
                        }
                    }
                }
                if (TR.fzones.Count() > 0)
                {
                    TR.CurFZone = TR.fzones.First();
                }

                if (TR.fzones.Count() == 0)
                {
                    TR.CurFZone = -1;
                }
            }
            return(tobiiRecords);
        }