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