using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Net; using System.Windows.Forms; using StandardLibrary; namespace MainForm { public delegate void SystemSetMessageHandler(LogType logType, string message); public partial class Form_SystemSet : Form { private string FilePath = AppDomain.CurrentDomain.BaseDirectory + "Config.ini"; public event SystemSetMessageHandler MessageEvent; private string currentRole = ""; #region 窗体事件 public Form_SystemSet() { InitializeComponent(); } private void Form_SystemSet_Load(object sender, EventArgs e) { // 产品 txtProject_code.Text = IniFile.INIGetStringValue(FilePath, "Product", "ProjectCode", ""); // 项⽬编码 txtFactory_Code.Text = IniFile.INIGetStringValue(FilePath, "Product", "FactoryCode", ""); // ⼯⼚Id txtProcess_Section_Code.Text = IniFile.INIGetStringValue(FilePath, "Product", "ProcessSectionCode", ""); // ⼯段编码 textBoxLineCode.Text = IniFile.INIGetStringValue(FilePath, "Product", "LineCode", ""); // 线体编码 textBoxLineName.Text = IniFile.INIGetStringValue(FilePath, "Product", "LineName", ""); // 线体名称 txtProgramName.Text = IniFile.INIGetStringValue(FilePath, "Product", "ProgramName", ""); // 程序名称 // MES API配置 chkIsUseMes.Checked = bool.Parse(IniFile.INIGetStringValue(FilePath, "MES", "IsUseMES", "False")); textBoxServerHost.Text = IniFile.INIGetStringValue(FilePath, "MES", "ServerHost", GlobalContext.ConstServerHost); cbSendStationIn.Checked = bool.Parse(IniFile.INIGetStringValue(FilePath, "MES", "IsSendStationIn", GlobalContext.ConstIsSend)); cbSendProcessData.Checked = bool.Parse(IniFile.INIGetStringValue(FilePath, "MES", "IsSendProcessData", GlobalContext.ConstIsSend)); cbSendCheckOneData.Checked = bool.Parse(IniFile.INIGetStringValue(FilePath, "MES", "IsSendCheckOneData", GlobalContext.ConstIsSend)); cbSendWorkingData.Checked = bool.Parse(IniFile.INIGetStringValue(FilePath, "MES", "IsSendWorkingData", GlobalContext.ConstIsSend)); cbSendAlarmData.Checked = bool.Parse(IniFile.INIGetStringValue(FilePath, "MES", "IsSendAlarmData", GlobalContext.ConstIsSend)); chkIsUseMESRoute.Checked = bool.Parse(IniFile.INIGetStringValue(FilePath, "MES", "IsUseMESRoute", GlobalContext.ConstIsSend)); // 启用MES边线(RouteCommunication.dll) // MQTT配置 chkIsUseIot.Checked = bool.Parse(IniFile.INIGetStringValue(FilePath, "MQTT", "IsUseIot", "False")); txtMqttIP.Text = IniFile.INIGetStringValue(FilePath, "MQTT", "MQTTServerHost", "127.0.0.1"); numMqttPort.Text = IniFile.INIGetStringValue(FilePath, "MQTT", "MQTTServerPort", "0"); chkMqttPassStation.Checked = bool.Parse(IniFile.INIGetStringValue(FilePath, "MQTT", "IsMqttSendProcessData", GlobalContext.ConstIsSend)); // 上传过站数据 chkMqttDeviceState.Checked = bool.Parse(IniFile.INIGetStringValue(FilePath, "MQTT", "IsMqttDeviceState", GlobalContext.ConstIsSend)); // 上传设备状态 chkMqttFaultLog.Checked = bool.Parse(IniFile.INIGetStringValue(FilePath, "MQTT", "IsMqttFaultLog", GlobalContext.ConstIsSend)); // 上传故障⽇志 chkMqttSensorData.Checked = bool.Parse(IniFile.INIGetStringValue(FilePath, "MQTT", "IsMqttSensorData", GlobalContext.ConstIsSend)); // 上传传感器数据 chkMqttStationInputBegin.Checked = bool.Parse(IniFile.INIGetStringValue(FilePath, "MQTT", "IsMqttStationInputBegin", GlobalContext.ConstIsSend)); ; // 上传节拍⽇志 chkMqttOperateLog.Checked = bool.Parse(IniFile.INIGetStringValue(FilePath, "MQTT", "IsMqttOperateLog", GlobalContext.ConstIsSend)); // 上传操作记录 chkMqttEquiConfig.Checked = bool.Parse(IniFile.INIGetStringValue(FilePath, "MQTT", "IsMqttEquiConfig", GlobalContext.ConstIsSend)); // 上传装备配置 chkMqttProcConfig.Checked = bool.Parse(IniFile.INIGetStringValue(FilePath, "MQTT", "IsMqttProcConfig", GlobalContext.ConstIsSend)); // 上传⼯艺配置 // AGV配置 chkIsUseAGV.Checked = bool.Parse(IniFile.INIGetStringValue(FilePath, "AGV", "IsUseAGV", "False")); // 是否 启用AGV txtAGVHttpIP.Text = IniFile.INIGetStringValue(FilePath, "AGV", "AGVHttpHost", ""); // Http IP地址 txtAGVMQTTIP.Text = IniFile.INIGetStringValue(FilePath, "AGV", "AGVMQTTHost", ""); // MQTT IP地址 numAGVMQTTPort.Text = IniFile.INIGetStringValue(FilePath, "AGV", "AGVMQTTPort", ""); // MQTT端口 txtTPortCode.Text = IniFile.INIGetStringValue(FilePath, "AGV", "AGVMQTTDeviceCode", ""); // MQTT PortCode // 机器IP配置 bool boolS1 = bool.Parse(IniFile.INIGetStringValue(FilePath, "Machine", "IsUsePLC1", "false")); bool boolS2 = bool.Parse(IniFile.INIGetStringValue(FilePath, "Machine", "IsUsePLC2", "false")); bool boolS3 = bool.Parse(IniFile.INIGetStringValue(FilePath, "Machine", "IsUsePLC3", "false")); bool boolS4 = bool.Parse(IniFile.INIGetStringValue(FilePath, "Machine", "IsUsePLC4", "false")); bool boolS5 = bool.Parse(IniFile.INIGetStringValue(FilePath, "Machine", "IsUsePLC5", "false")); rdbS1.Checked = boolS1; rdbS2.Checked = boolS2; rdbS3.Checked = boolS3; rdbS4.Checked = boolS4; rdbS5.Checked = boolS5; txtPLCAddress1.Text = IniFile.INIGetStringValue(FilePath, "Machine", "Machine1Address", GlobalContext.ConstMachine1Address); txtPLCAddress2.Text = IniFile.INIGetStringValue(FilePath, "Machine", "Machine2Address", GlobalContext.ConstMachine2Address); txtPLCAddress3.Text = IniFile.INIGetStringValue(FilePath, "Machine", "Machine3Address", GlobalContext.ConstMachine3Address); txtPLCAddress4.Text = IniFile.INIGetStringValue(FilePath, "Machine", "Machine4Address", GlobalContext.ConstMachine4Address); txtPLCAddress5.Text = IniFile.INIGetStringValue(FilePath, "Machine", "Machine5Address", GlobalContext.ConstMachine5Address); numPLCPort.Value = int.Parse(IniFile.INIGetStringValue(FilePath, "Machine", "MachinePort", "0")); // 产品2 if (boolS1) { txtWorkStation.Text = IniFile.INIGetStringValue(FilePath, "Station", "s1_work_station", ""); txtDeviceCode.Text = IniFile.INIGetStringValue(FilePath, "Station", "s1_device_code", ""); txtStation.Text = IniFile.INIGetStringValue(FilePath, "Station", "s1_station", ""); } else if (boolS2) { txtWorkStation.Text = IniFile.INIGetStringValue(FilePath, "Station", "s2_work_station", ""); txtDeviceCode.Text = IniFile.INIGetStringValue(FilePath, "Station", "s2_device_code", ""); txtStation.Text = IniFile.INIGetStringValue(FilePath, "Station", "s3_station", ""); } else if (boolS3) { txtWorkStation.Text = IniFile.INIGetStringValue(FilePath, "Station", "s3_work_station", ""); txtDeviceCode.Text = IniFile.INIGetStringValue(FilePath, "Station", "s3_device_code", ""); txtStation.Text = IniFile.INIGetStringValue(FilePath, "Station", "s3_station", ""); } else if (boolS4) { txtWorkStation.Text = IniFile.INIGetStringValue(FilePath, "Station", "s4_work_station", ""); txtDeviceCode.Text = IniFile.INIGetStringValue(FilePath, "Station", "s4_device_code", ""); txtStation.Text = IniFile.INIGetStringValue(FilePath, "Station", "s4_station", ""); } else if (boolS5) { txtWorkStation.Text = IniFile.INIGetStringValue(FilePath, "Station", "s5_work_station", ""); txtDeviceCode.Text = IniFile.INIGetStringValue(FilePath, "Station", "s5_device_code", ""); txtStation.Text = IniFile.INIGetStringValue(FilePath, "Station", "s5_station", ""); } } #endregion 窗体事件 /// /// 改变用户时更新页面 /// /// public void ForUserChangeToUpdate(User user) { currentRole = user.ToString(); //switch (user.ToString()) //{ // case "Operator": // groupBox2.Enabled = false; // groupBox3.Enabled = false; // break; // case "Admin": // groupBox2.Enabled = true; // groupBox3.Enabled = false; // break; // case "SuperAdmin": // groupBox2.Enabled = true; // groupBox3.Enabled = true; // break; // default: // groupBox2.Enabled = true; // groupBox3.Enabled = true; // break; //} } /// /// 保存产线信息 /// private void buttonConfirm_Click(object sender, EventArgs e) { try { IniFile.INIWriteValue(FilePath, "Product", "ProjectCode", txtProject_code.Text.Trim()); IniFile.INIWriteValue(FilePath, "Product", "FactoryCode", txtFactory_Code.Text.Trim()); IniFile.INIWriteValue(FilePath, "Product", "ProcessSectionCode", txtProcess_Section_Code.Text.Trim()); IniFile.INIWriteValue(FilePath, "Product", "LineCode", textBoxLineCode.Text.Trim()); IniFile.INIWriteValue(FilePath, "Product", "LineName", textBoxLineName.Text.Trim()); IniFile.INIWriteValue(FilePath, "Product", "ProgramName", txtProgramName.Text.Trim()); // 产品2 if (rdbS1.Checked) { IniFile.INIWriteValue(FilePath, "Station", "s1_work_station", txtWorkStation.Text.Trim()); IniFile.INIWriteValue(FilePath, "Station", "s1_device_code", txtDeviceCode.Text.Trim()); IniFile.INIWriteValue(FilePath, "Station", "s1_station", txtStation.Text.Trim()); } else if (rdbS2.Checked) { IniFile.INIWriteValue(FilePath, "Station", "s2_work_station", txtWorkStation.Text.Trim()); IniFile.INIWriteValue(FilePath, "Station", "s2_device_code", txtDeviceCode.Text.Trim()); IniFile.INIWriteValue(FilePath, "Station", "s2_station", txtStation.Text.Trim()); } else if (rdbS3.Checked) { IniFile.INIWriteValue(FilePath, "Station", "s3_work_station", txtWorkStation.Text.Trim()); IniFile.INIWriteValue(FilePath, "Station", "s3_device_code", txtDeviceCode.Text.Trim()); IniFile.INIWriteValue(FilePath, "Station", "s3_station", txtStation.Text.Trim()); } else if (rdbS4.Checked) { IniFile.INIWriteValue(FilePath, "Station", "s4_work_station", txtWorkStation.Text.Trim()); IniFile.INIWriteValue(FilePath, "Station", "s4_device_code", txtDeviceCode.Text.Trim()); IniFile.INIWriteValue(FilePath, "Station", "s4_station", txtStation.Text.Trim()); } else if (rdbS5.Checked) { IniFile.INIWriteValue(FilePath, "Station", "s5_work_station", txtWorkStation.Text.Trim()); IniFile.INIWriteValue(FilePath, "Station", "s5_device_code", txtDeviceCode.Text.Trim()); IniFile.INIWriteValue(FilePath, "Station", "s5_station", txtStation.Text.Trim()); } MessageBox.Show("参数保存成功!"); GlobalContext.UpdateData(); //记录修改日志 List productSetVlaue = new List(); productSetVlaue.Add(txtProject_code.Text.Trim()); productSetVlaue.Add(txtFactory_Code.Text.Trim()); productSetVlaue.Add(txtProcess_Section_Code.Text.Trim()); productSetVlaue.Add(textBoxLineCode.Text.Trim()); productSetVlaue.Add(textBoxLineName.Text.Trim()); productSetVlaue.Add(txtProgramName.Text.Trim()); productSetVlaue.Add(txtWorkStation.Text.Trim()); productSetVlaue.Add(txtDeviceCode.Text.Trim()); productSetVlaue.Add(txtStation.Text.Trim()); String.Join(";", productSetVlaue); OnMessage(LogType.Info, currentRole + "修改系统值[产线信息]为[" + String.Join(";", productSetVlaue) + "]"); } catch (Exception ex) { string str = ex.StackTrace; OnMessage(LogType.Info, "保存产线信息出错!异常位置:" + str.Substring(str.LastIndexOf("\\") + 1, str.Length - str.LastIndexOf("\\") - 1) + ";异常信息:" + ex.Message.ToString()); } } /// /// 保存MES配置 /// private void button2_Click(object sender, EventArgs e) { try { // 是否 启用MES IniFile.INIWriteValue(FilePath, "MES", "IsUseMES", chkIsUseMes.Checked.ToString()); IniFile.INIWriteValue(FilePath, "MES", "ServerHost", textBoxServerHost.Text.Trim().ToString()); IniFile.INIWriteValue(FilePath, "MES", "IsSendStationIn", cbSendStationIn.Checked.ToString()); IniFile.INIWriteValue(FilePath, "MES", "IsSendProcessData", cbSendProcessData.Checked.ToString()); IniFile.INIWriteValue(FilePath, "MES", "IsSendCheckOneData", cbSendCheckOneData.Checked.ToString()); IniFile.INIWriteValue(FilePath, "MES", "IsSendWorkingData", cbSendWorkingData.Checked.ToString()); IniFile.INIWriteValue(FilePath, "MES", "IsSendAlarmData", cbSendAlarmData.Checked.ToString()); IniFile.INIWriteValue(FilePath, "MES", "IsUseMESRoute", chkIsUseMESRoute.Checked.ToString()); // 启用MES边线(RouteCommunication.dll) MessageBox.Show("参数保存成功!"); GlobalContext.UpdateData(); //记录修改日志 List mesSetVlaue = new List(); mesSetVlaue.Add(chkIsUseMes.Checked.ToString()); mesSetVlaue.Add(textBoxServerHost.Text); mesSetVlaue.Add(cbSendStationIn.Checked.ToString()); mesSetVlaue.Add(cbSendProcessData.Checked.ToString()); mesSetVlaue.Add(cbSendCheckOneData.Checked.ToString()); mesSetVlaue.Add(cbSendWorkingData.Checked.ToString()); mesSetVlaue.Add(cbSendAlarmData.Checked.ToString()); mesSetVlaue.Add(chkIsUseMESRoute.Checked.ToString()); // 启用MES边线(RouteCommunication.dll) String.Join(";", mesSetVlaue); OnMessage(LogType.Info, currentRole + "修改系统值[MES配置]为[" + String.Join(";", mesSetVlaue) + "]"); } catch (Exception ex) { string str = ex.StackTrace; OnMessage(LogType.Info, "保存MES配置出错!异常位置:" + str.Substring(str.LastIndexOf("\\") + 1, str.Length - str.LastIndexOf("\\") - 1) + ";异常信息:" + ex.Message.ToString()); } } /// /// 保存IOT配置 /// private void btnIOTData_Click(object sender, EventArgs e) { try { IniFile.INIWriteValue(FilePath, "MQTT", "IsUseIot", chkIsUseIot.Checked.ToString()); IniFile.INIWriteValue(FilePath, "MQTT", "MQTTServerHost", IPAddress.Parse(txtMqttIP.Text.Trim()).ToString()); IniFile.INIWriteValue(FilePath, "MQTT", "MQTTServerPort", numMqttPort.Value.ToString()); IniFile.INIWriteValue(FilePath, "MQTT", "IsMqttSendProcessData", chkMqttPassStation.Checked.ToString()); // 上传过站数据 IniFile.INIWriteValue(FilePath, "MQTT", "IsMqttDeviceState", chkMqttDeviceState.Checked.ToString()); // 上传设备状态 IniFile.INIWriteValue(FilePath, "MQTT", "IsMqttFaultLog", chkMqttFaultLog.Checked.ToString()); // 上传故障⽇志 IniFile.INIWriteValue(FilePath, "MQTT", "IsMqttSensorData", chkMqttSensorData.Checked.ToString()); // 上传传感器数据 IniFile.INIWriteValue(FilePath, "MQTT", "IsMqttStationInputBegin", chkMqttStationInputBegin.Checked.ToString()); // 上传节拍⽇志 IniFile.INIWriteValue(FilePath, "MQTT", "IsMqttOperateLog", chkMqttOperateLog.Checked.ToString()); // 上传操作记录 IniFile.INIWriteValue(FilePath, "MQTT", "IsMqttEquiConfig", chkMqttEquiConfig.Checked.ToString()); // 上传装备配置 IniFile.INIWriteValue(FilePath, "MQTT", "IsMqttProcConfig", chkMqttProcConfig.Checked.ToString()); // 上传⼯艺配置 MessageBox.Show("参数保存成功!"); GlobalContext.UpdateData(); //记录修改日志 List mesSetVlaue = new List(); mesSetVlaue.Add(chkIsUseIot.Checked.ToString()); mesSetVlaue.Add(txtMqttIP.Text.Trim()); mesSetVlaue.Add(numMqttPort.Value.ToString()); mesSetVlaue.Add(chkMqttPassStation.Checked.ToString()); mesSetVlaue.Add(chkMqttDeviceState.Checked.ToString()); mesSetVlaue.Add(chkMqttFaultLog.Checked.ToString()); mesSetVlaue.Add(chkMqttSensorData.Checked.ToString()); mesSetVlaue.Add(chkMqttStationInputBegin.Checked.ToString()); mesSetVlaue.Add(chkMqttOperateLog.Checked.ToString()); mesSetVlaue.Add(chkMqttEquiConfig.Checked.ToString()); mesSetVlaue.Add(chkMqttProcConfig.Checked.ToString()); String.Join(";", mesSetVlaue); OnMessage(LogType.Info, currentRole + "修改系统值[IOT配置]为[" + String.Join(";", mesSetVlaue) + "]"); } catch (Exception ex) { string str = ex.StackTrace; OnMessage(LogType.Info, "保存IOT配置出错!异常位置:" + str.Substring(str.LastIndexOf("\\") + 1, str.Length - str.LastIndexOf("\\") - 1) + ";异常信息:" + ex.Message.ToString()); } } /// /// 保存AGV配置 /// private void btnAGV_Click(object sender, EventArgs e) { try { IniFile.INIWriteValue(FilePath, "AGV", "IsUseAGV", chkIsUseAGV.Checked.ToString()); // 是否 启用AGV IniFile.INIWriteValue(FilePath, "AGV", "AGVHttpHost", IPAddress.Parse(txtAGVHttpIP.Text.Trim()).ToString()); // Http IP地址 IniFile.INIWriteValue(FilePath, "AGV", "AGVMQTTHost", IPAddress.Parse(txtAGVMQTTIP.Text.Trim()).ToString()); // MQTT IP地址 IniFile.INIWriteValue(FilePath, "AGV", "AGVMQTTPort", numAGVMQTTPort.Value.ToString()); // MQTT端口 IniFile.INIWriteValue(FilePath, "AGV", "AGVMQTTDeviceCode", txtTPortCode.Text.ToString()); // MQTT PortCode MessageBox.Show("参数保存成功!"); GlobalContext.UpdateData(); //记录修改日志 List mesSetVlaue = new List(); mesSetVlaue.Add(chkIsUseAGV.Checked.ToString()); mesSetVlaue.Add(txtAGVHttpIP.Text.Trim()); mesSetVlaue.Add(txtAGVMQTTIP.Text.Trim()); mesSetVlaue.Add(numAGVMQTTPort.Text.Trim()); mesSetVlaue.Add(txtTPortCode.Text.Trim()); String.Join(";", mesSetVlaue); OnMessage(LogType.Info, currentRole + "修改系统值[AGV配置]为[" + String.Join(";", mesSetVlaue) + "]"); } catch (Exception ex) { string str = ex.StackTrace; OnMessage(LogType.Error, "保存AGV配置出错!异常位置:" + str.Substring(str.LastIndexOf("\\") + 1, str.Length - str.LastIndexOf("\\") - 1) + ";异常信息:" + ex.Message.ToString()); } } /// /// 保存设备配置 /// private void button3_Click(object sender, EventArgs e) { try { IniFile.INIWriteValue(FilePath, "Machine", "IsUsePLC1", rdbS1.Checked.ToString()); IniFile.INIWriteValue(FilePath, "Machine", "IsUsePLC2", rdbS2.Checked.ToString()); IniFile.INIWriteValue(FilePath, "Machine", "IsUsePLC3", rdbS3.Checked.ToString()); IniFile.INIWriteValue(FilePath, "Machine", "IsUsePLC4", rdbS4.Checked.ToString()); IniFile.INIWriteValue(FilePath, "Machine", "IsUsePLC5", rdbS5.Checked.ToString()); IniFile.INIWriteValue(FilePath, "Machine", "Machine1Address", IPAddress.Parse(txtPLCAddress1.Text.Trim()).ToString()); IniFile.INIWriteValue(FilePath, "Machine", "Machine2Address", IPAddress.Parse(txtPLCAddress2.Text.Trim()).ToString()); IniFile.INIWriteValue(FilePath, "Machine", "Machine3Address", IPAddress.Parse(txtPLCAddress3.Text.Trim()).ToString()); IniFile.INIWriteValue(FilePath, "Machine", "Machine4Address", IPAddress.Parse(txtPLCAddress4.Text.Trim()).ToString()); IniFile.INIWriteValue(FilePath, "Machine", "Machine5Address", IPAddress.Parse(txtPLCAddress5.Text.Trim()).ToString()); IniFile.INIWriteValue(FilePath, "Machine", "MachinePort",numPLCPort.Value.ToString()); MessageBox.Show("参数保存成功!"); GlobalContext.UpdateData(); //记录修改日志 List machineSetVlaue = new List(); machineSetVlaue.Add(rdbS1.Checked.ToString()); machineSetVlaue.Add(rdbS2.Checked.ToString()); machineSetVlaue.Add(rdbS3.Checked.ToString()); machineSetVlaue.Add(rdbS4.Checked.ToString()); machineSetVlaue.Add(rdbS5.Checked.ToString()); machineSetVlaue.Add(txtPLCAddress1.Text.Trim()); machineSetVlaue.Add(txtPLCAddress2.Text.Trim()); machineSetVlaue.Add(txtPLCAddress3.Text.Trim()); machineSetVlaue.Add(txtPLCAddress4.Text.Trim()); machineSetVlaue.Add(txtPLCAddress5.Text.Trim()); machineSetVlaue.Add(numPLCPort.Value.ToString()); String.Join(";", machineSetVlaue); OnMessage(LogType.Info, currentRole + "修改系统值[设备配置]为[" + String.Join(";", machineSetVlaue) + "]"); } catch (Exception ex) { string str = ex.StackTrace; OnMessage(LogType.Error, "保存设备配置出错!异常位置:" + str.Substring(str.LastIndexOf("\\") + 1, str.Length - str.LastIndexOf("\\") - 1) + ";异常信息:" + ex.Message.ToString()); } } /// /// 获取订单信息 /// private void btnGetOrderInfo_Click(object sender, EventArgs e) { } //private void textBoxWC_KeyPress(object sender, KeyPressEventArgs e) //{ // if (e.KeyChar == 13) // { // WorkOrderInfo workOrderInfo; // workOrderInfo = HttpUitls.GetWOData(textBoxWC.Text.Trim()); // if (workOrderInfo != null) // { // textBoxWC.Text = workOrderInfo.sono; // textBoxBN.Text = workOrderInfo.splcode; // comboBoxProductModel.Text = workOrderInfo.prtno; // comboBoxKeyValue.Text = workOrderInfo.prodline; // } // else // { // textBoxWC.Text = string.Empty; // } // } //} /// /// 保存信息 /// /// /// private void OnMessage(LogType logType, string msg) { MessageEvent?.Invoke(logType, msg); } } }