예제 #1
0
        public void AreEqual()
        {
            var a = SerialMessage.Parse("DEADBEEF|01-02-03-04-05-06-07-08");
            var b = SerialMessage.Parse("DEADBEEF|01-02-03-04-05-06-07-08");

            Assert.IsTrue(a.Equals(b));
            Assert.AreNotEqual(a, b); // AreEqual does not work, as SerialMessage does not override Object.Equals
        }
예제 #2
0
        public void ParseTooLong()
        {
            SerialMessage message = SerialMessage.Parse("DEADBEEF|01-02-03-04-05-06-07-08-09");

            Assert.AreEqual("DEADBEEF", message.Identifier);
            Assert.AreEqual(1, message.Data.Bytes.First());
            Assert.AreEqual(8, message.Data.Bytes.Last());
        }
예제 #3
0
        public void AddDifferentIdentifier()
        {
            var set = new ObservableSet <SerialMessage>(new SerialMessageSameIdentifier())
            {
                SerialMessage.Parse("DEADBEED|01-02-03-04-05-06-07-08"),
                SerialMessage.Parse("DEADBEEE|00-00-00-00-00-00-00-00"),
                SerialMessage.Parse("DEADBEEF|FF-FF-FF-FF-FF-FF-FF-FF")
            };

            Assert.AreEqual(3, set.Count);
        }
예제 #4
0
        public void AddSameIdentifier()
        {
            var set = new ObservableSet <SerialMessage>(new SerialMessageSameIdentifier())
            {
                SerialMessage.Parse("DEADBEEF|01-02-03-04-05-06-07-08"),
                SerialMessage.Parse("DEADBEEF|00-00-00-00-00-00-00-00"),
                SerialMessage.Parse("DEADBEEF|FF-FF-FF-FF-AA-AA-AA-AA")
            };

            Assert.AreEqual(1, set.Count);
            Assert.AreEqual(set[0].Data.Bytes.First(), 0xFF);
            Assert.AreEqual(set[0].Data.Bytes.Last(), 0xAA);
        }
예제 #5
0
        public void AddMultiple()
        {
            var set = new ObservableSet <SerialMessage>(new SerialMessageSameIdentifier())
            {
                SerialMessage.Parse("DEADBEEF|01-02-03-04-05-06-07-08"),
                SerialMessage.Parse("DEADBEEC|01-02-03-04-05-06-07-08"),
                SerialMessage.Parse("DEADBEED|00-00-00-00-00-00-00-00"),
                SerialMessage.Parse("DEADBEEF|FF-FF-FF-FF-FF-FF-FF-FF")
            };

            Assert.AreEqual(3, set.Count);
            Assert.IsFalse(set.Any(x => x.Equals(SerialMessage.Parse("DEADBEEF|01-02-03-04-05-06-07-08"))));
            Assert.IsTrue(set.Any(x => x.Equals(SerialMessage.Parse("DEADBEEF|FF-FF-FF-FF-FF-FF-FF-FF"))));
        }
예제 #6
0
        private void ReadSerial()
        {
            try
            {
                serialPort.Open();
            }
            catch (Exception e)
            {
                MessageBox.Show($"Failed to open port: {e.Message}", "Serial Inspector");
                return;
            }

            OnPropertyChanged(nameof(IsRunning));
            int errorCount = 0;

            while (keepRunning && serialPort.IsOpen && errorCount < 50)
            {
                try
                {
                    string        line    = serialPort.ReadLine();
                    SerialMessage message = SerialMessage.Parse(line, FirstChunkMath, SecondChunkMath);

                    var addItem = new Action(() => messages.Add(message));
                    Application.Current?.Dispatcher.Invoke(DispatcherPriority.Background, addItem);
                }
                catch (IOException e)
                {
                    MessageBox.Show($"I/O exception occurred: {e.Message}", "Serial Inspector");
                    break;
                }
                catch (Exception e)
                {
                    Debug.WriteLine($"An exception occurred: {e.Message}");
                    ++errorCount;
                    continue;
                }
            }

            serialPort?.Close();
            OnPropertyChanged(nameof(IsRunning));
        }