public static void New_Config() { /// 1.0.9.14 if (XDS != null) { XDS.Dispose(); XDS = null; GC.Collect(); } XDS = new DataSet(DS_CONFIG); XDS.Tables.Add(Sensor.New_CfgTable()); XDS.AcceptChanges(); XDS.Tables.Add(ComPorts.New_CfgTable()); XDS.AcceptChanges(); DataTable t2 = new DataTable(T_TERMINAL); t2.Columns.Add(new DataColumn(C_TERM_MAXLINES, Type.GetType(SYS_INT32))); t2.Columns[C_TERM_MAXLINES].DefaultValue = DEF_TERM_MAXLINES; t2.Columns.Add(new DataColumn(C_TERM_TIMERINTERVAL, Type.GetType(SYS_INT32))); t2.Columns[C_TERM_TIMERINTERVAL].DefaultValue = DEF_TERM_TIMERINTERVAL; t2.Columns.Add(new DataColumn(C_TERMLOG_ENABLE, Type.GetType(SYS_BOOLEAN))); t2.Columns[C_TERMLOG_ENABLE].DefaultValue = DEF_TERMLOG_ENABLE; t2.Columns.Add(new DataColumn(C_DATALOG_ENABLE, Type.GetType(SYS_BOOLEAN))); t2.Columns[C_DATALOG_ENABLE].DefaultValue = DEF_DATALOG_ENABLE; t2.Columns.Add(new DataColumn(C_DATALOG_FOLDER, Type.GetType(SYS_STRING))); t2.Columns[C_DATALOG_FOLDER].DefaultValue = DEF_DATALOG_FOLDER; t2.Columns.Add(new DataColumn(C_DATALOG_FILEINTERVAL, Type.GetType(SYS_INT32))); t2.Columns[C_DATALOG_FILEINTERVAL].DefaultValue = DEF_DATALOG_FILEINTERVAL; t2.Columns.Add(new DataColumn(C_DATALOG_FILENAMEFORMAT, Type.GetType(SYS_STRING))); t2.Columns[C_DATALOG_FILENAMEFORMAT].DefaultValue = DEF_DATALOG_FILENAMEFORMAT; t2.Columns.Add(new DataColumn(C_DATAPURGE_TIMERINTERVAL, Type.GetType(SYS_INT32))); t2.Columns[C_DATAPURGE_TIMERINTERVAL].DefaultValue = DEF_DATAPURGE_TIMERINTERVAL; t2.Rows.Add(t2.NewRow()); t2.AcceptChanges(); XDS.Tables.Add(t2); XDS.AcceptChanges(); DataTable t3 = new DataTable(T_DISPLAY); t3.Columns.Add(new DataColumn(C_DISPLAY_TIMERINTERVAL, Type.GetType(SYS_INT32))); t3.Columns[C_DISPLAY_TIMERINTERVAL].DefaultValue = DEF_DISPLAY_TIMERINTERVAL; t3.Columns.Add(new DataColumn(C_DISPLAY_LIVEHIST, Type.GetType(SYS_INT32))); t3.Columns[C_DISPLAY_LIVEHIST].DefaultValue = DEF_DISPLAY_LIVEHIST; t3.Columns.Add(new DataColumn(C_HZCHART_SCALE, Type.GetType(SYS_INT32))); t3.Columns[C_HZCHART_SCALE].DefaultValue = DEF_HZCHART_SCALE; t3.Columns.Add(new DataColumn(C_HZCHART_ADJUST, Type.GetType(SYS_SINGLE))); t3.Columns[C_HZCHART_ADJUST].DefaultValue = DEF_HZCHART_ADJUST; t3.Columns.Add(new DataColumn(C_HZSPECT_SCALE, Type.GetType(SYS_SINGLE))); t3.Columns[C_HZSPECT_SCALE].DefaultValue = DEF_HZSPECT_SCALE; t3.Rows.Add(t3.NewRow()); t3.AcceptChanges(); XDS.Tables.Add(t3); XDS.AcceptChanges(); DataTable t4 = new DataTable(T_PREFERENCES); t4.Columns.Add(new DataColumn(C_APP_VER, Type.GetType(SYS_STRING))); t4.Columns[C_APP_VER].DefaultValue = APP_VER; t4.Columns.Add(new DataColumn(C_STATUS_TIMERINTERVAL, Type.GetType(SYS_INT32))); t4.Columns[C_STATUS_TIMERINTERVAL].DefaultValue = DEF_STATUS_TIMERINTERVAL; t4.Columns.Add(new DataColumn(C_DATE_FORMATSTRING, Type.GetType(SYS_STRING))); t4.Columns[C_DATE_FORMATSTRING].DefaultValue = DEF_DATE_FORMATSTRING; t4.Rows.Add(t4.NewRow()); t4.AcceptChanges(); XDS.Tables.Add(t4); XDS.AcceptChanges(); DataTable t5 = new DataTable(T_ACCOUNT); t5.Columns.Add(new DataColumn(C_ACCOUNT_ID, Type.GetType(SYS_INT64))); t5.Columns[C_ACCOUNT_ID].DefaultValue = DEF_ACCOUNT_ID; t5.Columns.Add(new DataColumn(C_ACCOUNT_EMAIL, Type.GetType(SYS_STRING))); t5.Columns[C_ACCOUNT_EMAIL].DefaultValue = ""; t5.Columns.Add(new DataColumn(C_ACCOUNT_PSWD, Type.GetType(SYS_STRING))); t5.Columns[C_ACCOUNT_PSWD].DefaultValue = ""; t5.Rows.Add(t5.NewRow()); t5.AcceptChanges(); XDS.Tables.Add(t5); XDS.AcceptChanges(); // Remove the old Configuration file if (File.Exists(File_Path)) { try { File.Delete(File_Path); } catch (Exception ex) { Log.Err(ex, "Sensor, New_Config", "Error Deleting Old Config File: " + File_Path, Log.LogDevice.LOG_DLG); } } // Create a new Default Configuration file try { XDS.WriteXml(File_Path, XmlWriteMode.WriteSchema); } catch (Exception ex) { Log.Err(ex, "Sensor, New_Config", "Error Creating New Config File: " + File_Path, Log.LogDevice.LOG_DLG); } // Note: If we fail to Delete the Old Config or Save a New Config, we now have the Default Configuration anyway. }
public static string Load() { /// Load the Sensor Configuration string sResult = ""; try { // Clear any existing configuration if (XDS != null) { XDS.Dispose(); XDS = null; GC.Collect(); } if (File.Exists(File_Path)) { // Read the configuration DataSet from disk XDS = new DataSet(DS_CONFIG); XDS.ReadXml(File_Path, XmlReadMode.Auto); } } catch (Exception ex) { if (XDS != null) { XDS.Dispose(); XDS = null; GC.Collect(); } sResult = "Error Reading Config File: " + File_Path; Log.Err(ex, "Sensor, Load_Config", sResult, Log.LogDevice.LOG_DLG); } /// Check the Version try { if (XDS == null) { New_Config(); sResult = "New Configuration Loaded"; } else { try { if ((XDS.Tables.Count > 1) && (XDS.Tables[T_PREFERENCES].Rows.Count == 1) && (XDS.Tables[T_PREFERENCES].Rows[0][C_APP_VER].ToString() == APP_VER) && (XDS.Tables[Sensor.T_SENSOR].Rows.Count == 1) && (XDS.Tables[ComPorts.T_PORT1].Rows.Count == 1) && (Convert.ToUInt16(XDS.Tables[Sensor.T_SENSOR].Rows[0][Sensor.C_SENSOR_VER]) == Sensor.Sensor_Ver)) { // Probably a good current Configuration! sResult = "Configuration Loaded"; Log.Info("Sensor, Load_Config", sResult + ": " + File_Path, Log.LogDevice.LOG); } else { // Invalid Configuration sResult = "Unrecognized Configuration or Upgrade Required. Creating a New Configuration Version " + APP_VER; Log.Info("Sensor, Load_Config", sResult + ": " + File_Path, Log.LogDevice.LOG); New_Config(); } } catch (Exception ex) { Log.Err(ex, "Cfg.", "Load()", Log.LogDevice.LOG_DLG); New_Config(); } } Sensor.Load_Config(); ComPorts.Load_Config(); m_Date_FormatString = XDS.Tables[T_PREFERENCES].Rows[0][C_DATE_FORMATSTRING].ToString(); m_Status_TimerInterval = Convert.ToInt32(XDS.Tables[T_PREFERENCES].Rows[0][C_STATUS_TIMERINTERVAL]); m_Term_MaxLines = Convert.ToInt32(XDS.Tables[T_TERMINAL].Rows[0][C_TERM_MAXLINES]); m_Term_TimerInterval = Convert.ToInt32(XDS.Tables[T_TERMINAL].Rows[0][C_TERM_TIMERINTERVAL]); m_TermLog_Enable = Convert.ToBoolean(XDS.Tables[T_TERMINAL].Rows[0][C_TERMLOG_ENABLE]); m_DataLog_Enable = Convert.ToBoolean(XDS.Tables[T_TERMINAL].Rows[0][C_DATALOG_ENABLE]); m_DataLog_FileInterval = Convert.ToInt32(XDS.Tables[T_TERMINAL].Rows[0][C_DATALOG_FILEINTERVAL]); m_DataLog_FileNameFormat = XDS.Tables[T_TERMINAL].Rows[0][C_DATALOG_FILENAMEFORMAT].ToString(); m_DataPurge_TimerInterval = Convert.ToInt32(XDS.Tables[T_TERMINAL].Rows[0][C_DATAPURGE_TIMERINTERVAL]); m_Display_TimerInterval = Convert.ToInt32(XDS.Tables[T_DISPLAY].Rows[0][C_DISPLAY_TIMERINTERVAL]); m_Display_LiveHist = Convert.ToInt32(XDS.Tables[T_DISPLAY].Rows[0][C_DISPLAY_LIVEHIST]); m_HzChart_Scale = Convert.ToInt32(XDS.Tables[T_DISPLAY].Rows[0][C_HZCHART_SCALE]); m_HzChart_Adjust = Convert.ToSingle(XDS.Tables[T_DISPLAY].Rows[0][C_HZCHART_ADJUST]); m_HzSpect_Scale = Convert.ToSingle(XDS.Tables[T_DISPLAY].Rows[0][C_HZSPECT_SCALE]); m_DataLog_Folder = XDS.Tables[T_TERMINAL].Rows[0][C_DATALOG_FOLDER].ToString(); if (!Directory.Exists(m_DataLog_Folder)) { try { Directory.CreateDirectory(m_DataLog_Folder); } catch (Exception ex) { Log.Err(ex, "Cfg, New_Config", "Error Creating Data Logging Folder: " + m_DataLog_Folder, Log.LogDevice.LOG_DLG); } } m_Account_Id = Convert.ToInt64(XDS.Tables[T_ACCOUNT].Rows[0][C_ACCOUNT_ID]); m_Account_EMail = XDS.Tables[T_ACCOUNT].Rows[0][C_ACCOUNT_EMAIL].ToString(); m_Account_Pswd = XDS.Tables[T_ACCOUNT].Rows[0][C_ACCOUNT_PSWD].ToString(); } catch (Exception ex) { sResult = "Error Loading Configuration File: " + File_Path; Log.Err(ex, "Cfg, Load_Config", sResult, Log.LogDevice.LOG_DLG); } return(sResult); }