コード例 #1
0
        public static void Init <TOTService>() where TOTService : IOTService
        {
            otServiceType = typeof(TOTService);

            List <Device> devices = new List <Device>();

            lock (_deviceConnectorLock)
            {
                try
                {
                    //http://161.27.206.191/HMIHub/api/SubscriptionHub/ServerConnect
                    string ipHub = ConfigurationManager.AppSettings["HubIp"];
                    _deviceConnector = new DeviceConnector("OTWeb", $"{ipHub}/HMIHub/api/");
                    _deviceConnector.OnClientConnectedMethod   += OnSmartWatchConnected;
                    _deviceConnector.OnClientReConnectedMethod += OnSmartWatchConnected;
                    _deviceConnector.OnMessageReceivedMethod   += OnSmartWatchAcknowledge;

                    _deviceConnector.Connect();
                    devices.AddRange(_deviceConnector.GetAllDevices().Where(kvp => kvp.Value.Connected).Select(kvp => kvp.Value));
                    StaticRepository.CheckRepository(ConfigurationManager.AppSettings["DataPath"], ConfigurationManager.AppSettings["DataFileName"]);
                }
                catch (Exception e)
                {
                    var x = e.Message;
                }
            }
            foreach (var device in devices)
            {
                //device.Username = "******";
                //device.Password = "******";
                OnSmartWatchConnected(device);
            }
        }
コード例 #2
0
        public static bool ApplyConfigurationConditions(Configuration configuration, DeviceConnector connector)
        {
            foreach (var service in configuration.Service)
            {
                Console.Write("\tCheck service: " + service.UUID + " ... ");
                if (!connector.ServiceList.Contains(service.UUID))
                {
                    Console.WriteLine("missing");
                    continue;
                }

                Console.WriteLine("present");

                foreach (var characteristic in service.Characteristic)
                {
                    Console.Write("\t\tCheck characteristic: " + characteristic.UUID + " ... ");
                    if (!connector.characteristicList.Contains(characteristic.UUID))
                    {
                        Console.WriteLine("missing");
                        continue;
                    }

                    if (characteristic.IsReadable.Equals("True"))
                    {
                        Task.Run(async() =>
                        {
                            await connector.RegisterCharacteristicDataHandler(new Guid(characteristic.UUID), CSV.OutputData.CsvDataWriter.WriteCharacteristicDataToFile);
                        }).GetAwaiter().GetResult();
                    }

                    Console.WriteLine("present");
                }
            }

            return(true);
        }
コード例 #3
0
    private static void Main(string[] args)
    {
        try
        {
            Console.WriteLine("Keka Universal Device Connector Test");
            Console.WriteLine("----------------------------------------------------------------\n");
            do
            {
                Console.WriteLine("Enter IP address of device");
                string ipAddress = Console.ReadLine();
                Console.WriteLine("Enter Machine Number of device");
                string machineNumber       = Console.ReadLine();
                int    port                = 4370;
                bool   isDeviceinLan       = pingDevice(ipAddress);
                string logFileName         = string.Format("Logs/LogFile-{0}.txt", DateTime.UtcNow.ToString("ddMMyyyy-HHmmss"));
                string userDetailsFileName = string.Format("Logs/UserDetailsLogFile-{0}.txt", DateTime.UtcNow.ToString("ddMMyyyy-HHmmss"));
                File.Create(logFileName).Close();
                StringBuilder sb = new StringBuilder();
                sb.AppendLine(DateTime.Now.ToString("dd MMM yyyy HH:mm:ss") + " | IP Address : " + ipAddress);
                sb.AppendLine(DateTime.Now.ToString("dd MMM yyyy HH:mm:ss") + " | Port : " + port);
                if (isDeviceinLan)
                {
                    try
                    {
                        List <LogData> logs = new DeviceConnector().TestESSLLogs(ipAddress, port, userDetailsFileName, int.Parse(machineNumber));
                        Console.WriteLine($"Writing logs into File - {logFileName}");
                        if (logs != null)
                        {
                            foreach (LogData log in logs)
                            {
                                sb.AppendLine($"{log.DeviceUserId} - {log.TimeStamp} - {log.Status}");
                            }
                        }
                        File.AppendAllText(logFileName, sb.ToString());
                        sb.Clear();
                    }
                    catch (Exception)
                    {
                        Console.WriteLine("Something went wrong");
                        sb.Clear();
                    }
                }
                else
                {
                    sb.AppendLine(DateTime.Now.ToString("dd MMM yyyy HH:mm:ss") + " | Unable to connect to device. ");
                    Console.WriteLine("Unable to ping biometric device at : " + ipAddress);
                    sb.AppendLine(DateTime.Now.ToString("dd MMM yyyy HH:mm:ss") + " | Report Generation Completed. ");
                    File.AppendAllText(logFileName, sb.ToString());
                    sb.Clear();
                }
                Console.WriteLine("# ---------------------Press 0 to exit--------------------- #");
            }while (int.Parse(Console.ReadLine()) != 0);
        }
        catch (Exception ex)
        {
            Console.WriteLine("Exception occured " + ex.Message + ex.StackTrace);
        }

        Console.WriteLine("Press any key to continue...");
        Console.ReadKey();
    }
コード例 #4
0
        private static void Main(string[] args)
        {
            var    options               = new Options();
            string macArgInput           = "";
            string inputDataFilePath     = "";
            string configurationFilePath = "";

            CommandLine.Parser.Default.ParseArguments <Options>(args).WithParsed <Options>(o =>
            {
                if (o.MacAddress != String.Empty)
                {
                    Console.WriteLine("MAC: {0}", o.MacAddress);
                    macArgInput = o.MacAddress;
                }
                else
                {
                    PrintWrongMacArgumentInfo();
                    Environment.Exit(-1);
                }

                if (!File.Exists(o.InputDataFilePath))
                {
                    PrintWrongInputFileArgumentInfo((o.InputDataFilePath));
                    Environment.Exit(-1);
                }
                else
                {
                    inputDataFilePath = o.InputDataFilePath;
                }

                if (!File.Exists(o.ConfigurationFilePath))
                {
                    PrintWrongInputFileArgumentInfo(o.ConfigurationFilePath);
                    Environment.Exit(-1);
                }
                else
                {
                    configurationFilePath = o.ConfigurationFilePath;
                }
            }
                                                                                           );

            watcher         = new DeviceWatcher();
            deviceConnector = new DeviceConnector();

            // Check MAC address
            string macRegex = @"^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$";
            Regex  regex    = new Regex(macRegex);

            if (regex.IsMatch(macArgInput))
            {
                macToFind = macArgInput;
                watcher.SetMacFilterString(macArgInput);
                watcher.DeviceFoundEvent += FoundDeviceEventHandler;
            }
            else
            {
                PrintWrongMacArgumentInfo();
                Environment.Exit(-1);
            }

            watcher.StartScanning();

            // Wait for connection
            while (!deviceConnector.IsDeviceFound())
            {
            }

            while (deviceConnector.ServiceList.Count == 0)
            {
                // Discover services and characteristics
                Task.Run(async() =>
                {
                    await deviceConnector.DiscoverServices();
                }).GetAwaiter().GetResult();
            }

            Console.WriteLine("Load configuration file");
            AppConf.Configuration configuration = AppConf.DeserializeXml("altlight_plug_conf.xml");
            bool checkResult = AppConf.ApplyConfigurationConditions(configuration, deviceConnector);

            Console.WriteLine("Check result: " + checkResult);

            Console.WriteLine("Load input data " + inputDataFilePath);
            CSV.InputData.InputDataParser inputDataParser = new CSV.InputData.InputDataParser();
            inputDataParser.OpenFile(inputDataFilePath);

            while (true)
            {
                CSV.InputData.InputDataEntry entry = inputDataParser.GetNextEntry();

                // If entry is null, then this must be end of file
                if (entry == null)
                {
                    break;
                }

                Console.WriteLine(entry);

                // Send data to specified uuid
                Task.Run(async() =>
                {
                    await deviceConnector.WriteDataToCharacteristic(entry.UUID, entry.DataToSend);
                }).GetAwaiter().GetResult();

                // Wait some time, TODO: Find the way to send data without losing it and not using fixed interval
                Task.Run(async() =>
                {
                    await Task.Delay(400);
                }).GetAwaiter().GetResult();
            }

            // Wait some time after sending last part of input data
            Task.Run(async() =>
            {
                await Task.Delay(1000);
            }).GetAwaiter().GetResult();

            // Flush received data to .csv files
            CSV.OutputData.CsvDataWriter.FlushDataToFiles();
        }