예제 #1
0
        static void Main(string[] args)
        {
            Program p = new Program();
            Random  r = new Random();

            p.ListPorts();
            var portname = p.GetPortName();


            //var channel = new SerialChannel<SimpleMessage>(
            //    portname,
            //    new ConsoleLogger(),
            //    new SimpleMessageSerialConverter(),
            //    new SimpleMessageSerialFinder(new SimpleMessageSerialConverter()));

            var channel = new SerialChannel <LineMessage>(
                portname,
                new ConsoleLogger(),
                new LineMessageSerialConverter(),
                new LineMessageSerialFinder(new LineMessageSerialConverter()));

            channel.MessageReceived += HandleIncomingMessageEvent;
            channel.Open();

            var key = Console.ReadKey();

            while (key.KeyChar != 'q')
            {
                switch (key.KeyChar)
                {
                case 's':
                    for (int i = 0; i < 20; i++)
                    {
                        Thread.Sleep(Math.Max((r.Next(1000) - 500), 0));
                        //channel.Send(new SimpleMessage() { Data = new byte[] { 65, (byte)(i), 66 } });
                        channel.Send(new LineMessage()
                        {
                            Data = $"Hello World {i}!"
                        });
                    }
                    break;

                case 'o':
                    channel.Open();
                    break;

                case 'c':
                    channel.Close();
                    break;
                }
                key = Console.ReadKey();
            }

            Console.ReadKey();
        }
예제 #2
0
        public void TestSPChannel()
        {
            BaseChannel tcp = new SerialChannel();

            Assert.AreEqual(tcp.Open(), true);
            Assert.AreEqual(tcp.GetState(), ChannelState.Opened);

            // 00 02 00 00 00 05 06 03 02 00 00

            byte[] a       = new byte[] { 0x0A, 0x03, 0x00, 0x00, 0x00, 0x06, 0x12, 0x34 };
            int    i       = 0;
            int    success = 0;

            while (true)
            {
                if (i == 100)
                {
                    return;
                }

                tcp.Write(a);
                byte[] buf = tcp.Read(256);
                success++;
                i++;
                Console.WriteLine(BitConverter.ToString(buf, 0).Replace("-", string.Empty).ToLower());
            }
        }