public List<RecordPackage> PackageRecords(List<Record> records)
        {
            var packages = new List<RecordPackage>();

            int groupCount = records.Count / RecordPackage.PackageSize + 1;
            for (int i = 0; i < groupCount; i++) {
                int index = i * RecordPackage.PackageSize;
                int count = index + RecordPackage.PackageSize < records.Count ?
                    RecordPackage.PackageSize : records.Count - index;
                var group = records.GetRange(index, count);
                packages.Add(new RecordPackage(group));
            }
            return packages;
        }
        public static List<Skeleton> GetStartCorrectedFrames(List<Skeleton> test, List<Skeleton> action)
        {
            test = KinectFrameUtils.AlignFrames(test, action.Count);
            double dist = GetTotalDistTraveled(action);

            int frameStart = -1;
            int rawStart = -1;

            for (int i = 0; i < action.Count; i++)
            {
                if (KinectFrameUtils.GetTotalDistTraveled(action.GetRange(0, i)) > (dist / 5) && frameStart < 0)
                {
                    frameStart = i;
                }

                if (KinectFrameUtils.GetTotalDistTraveled(test.GetRange(0, i)) > (dist / 5) && rawStart < 0)
                {
                    rawStart = i;
                }
            }

            int diff = frameStart - rawStart;
            if (diff > 0)
            {
                for (int i = 0; i < diff; i++)
                {
                    test = AlignFrames(test, test.Count - 1);
                    test.Insert(0, test[0]);
                }
            }
            else
            {
                for (int i = 0; i < -diff; i++)
                {
                    test.RemoveAt(0);
                    test.Add(test[test.Count - 1]);
                }
            }
            return test;
        }
Beispiel #3
0
        public void UpdateCompositeFeed()
        {
            CompositeFeed composite = this.Feeds[3] as CompositeFeed;

            List<FeedItem> items = new List<FeedItem>();
            foreach (Feed feed in this.Feeds)
            {
                items.AddRange(feed.Items);
                // items.AddRange(feed.Items.ToList().GetRange(0, composite.MaxItems));
            }

            // on classe du plus recent au plus vieux, donc on inverse item1 et item2 dans la comparaison
            items.Sort((item1, item2) => item2.PublicationDate.CompareTo(item1.PublicationDate));

            composite.Items = new ObservableCollection<FeedItem>(items.GetRange(0, composite.MaxItems));
        }
        private void btn_eval_click(object sender, RoutedEventArgs e)
        {
            var reader = new StreamReader(new FileStream(outputFile, FileMode.Open));

            var calculatedSequence = new List<string>();
            var calculatedLatency = new List<KeyValuePair<string,int>>();
            float countAll = 0;
            float countHit = 0;
            int latency = 0;

            while (!reader.EndOfStream)
            {
                var line = reader.ReadLine();
                if (line.Contains("==="))               
                {
                    calculatedSequence.Clear();
                    latency = 0;
                }

                if (line.Contains("%"))
                {
                    int sequenceHit = 0;
                    countAll++;

                    calculatedSequence.Add(line.Split('%')[0].Trim());

                    var originalLabel = line.Split('%')[1].Substring(1).Trim();

                    foreach (string lbl in calculatedSequence)
                    {
                        if (!lbl.Equals(originalLabel) && sequenceHit == 0)
                            latency++;
                        else
                            sequenceHit++;
                    }
                                                  
                    // EVALUATION: berechnete Werte entsprechen zu einem drittel des erwarteten Labels und das ziellabel ist mindestens einmal in den letzten 5 Frames enthalten
                    if (sequenceHit >= calculatedSequence.Count*0.33 && calculatedSequence.GetRange(calculatedSequence.Count-6,5).Contains(originalLabel))
                        countHit++;
                    else
                        latency = -1;

                    calculatedLatency.Add(new KeyValuePair<string,int>(originalLabel,latency));
                }
                else
                {
                    if (!String.IsNullOrWhiteSpace(line))
                        calculatedSequence.Add(line.Trim());
                }
            }

            reader.Close();

            float q = countHit / countAll;
            double latOverall =  calculatedLatency.Sum(i => i.Value) / calculatedLatency.Count;

            box_eval.Document.Blocks.Add(new Paragraph(new Run(String.Format("Gesamt:\t{0}\nTreffer:\t{1}\nQuote:\t{2} %\n=================================\n",
                countAll, countHit, q * 100, latOverall*100))));

            var latencyOutput = "";
            var latencySum = 0.0;
            var latencyCount = 0;
            foreach (var lat in calculatedLatency)
            {                
                if (lat.Value >= 0)
                {
                    latencyOutput += String.Format("'{0}' erkannt nach {1} Frames. (= {2} ms)\n", lat.Key, lat.Value, lat.Value * 100);//100ms (3*33ms bei 30 fps)
                    latencySum += lat.Value;
                    latencyCount++;
                }
                else
                    latencyOutput += String.Format("'{0}' nicht erkannt!\n", lat.Key);
            }
            box_eval.Document.Blocks.Add(new Paragraph(new Run(String.Format("{0}\nDurchschnittliche Latenz aller erkannten Labels: {1:000.0} ms",latencyOutput, (latencySum/latencyCount)*100))));
        }
        /*************************************************************
        *
        * GetFullFeed
        *
        *************************************************************/

        private async void GetFullFeed ()
        {
            FeedDict fd = FetchLocalFeedAsDictionary ();
            Feed feed = await FetchTastyTradeFeed ();

            foreach (FeedItem fi in feed)
            {
                if (!fd.ContainsKey (fi.PubDate))
                {
                    fd[fi.PubDate] = fi;
                }
            }

            m_DomainFeed = (from pair in fd
                           orderby pair.Key descending
                           select pair.Value).ToList ();

            m_FavouriteFeed = (from fi in m_DomainFeed where Favourited (fi) select fi).ToList ();
            m_DisplayedFeed = m_DomainFeed.GetRange (CurrentOffset, Math.Min (m_DomainFeed.Count, 50));
            CurrentOffset = 0;
            FeedGrid.DataContext = m_DisplayedFeed;
        }
        /***************************************************************************
        *
        * LocalFiles only
        *
        ***************************************************************************/

        private void btnLocalFiles_Click (object sender, RoutedEventArgs e)
        {
            if (btnLocalFiles.IsChecked == true)
            {
                m_DomainFeed = new List<FeedItem> ();

                string path = RootDir; // (string) App.Current.Resources["PodcastPath"];
                var folders = Directory.EnumerateDirectories (path);

                foreach (var folder in folders)
                {
                    string f = new DirectoryInfo (folder).Name;
                    try
                    {
                        DateTime dt = DateTime.ParseExact (f, "yyyy-MMM-dd HHmm", CultureInfo.InvariantCulture);
                        using (StreamReader sr = new StreamReader (folder + "\\feed.xml"))
                        {
                            XmlSerializer xr = new XmlSerializer (typeof (FeedItem));
                            FeedItem fi = (FeedItem) xr.Deserialize (sr);

                            /* Update Image and Movie nodes
                               ---------------------------- */

                            fi.Image = ConvertToUrlForm (fi.LocalImage);
                            fi.Movie = ConvertToUrlForm (fi.LocalMovie);

                            m_DomainFeed.Add (fi);
                        }
                    }
                    catch (Exception )
                    {
                        // skip. could be irrelevant folder
                    }
                }

                m_DomainFeed = m_DomainFeed.OrderByDescending ((s) => s.PubDate).ToList ();
                CurrentOffset = 0;

                m_FavouriteFeed = (from fi in m_DomainFeed where Favourited (fi) select fi).ToList ();
                m_DisplayedFeed = m_DomainFeed.GetRange (CurrentOffset, Math.Min (m_DomainFeed.Count, 50));

                FeedGrid.DataContext = m_DisplayedFeed;
            }
            else
            {
                GetFullFeed ();
            }
        }
Beispiel #7
0
        private void InputTextBox_KeyUp(object sender, KeyEventArgs e)
        {
            try
            {
                if (e.Key == Key.Enter)
                {
                    if (InputTextBox.Text.Length > 0)
                    {
                        PacketHelper packetHelper = new PacketHelper((byte)Convert.ToInt16("01111110", 2), InputTextBox.Text.ToCharArray(), 19, 1, 1, 1);
                        List<Packet> packets = packetHelper.GetPackets();
                        List<bool> data = new List<bool>();
                        StringBuilder stringBuilder = new StringBuilder();
                        int n = 1;
                        foreach (Packet packet in packets)
                        {
                            data.AddRange(packet.EncodedData);
                            // stringBuilder.AppendLine(string.Format("Packet #{0}", n++));
                            // stringBuilder.AppendLine(PacketHelper.BinDataToString(packet.EncodedData));
                        }

                        // PacketInfoTextBox.Text = stringBuilder.ToString();

                        int numOfBits = data.Count;
                        int numOfCycles = numOfBits % 8 == 0 ? numOfBits : numOfBits + 1;

                        List<byte> dataToSend = new List<byte>();
                        for (int i = 0; i < numOfCycles / 8; i++)
                        {
                            if (i != numOfCycles / 8 - 1)
                            {
                                dataToSend.Add((byte)Convert.ToInt16(PacketHelper.BinDataToString(data.GetRange(i * 8, 8)), 2));
                            }
                            else
                            {
                                dataToSend.Add((byte)Convert.ToInt16(PacketHelper.BinDataToString(data.GetRange(i * 8, numOfBits - i * 8)), 2));
                            }
                        }

                        _serialPortCOM1.RtsEnable = true;
                        _serialPortCOM1.Write(dataToSend.ToArray(), 0, dataToSend.Count);
                        Thread.Sleep(100);
                        _serialPortCOM1.RtsEnable = false;

                        //InputTextBox.Clear();
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        private void GetFriendList(int page)
        {
            m_progressIndicatorHelper.PushTask();
            String myID = PreferenceHelper.GetPreference("Douban_ID");
            if (String.IsNullOrEmpty(myID))
                return;

            if (!m_bAllListLoaded)
            {
                m_doubanAPI.GetFollowingUserList(myID, (GetFollowingUserListEventArgs e) =>
                {
                    if (e.errorCode == DoubanSdkErrCode.SUCCESS && e.userList != null)
                    {
                        m_allList = e.userList;
                        m_pageCount = (int)Math.Ceiling((double)m_allList.Count / (double)MAX_PER_PAGE);
                        Deployment.Current.Dispatcher.BeginInvoke(() =>
                        {
                            FriendList.Clear();
                            int lengthLeft = m_allList.Count - page * MAX_PER_PAGE;
                            int cutLength = lengthLeft < MAX_PER_PAGE ? lengthLeft : MAX_PER_PAGE;
                            List<FollowingUserInfo> tempList = m_allList.GetRange(page * MAX_PER_PAGE, cutLength);
                            foreach (FollowingUserInfo user in tempList)
                            {
                                FriendList.Add(user);
                            }
                            m_progressIndicatorHelper.PopTask();
                        });
                    }
                    else
                    {
                        m_progressIndicatorHelper.PopTask();
                    }
                });
            }
            else
            {
                Deployment.Current.Dispatcher.BeginInvoke(() =>
                {
                    FriendList.Clear();
                    int lengthLeft = m_allList.Count - page * MAX_PER_PAGE;
                    int cutLength = lengthLeft < MAX_PER_PAGE ? lengthLeft : MAX_PER_PAGE;
                    List<FollowingUserInfo> tempList = m_allList.GetRange(page * MAX_PER_PAGE, cutLength);
                    foreach (FollowingUserInfo user in tempList)
                    {
                        FriendList.Add(user);
                    }
                    m_progressIndicatorHelper.PopTask();
                });
            }
        }