using System; using System.Data; using System.IO; using System.Windows.Forms; using Microsoft.Win32; using System.Collections; using System.Runtime.InteropServices; using OTSModelSharp.ServiceCenter; namespace OTSSysMgrApp { public struct PostLogMsg { public int logLevel;//1 trace 2 debug 3info 4 warn 5 error 6 fatal [MarshalAs(UnmanagedType.ByValArray, SizeConst = (int)2000)] public char[] logMessage; }; public partial class OTSSystemManagerForms : Form { private PostLogMsg m_LogMsg; public const int MsgID = 0x0464; public const int LogMsgID = 0x0465; #region 全部变量声明 //获取XML 路径 static string xmlFilePath = string.Empty; //日志路径 static string XMLFileName = string.Empty; //设置日志路径 static NLog.Logger log = NLog.LogManager.GetCurrentClassLogger(); string SubKey = "OTSDevName"; //国际化 Language lan; //国际化存储信息 Hashtable table; #endregion #region 构造函数 public OTSSystemManagerForms() { try { //获取XML 路径 xmlFilePath = System.Configuration.ConfigurationManager.ConnectionStrings["XMLFilePath"].ConnectionString; XMLFileName = System.Configuration.ConfigurationManager.ConnectionStrings["XMLFileName"].ConnectionString; InitializeComponent(); } catch (Exception ex) { log.Error("OTSSystemManagerForms_OTSSystemManagerForms()--错误信息:"+ex.ToString()); } //国际化 lan = new Language(this); table = lan.GetNameTable(this.Name); rdb_ch.Checked = true; } private string GetString(char[] csStr) { int ilen = csStr.Length; string csName = new string(csStr); //MSTMsg.STMSampleStu.cSName csName.IndexOf('\0'); csName = csName.Substring(0, csName.IndexOf('\0')); return csName; } protected override void DefWndProc(ref Message m) { switch (m.Msg) { case LogMsgID: m_LogMsg = new PostLogMsg(); m_LogMsg = (PostLogMsg)Marshal.PtrToStructure(m.LParam, typeof(PostLogMsg)); var log = NLog.LogManager.GetCurrentClassLogger(); string s = GetString(m_LogMsg.logMessage); switch (m_LogMsg.logLevel) { case 1: log.Trace(s); break; case 2: log.Debug(s); break; case 3: log.Info(s); break; case 4: log.Warn(s); break; case 5: log.Error(s); break; case 6: log.Fatal(s); break; } break; default: base.DefWndProc(ref m); break; } } #endregion #region 保存设置 /// /// 保存设置 /// /// 节点名称 /// 节点参数值 public void SaveSetting(string Name, string Value) { try { //判断XML文件中是否存在 if (!XMLOperationClass.ExistsXmlInfo(Name)) { //调用添加XML节点功能 XMLOperationClass.AddXmlInfo(Name, Value); } else { //调用修改XML节点功能 XMLOperationClass.EditXmlInfo(Name, Value); } } catch (Exception ex) { //记录日志信息 log.Error(ex.Message.ToString()); } } #endregion #region 修改设置 public void EditSetting(string Name, string Value) { try { //调用修改XML节点功能 XMLOperationClass.EditXmlInfo(Name, Value); } catch (Exception ex) { //记录日志信息 log.Error(ex.Message.ToString()); } } #endregion #region 控件事件汇总 /// /// 打开SEM设置 /// /// /// private void btnSEMTest_Click(object sender, EventArgs e) { //实力窗口对象 SemTestForms sTextForms = new SemTestForms(); //判断窗口对话框返回值 sTextForms.ShowDialog(); } /// /// 窗口加载 /// /// /// private void OTSSystemManagerForms_Load(object sender, EventArgs e) { //获取下拉选项 ReadXMLFile(); string message = string.Empty; CmbEDSController.SelectedIndexChanged += new EventHandler(CmbEDSController_SelectedIndexChanged); try { tabHardwareSet.Parent = tabControl1; } catch (Exception) { } string str = Language.ReadDefaultLanguage(); switch (str) { case "ZH": rdb_ch.Checked = true; rdb_en.Checked = false; break; case "EN": rdb_ch.Checked = false; rdb_en.Checked = true; break; } coB_CleannessType.Items.Add("TCCleannessA"); coB_CleannessType.Items.Add("BatteryCleannessA"); this.coB_CleannessType.SelectedIndexChanged -= new System.EventHandler(this.coB_CleannessType_SelectedIndexChanged); coB_CleannessType.SelectedIndex=0; this.coB_CleannessType.SelectedIndexChanged += new System.EventHandler(this.coB_CleannessType_SelectedIndexChanged); ReadSysType(); } /// /// 将所有参数保存 /// /// /// private void btnDone_Click(object sender, EventArgs e) { try { //节点名称与节点参数值 string Name = string.Empty; string Value = string.Empty; //判断本地中是否存在文件路径 if (ExistsFile(xmlFilePath)) { //遍历tabHardwareSet标签中所有的ComboBox控件 foreach (Control control in this.tabHardwareSet.Controls) { //判断类型名称 if (control is ComboBox) { //获取节点名称与节点参数值 Name = (control as ComboBox).Name.Substring(2); Value = (control as ComboBox).Text; SaveSetting(Name, Value); } } } else { //如果文件不存在,则创建文件 CreateFile(xmlFilePath); } //关闭窗口 this.Close(); } catch (Exception ex) { log.Error(ex.Message.ToString()); } } private void btnEDSTest_Click(object sender, EventArgs e) { //实例窗口对象 ControllerSettingForm sTextForms = new ControllerSettingForm(); try { sTextForms.Show(); } catch (InvalidOperationException ex) { log.Error("OTSSystemManagerForms_btnEDSTest_Click-错误日志:"+ ex.ToString()); } } private void SaveSEMAndEDSController() { string EDSName = string.Empty; if (CmbEDSController.SelectedItem != null) { EDSName = CmbEDSController.SelectedItem.ToString(); } try { if (!WriteXMLFile(EDSName, EDSName)) { log.Error("SaveSelectVersionInfo()--错误日志:请检查HardwareConfig.xml确保Value为值标签!"); } } catch (Exception ex) { log.Error("SaveSelectVersionInfo()--错误日志:" + ex.ToString() + ""); } } private void ReadXMLFile() { string xmlSEMName = string.Empty; string xmlEDSName = string.Empty; bool result = XMLOperationClass.ReadXMLFile(XMLFileName, ref xmlSEMName, ref xmlEDSName); if (result) { if (xmlEDSName != "") { CmbEDSController.SelectedItem = xmlEDSName.ToString(); } else { try { CmbEDSController.SelectedItem = CmbEDSController.Items[0].ToString();// "Genesis"; } catch (Exception) { throw; } } } else { CmbEDSController.SelectedItem = CmbEDSController.Items[0].ToString(); } } private bool WriteXMLFile(string xmlSEMName, string xmlEDSName) { try { return XMLOperationClass.WriteXMLFile(XMLFileName, xmlSEMName, xmlEDSName); } catch (Exception) { return false; } } private void ReadSysType() { string path = Application.StartupPath + @"\Config\SysData\OTSProgMgrParam.pmf"; string Type = ""; bool result = XMLOperationClass.ReadSysType(path, "SysType", ref Type); if (result) { this.radioButton_IncA.CheckedChanged -= new System.EventHandler(this.radioButton_IncA_CheckedChanged); if (Type == "IncA") { radioButton_IncA.Checked = true; } else { radioButton_CleannessA.Checked = true; this.coB_CleannessType.SelectedIndexChanged -= new System.EventHandler(this.coB_CleannessType_SelectedIndexChanged); if (Type == "TCCleannessA") { coB_CleannessType.SelectedIndex = 0; } else if(Type == "BatteryCleannessA") { coB_CleannessType.SelectedIndex = 1; } this.coB_CleannessType.SelectedIndexChanged += new System.EventHandler(this.coB_CleannessType_SelectedIndexChanged); } this.radioButton_IncA.CheckedChanged += new System.EventHandler(this.radioButton_IncA_CheckedChanged); } } private bool ChangeSysType() { SwitchSystemValidation switchSystemValidation = new SwitchSystemValidation(); DialogResult dialogResult = switchSystemValidation.ShowDialog(); if (dialogResult == DialogResult.OK) { if (!switchSystemValidation.GetUpdateFile()) { WriteSysType(); return true; } else { string sourceFilepath = Application.StartupPath + @"\Config\ConfigTemplate"; if (radioButton_IncA.Checked) { sourceFilepath += "\\IncA"; } else if (radioButton_CleannessA.Checked) { if (coB_CleannessType.SelectedItem.ToString() == "TCCleannessA") { sourceFilepath += "\\CleannessA"; } else { sourceFilepath += "\\BatteryCleannessA"; } } var files = Directory.GetFiles(sourceFilepath); foreach (var file in files) { string tagretFile = Application.StartupPath + @"\Config"; var fileInfo = new FileInfo(file); if (fileInfo.Name == "ReportTemplateConfig.xml") { tagretFile += "\\ReportTemplate"; } else { tagretFile += "\\SysData"; } fileInfo.CopyTo(tagretFile + "\\" + fileInfo.Name, true); } WriteSysType(); MessageBox.Show("Configure successful!", "Tip"); return true; } } return false; } private void GetSEMAndEDSController() { string xmlNodeEDS = XMLOperationClass.GetXMLInformations("EDSName"); if (xmlNodeEDS != null) { CmbEDSController.SelectedItem = xmlNodeEDS.ToString(); } } private void GetRegistData() { try { string SEMRegistData = string.Empty; string EDSRegistData = string.Empty; RegistryKey hkml = Registry.LocalMachine; RegistryKey software = hkml.OpenSubKey("SOFTWARE", true); RegistryKey aimdir = software.OpenSubKey(SubKey, true); if (aimdir != null) { if (IsRegeditExit("EDSName")) { EDSRegistData = aimdir.GetValue("EDSName").ToString(); CmbEDSController.SelectedItem = EDSRegistData.ToString(); } } } catch (Exception) { //MessageBox.Show("读取失败,请以管理员身份运行!"); return; } } private bool WTRegedit(string name, string tovalue) { try { RegistryKey hklm = Registry.LocalMachine; RegistryKey software = hklm.OpenSubKey("SOFTWARE", true); RegistryKey aimdir = software.CreateSubKey(SubKey); aimdir.SetValue(name, tovalue); return true; } catch (Exception) { //MessageBox.Show("写入失败,请以管理员身份运行!"); return false; } } private bool IsRegeditExit(string name) { try { bool _exit = false; string[] valueNames; RegistryKey hkml = Registry.LocalMachine; RegistryKey software = hkml.OpenSubKey("SOFTWARE", true); RegistryKey aimdir = software.OpenSubKey(SubKey, true); valueNames = aimdir.GetValueNames(); foreach (string keyName in valueNames) { if (keyName == name) { _exit = true; return _exit; } } return _exit; } catch (Exception ex) { MessageBox.Show("IsRegeditExit:" + ex.ToString()); return false; } } #endregion #region 判断文件路径 /// /// 判断文件路径 /// /// /// public bool CreateFile(string path) { Directory.CreateDirectory(path); return false; } #endregion #region 判断文件是否存在 /// /// 判断文件是否存在 /// /// 文件路径 /// public bool ExistsFile(string path) { try { if (File.Exists(path)) { return true; } return false; } catch (Exception ex) { //记录日志文件 log.Error(ex.Message.ToString()); return false; } } #endregion private void OTSSystemManagerForms_FormClosing(object sender, FormClosingEventArgs e) { var m_SemHardwareMgr = SemController.GetSEMController(); m_SemHardwareMgr.DisConnect(); } private void lnklab_about_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { //打开关于窗体,显示版本号等信息 About a = new About(); a.ShowDialog(); } private void rdb_ch_CheckedChanged(object sender, EventArgs e) { if (rdb_ch.Checked == true) { rdb_en.Checked = false; WriteDefaultLanguage("ZH"); //国际化 Language lan1 = new Language(this); } else { rdb_en.Checked = true; WriteDefaultLanguage("EN"); //国际化 Language lan1 = new Language(this); } } private void rdb_en_CheckedChanged(object sender, EventArgs e) { if (rdb_en.Checked == true) { rdb_ch.Checked = false; WriteDefaultLanguage("EN"); //国际化 Language lan1 = new Language(this); } else { rdb_ch.Checked = true; WriteDefaultLanguage("ZH"); //国际化 Language lan1 = new Language(this); } } private void rdb_ch_Click(object sender, EventArgs e) { rdb_en.Checked = false; WriteDefaultLanguage("ZH"); //国际化 Language lan1 = new Language(this); } private void rdb_en_Click(object sender, EventArgs e) { rdb_ch.Checked = false; WriteDefaultLanguage("EN"); //国际化 Language lan1 = new Language(this); } private void CmbSEMController_SelectedIndexChanged(object sender, EventArgs e) { SaveSEMAndEDSController(); } private void CmbEDSController_SelectedIndexChanged(object sender, EventArgs e) { SaveSEMAndEDSController(); } //修改默认语言 public static void WriteDefaultLanguage(string lang) { DataSet ds = new DataSet(); ds.ReadXml(System.Windows.Forms.Application.StartupPath + @"/Resources/XMLData/LanguageDefine.xml"); DataTable dt = ds.Tables["Language"]; dt.Rows[0]["DefaultLanguage"] = lang; ds.AcceptChanges(); ds.WriteXml(System.Windows.Forms.Application.StartupPath + @"/Resources/XMLData/LanguageDefine.xml"); } private void btn_ok_Click(object sender, EventArgs e) { //CopyConfigBySysType(); } private void radioButton_IncA_CheckedChanged(object sender, EventArgs e) { bool r = radioButton_IncA.Checked; if (!ChangeSysType()) { this.radioButton_IncA.CheckedChanged -= new System.EventHandler(this.radioButton_IncA_CheckedChanged); radioButton_CleannessA.Checked = r; radioButton_IncA.Checked = !r; this.radioButton_IncA.CheckedChanged += new System.EventHandler(this.radioButton_IncA_CheckedChanged); } } private void coB_CleannessType_SelectedIndexChanged(object sender, EventArgs e) { if(radioButton_CleannessA.Checked) { this.radioButton_IncA.CheckedChanged -= new System.EventHandler(this.radioButton_IncA_CheckedChanged); ChangeSysType(); this.radioButton_IncA.CheckedChanged += new System.EventHandler(this.radioButton_IncA_CheckedChanged); } } private void WriteSysType() { string path = Application.StartupPath + @"\Config\SysData\OTSProgMgrParam.pmf"; string Type = ""; if (radioButton_IncA.Checked) { Type = "IncA"; } else if (radioButton_CleannessA.Checked) { if (coB_CleannessType.SelectedItem.ToString() == "TCCleannessA") { Type = "TCCleannessA"; } else { Type = "BatteryCleannessA"; } } bool result = XMLOperationClass.WriteSysType(path, "SysType", Type); string path2 = Application.StartupPath + @"\Config\SysData\OTSReportMgrParam.rpf"; bool resultreport = XMLOperationClass.WriteSysType(path2, "systype", Type); } private void btn_otherconfig_Click(object sender, EventArgs e) { string filepath = @".\Config\ProData\HardwareConfig.xml"; if(File.Exists(filepath)) { System.Diagnostics.Process.Start("notepad.exe", filepath); } else { MessageBox.Show("File is lost!"); } } } }