Пример #1
0
        public void EncodeMessage()
        {
            var coder   = new HammingCoder(new BaseCoder());
            var message = GenerateRandomMessage();

            var res = coder.Decode(coder.Encode(message));

            Assert.AreEqual(message, res);
        }
Пример #2
0
        public void CodersIntegrationWithBitstuffing()
        {
            IMessageCoder coder = new BaseCoder();

            coder = new BitstuffCoder(coder);
            coder = new HammingCoder(coder);

            var message = "???";

            var res = coder.Decode(coder.Encode(message));

            Assert.AreEqual(message, res);
        }
Пример #3
0
        public void CodersIntegration()
        {
            IMessageCoder coder = new BaseCoder();

            coder = new BitstuffCoder(coder);
            coder = new HammingCoder(coder);

            var message = GenerateRandomMessage();

            var res = coder.Decode(coder.Encode(message));

            Assert.AreEqual(message, res);
        }
Пример #4
0
        public void FrameAnalysis(byte mybyte)
        {
            switch (mybyte)
            {
            case (byte)FrameType.UPLINK:

                LinkActive = true;
                DisplayData(MessageType.Normal, DateTime.Now + " UPLINK \n");
                WriteData(null, FrameType.ACK_UPLINK, false);
                break;

            case (byte)FrameType.DOWNLINK:

                LinkActive = false;
                DisplayData(MessageType.Normal, DateTime.Now + " DOWNLINK \n");
                WriteData(null, FrameType.ACK_DOWNLINK, false);
                break;

            case (byte)FrameType.ACK:

                DisplayData(MessageType.Normal, DateTime.Now + " ACK \n");
                break;

            case (byte)FrameType.ACK_DOWNLINK:

                LinkActive = false;
                DisplayData(MessageType.Normal, DateTime.Now + " ACK_DOWNLINK \n");
                break;

            case (byte)FrameType.ACK_LINKACTIVE:

                LinkActive = true;
                DisplayData(MessageType.Normal, DateTime.Now + " ACK_LINKACTIVE \n");
                break;

            case (byte)FrameType.ACK_UPLINK:

                LinkActive = true;
                DisplayData(MessageType.Normal, DateTime.Now + " ACK_UPLINK \n");
                break;

            case (byte)FrameType.RET:

                DisplayData(MessageType.Normal, DateTime.Now + " RET \n");
                WriteData(_currentMsg, FrameType.DAT, true);
                break;

            case (byte)FrameType.RET_DOWNLINK:

                LinkActive = false;
                DisplayData(MessageType.Normal, DateTime.Now + " RET_DOWNLINK \n");
                WriteData(null, FrameType.DOWNLINK, false);
                break;

            case (byte)FrameType.RET_LINKACITVE:

                LinkActive = false;
                DisplayData(MessageType.Normal, DateTime.Now + " RET_LINKACITVE \n");
                WriteData(null, FrameType.LINKACTIVE, false);
                break;

            case (byte)FrameType.RET_UPLINK:

                LinkActive = false;
                DisplayData(MessageType.Normal, DateTime.Now + " RET_UPLINK \n");
                WriteData(null, FrameType.UPLINK, false);
                break;

            case (byte)FrameType.LINKACTIVE:

                LinkActive = true;
                DisplayData(MessageType.Normal, DateTime.Now + " LINKACTIVE \n");
                WriteData(null, FrameType.ACK_LINKACTIVE, false);
                break;

            case (byte)FrameType.DAT:

                DisplayData(MessageType.Normal, DateTime.Now + " DAT \n");
                int    bytes     = comPort.BytesToRead;
                byte[] comBuffer = new byte[bytes];

                // записываем в массив данные от ком порта
                comPort.Read(comBuffer, 0, bytes);

                //отображаем информацию для пользователя
                var source     = ham.Decode(comBuffer);
                var decodedStr = "";
                if (source.Length != 0)
                {
                    decodedStr = Encoding.Unicode.GetString(source);
                }
                if (decodedStr == "")
                {
                    WriteData(null, FrameType.RET, false);                      //неуспешно приняли просим повторно
                }
                else
                {
                    WriteData(null, FrameType.ACK, false);    //успешно приняли отправляем квитанцию
                    DisplayData(MessageType.Incoming, user2 + " [ " + DateTime.Now + " ] \n" + decodedStr + "\n");
                }
                break;

            default:
                DisplayData(MessageType.Normal, DateTime.Now + " unknow frame \n");
                break;
            }
        }