/// <summary> /// Initializes a new instance of the <see cref="Communication"/> class. /// </summary> /// <param name="communicationConfiguration"> /// The communication settings. /// </param> public Communication(string communicationConfiguration) { if (communicationConfiguration != string.Empty) { this.communicationSettings = new List <CommunicationSetting>(); string[] parts = communicationConfiguration.Split(';'); if (parts.Length > 2) { this.protocol = parts[0]; this.communicationDriverName = parts[1]; this.communicationHardwareName = parts[2]; } for (int counter = 3; counter < parts.Length; counter = counter + 2) { if (counter + 1 < parts.Length) { CommunicationSetting buffer = new CommunicationSetting(parts[counter], parts[counter + 1]); this.communicationSettings.Add(buffer); } else { CommunicationSetting buffer = new CommunicationSetting(parts[counter], string.Empty); this.communicationSettings.Add(buffer); } } } }
/// <summary> /// The Get Specific Setting function /// </summary> /// <param name="settingName">Setting to search for</param> /// <returns>Communication Settings object</returns> public CommunicationSetting GetSpecificSetting(string settingName) { bool foundInSettingNames = false; bool foundInSettingValues = false; CommunicationSetting returnValue = null; // Phase 1: search parameter name within names foreach (CommunicationSetting communicationSetting in this.CommunicationSettings) { if (communicationSetting.SettingName.Equals(settingName)) { foundInSettingNames = true; communicationSetting.IsValidlyConfigured = true; returnValue = communicationSetting; } } if (foundInSettingNames) { Log.Info(LogInfo.Namespace(MethodBase.GetCurrentMethod()), "Parameter [" + settingName + "] found on predefined location in Communication Settings string."); return(returnValue); } // Phase 2: search parameter names within values to check for a missconfiguration foreach (CommunicationSetting settingsForValue in this.CommunicationSettings) { if (settingsForValue.SettingValue.Equals(settingName)) { foundInSettingValues = true; settingsForValue.IsValidlyConfigured = false; returnValue = settingsForValue; } } if (foundInSettingValues) { Log.Error(LogInfo.Namespace(MethodBase.GetCurrentMethod()), "Parameter [" + settingName + "] found on wrong location in Communication Settings string. It was found on a place for Setting Value instead of a place or Setting Name."); return(returnValue); } Log.Info(LogInfo.Namespace(MethodBase.GetCurrentMethod()), "Not all paramaters have been configured by Communication Settings string."); return(null); }