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!");
}
}
}
}