コード例 #1
0
ファイル: ChannelTest.cs プロジェクト: mscc888/Collector
        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());
            }
        }
コード例 #2
0
        static void Main(string[] args)
        {
            /*
             * _logConsoleYellow = new RelayLoggerWithStackTrace(
             *  new RelayLogger(new ColoredConsoleLogger(ConsoleColor.Yellow, ConsoleColor.Black),
             *      new ChainedFormatter(new List<ITextFormatter>
             *      {
             *          new ThreadFormatter(LogSeporator, true, false, false), new DateTimeFormatter(LogSeporator)
             *      })),
             *  new StackTraceFormatterWithNullSuport(LogSeporator, NoStackInfoText));
             */

            var argPortName = args.First(a => a.StartsWith(ArgStartPortName)).Split(':')[1];
            var argBaudRate = int.Parse(args.First(a => a.StartsWith(ArgStartBaudRate)).Split(':')[1]);

            var psnConfig = new PsnProtocolConfigurationLoaderFromXml(Path.Combine(Environment.CurrentDirectory, "psn.S2G-climatic-interior.xml")).LoadConfiguration();

            var serialPortContainer = new SerialPortContainerReal(argPortName, argBaudRate);
            var sch = new SerialChannel(
                new CommandPartSearcherPsnConfigBasedFast(psnConfig) /*, _logConsoleYellow*/);

            sch.CommandHeared += SchOnCommandHeared;
            sch.SelectPortAsync(serialPortContainer, null);
            //Thread.Sleep(5000);
            //sch.SelectPortAsync("COM2");
            //Thread.Sleep(5000);

            Console.ReadKey();
            sch.CloseCurrentPortAsync(null);
            sch.StopWork();
            Console.ReadKey();
        }
コード例 #3
0
        private async Task InitSoccerBot()
        {
            var hostNames    = NetworkInformation.GetHostNames();
            var computerName = hostNames.FirstOrDefault(name => name.Type == HostNameType.DomainName)?.DisplayName ?? "???";



            var pin = await LagoVista.Core.PlatformSupport.Services.Storage.GetKVPAsync <string>("PIN");

            if (String.IsNullOrEmpty(pin))
            {
                var rnd = new Random();
                pin = rnd.Next(1000, 9999).ToString();
                await LagoVista.Core.PlatformSupport.Services.Storage.StoreKVP("PIN", pin);
            }

            Debug.Write("========================================");
            Debug.Write("NOTE: NOTE: NOTE: Your PIN is: " + pin);
            Debug.Write("========================================");

            _logger = new Loggers.DebugLogger();

            switch (AnalyticsInfo.VersionInfo.DeviceFamily)
            {
            case "Windows.IoT":
                var ports = (await LagoVista.Core.PlatformSupport.Services.DeviceManager.GetSerialPortsAsync());
                if (ports.Count == 0)
                {
                    throw new Exception("Could not find any serial ports, a serial port is required.");
                }
                else if (ports.Count > 1)
                {
                    throw new Exception("Found more than one serial port, please add additional logic to select the serial port the mBot is connected to.");
                }

                var serialPortChannel = new SerialChannel(ports.First().Id, _logger);
                await serialPortChannel.ConnectAsync();

                _soccerBot     = new mBlockSoccerBot(serialPortChannel, _logger, pin);
                _sensorManager = new SensorManager();
                await _sensorManager.InitAsync();

                _sensorManager.Start();

                Managers.ConnectionManager.Instance.MakeDiscoverable(computerName);
                break;

            case "Windows.Desktop":
                _soccerBot = new SimulatedSoccerBot();

                break;
            }

            Managers.ConnectionManager.Instance.Init(_soccerBot, _logger);
            Managers.ConnectionManager.Instance.StartWebServer(80, computerName);
            Managers.ConnectionManager.Instance.StartTCPServer(9000, _soccerBot, _sensorManager);
        }
コード例 #4
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();
        }