Beispiel #1
0
        private static async Task StartMonitor(IGpioStatePublisher monitor, CancellationToken cancellationToken)
        {
            Console.WriteLine($"Connecting to SignalR hub @ {hubUrl}");

            monitor.UpdateMilliseconds = 3000;
            foreach (int pin in pinList)
            {
                monitor.MonitorPin(pin);
            }
            await monitor.ConnectAsync(hubUrl);

            await monitor.StartMonitorAsync();

            await monitor.Connection.DisposeAsync();
        }
Beispiel #2
0
        public static void Main(string[] args)
        {
            var cancellationTokenSource = new CancellationTokenSource();
            IConfigurationRoot config   = new ConfigurationBuilder()
                                          .AddJsonFile("appsettings.json", true)
                                          .AddCommandLine(args)
                                          .Build();

            if (!String.IsNullOrWhiteSpace(config["hubUrl"]))
            {
                hubUrl = config["hubUrl"];
            }

            if (!String.IsNullOrWhiteSpace(config["pinList"]))
            {
                pinList = JsonConvert.DeserializeObject <List <int> >(config["pinList"]);
            }

            if (pinList.Count == 0)
            {
                for (int pin = 18; pin < 19; pin++)
                {
                    pinList.Add(pin);
                }
            }
            logger.LogInformation($"Configuration:");
            logger.LogInformation($"   hubUrl={hubUrl}");
            logger.LogInformation($"   pinList={String.Join(',', pinList)}");

            IGpioStatePublisher monitor = null;

            if (config["useMockPublisher"].ToLowerInvariant() == "true")
            {
                monitor = GpioPublisherFactory.Create <MockPublisher>(null, logger);
            }
            else
            {
                monitor = GpioPublisherFactory.Create <UnoSquarePublisher>(null, logger);
            }

            StartMonitor(monitor, cancellationTokenSource.Token).GetAwaiter().GetResult();
            Console.WriteLine("Press Enter to Exit ...");
            Console.ReadLine();
            cancellationTokenSource.Cancel();
        }