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()); } }
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(); }
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); }
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(); }