Exemple #1
0
        public void TestDataExtractor()
        {
            var path = @"C:\Repos\mwwhited\BinaryDataDecoders\src\BinaryDataDecoders.ElectronicScoringMachines.Fencing\Favero\RawData.txt";

            var chunks = File.ReadAllText(path)
                         .Where(c => (c >= '0' && c <= '9') || (c >= 'A' && c <= 'F') || (c >= 'a' && c <= 'f'))
                         .AsMemory()
                         .BytesFromHexString()
                         .Split(0xff, Carry)
            ;

            //var segments = (from c in chunks
            //                select c.ToArray().ToHexString(",0x"))
            //               .Distinct()
            //               .OrderBy(i => i)
            //               .Aggregate(new StringBuilder(), (sb, v) => sb.Append("0x").Append(v).AppendLine())
            //               .ToString();
            // this.TestContext.WriteLine(segments);

            var parser = new FaveroStateParser();

            foreach (var c in chunks.Distinct())
            {
                try
                {
                    var state = parser.Parse(c.Span);
                    this.TestContext.WriteLine(state.ToString());
                }
                catch
                {
                    this.TestContext.WriteLine($"ERROR Decoding {c.ToArray().ToHexString()}");
                }
            }
        }
Exemple #2
0
        public void DecodeTest()
        {
            /*
             *   FFh, 06h, 12h, 56h, 02h, 14h, 0Ah, 00h, 38h, 56h
             *              which will display:
             *              Right score = 6
             *              Left score = 12
             *              Time = 2:56
             *              The Lamps ON are: Red, Yellow right, Left priorite.
             *              Number of Matches = 2
             *              Left yellow penalty lamp = ON.
             */
            var frame = new byte[]
            {
                0xff, 0x06, 0x12, 0x56, 0x02, 0x14, 0x0a, 0x00, 0x38, 0x56,
            };

            var parser = new FaveroStateParser();
            var state  = parser.Parse(frame);

            this.TestContext.WriteLine(state.ToString());
            // R:S>012 L>Yellow C>None P>False G:S>006 L>Touch C>None P>True T:00:02:56 M:0

            Assert.AreEqual(12, state.Left.Score, "Check Left Score");
            Assert.AreEqual(Lights.Touch, state.Left.Lights, "Check Left Lights");
            Assert.AreEqual(Cards.Yellow, state.Left.Cards, "Check Left Cards");
            Assert.AreEqual(true, state.Left.Priority, "Check Left Priority");

            Assert.AreEqual(6, state.Right.Score, "Check Right Score");
            Assert.AreEqual(Lights.Yellow, state.Right.Lights, "Check Right Lights");
            Assert.AreEqual(Cards.None, state.Right.Cards, "Check Right Cards");
            Assert.AreEqual(false, state.Right.Priority, "Check Right Priority");

            Assert.AreEqual(new TimeSpan(0, 2, 56), state.Clock, "Check Clock");
            Assert.AreEqual(2, state.Match, "Check Match");
        }