From 1e9f1052d57e4e8e2f87f7f14e927e1fcb196718 Mon Sep 17 00:00:00 2001
From: ldw <11622064+ldw888@user.noreply.gitee.com>
Date: Tue, 12 Aug 2025 14:03:37 +0800
Subject: [PATCH] =?UTF-8?q?=E5=88=86=E6=A1=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
JinYuan.ControlCenter/ControlCenter_Plc.cs | 106 +++--
JinYuan.MES/MesDataProcess.cs | 18 +-
JinYuan.Models/FDConfig.cs | 52 +++
JinYuan.Models/JinYuan.Models.csproj | 1 +
JinYuan.VirtualDataLibrary/MesConfig.cs | 4 +
LargeSquareOne/App.config | 2 +-
LargeSquareOne/Config/Configure.ini | 2 +
LargeSquareOne/Config/Device.xlsx | Bin 0 -> 9494 bytes
LargeSquareOne/Config/FdConfig.xlsx | Bin 0 -> 4355 bytes
LargeSquareOne/FrmMain.cs | 1 +
LargeSquareOne/FrmParamSet.Designer.cs | 70 ++++
LargeSquareOne/FrmParamSet.cs | 448 ++++++++++++++++++++-
LargeSquareOne/FrmParamSet.resx | 26 ++
13 files changed, 682 insertions(+), 48 deletions(-)
create mode 100644 JinYuan.Models/FDConfig.cs
create mode 100644 LargeSquareOne/Config/Device.xlsx
create mode 100644 LargeSquareOne/Config/FdConfig.xlsx
diff --git a/JinYuan.ControlCenter/ControlCenter_Plc.cs b/JinYuan.ControlCenter/ControlCenter_Plc.cs
index 352097d..f945b48 100644
--- a/JinYuan.ControlCenter/ControlCenter_Plc.cs
+++ b/JinYuan.ControlCenter/ControlCenter_Plc.cs
@@ -256,6 +256,23 @@ namespace JinYuan.ControlCenters
}
return Result;
}
+ private int JudgmentWGJResult(int A, int[,] B, int C)
+ {
+ int Result = 1;
+ OK_NG = "OK";
+ for (int i = 0; i < 28; i++)
+ {
+ if (B[C,i] ==1)
+ {
+ //1OK,2扫码NG,3MES反馈NG,4其他NG
+ Result = 4;
+ OK_NG = "NG";
+ NG_Type += $"外观检测NG{i + 1}";
+ }
+ }
+
+ return Result;
+ }
#region 上料工位(数据处理)
///
/// 上料工位
@@ -1801,38 +1818,39 @@ namespace JinYuan.ControlCenters
//不良代码判定
List NGcodeList = new List();
- NGcodeList = NGcode(m.list_Data1[i, 10], m.list_Data1[i, 11], m.list_Data1[i, 12], m.list_Data1[i, 15], m.list_Data1[i, 26], m.list_Data1[i, 16]
- , m.list_Data1[i, 17], m.list_Data1[i, 18], m.list_Data1[i, 19], m.list_Data1[i, 23], m.list_Data1[i, 24], m.list_Data1[i, 25], m.list_Data1[i, 27]);
+ //NGcodeList = NGcode(m.list_Data1[i, 10], m.list_Data1[i, 11], m.list_Data1[i, 12], m.list_Data1[i, 15], m.list_Data1[i, 26], m.list_Data1[i, 16]
+ // , m.list_Data1[i, 17], m.list_Data1[i, 18], m.list_Data1[i, 19], m.list_Data1[i, 23], m.list_Data1[i, 24], m.list_Data1[i, 25], m.list_Data1[i, 27]);
+ NGcodeList = NGWGJcode(m.list_Data1,i);
//电芯CCD判定结果
- #region //电芯CCD判定结果
- m.CCDResult1 = m.CCD_Data[i, 0] == 0 ? "OK" : (m.CCD_Data[i, 0] == 1 ? "NG" : "缺图");
- m.CCDResult2 = m.CCD_Data[i, 1] == 0 ? "OK" : (m.CCD_Data[i, 1] == 1 ? "NG" : "缺图");
- m.CCDResult3 = m.CCD_Data[i, 2] == 0 ? "OK" : (m.CCD_Data[i, 2] == 1 ? "NG" : "缺图");
- m.CCDResult4 = m.CCD_Data[i, 3] == 0 ? "OK" : (m.CCD_Data[i, 3] == 1 ? "NG" : "缺图");
- m.CCDResult5 = m.CCD_Data[i, 4] == 0 ? "OK" : (m.CCD_Data[i, 4] == 1 ? "NG" : "缺图");
- m.CCDResult6 = m.CCD_Data[i, 5] == 0 ? "OK" : (m.CCD_Data[i, 5] == 1 ? "NG" : "缺图");
- m.CCDResult7 = m.CCD_Data[i, 6] == 0 ? "OK" : (m.CCD_Data[i, 6] == 1 ? "NG" : "缺图");
- m.CCDResult8 = m.CCD_Data[i, 7] == 0 ? "OK" : (m.CCD_Data[i, 7] == 1 ? "NG" : "缺图");
- m.CCDResult9 = m.CCD_Data[i, 8] == 0 ? "OK" : (m.CCD_Data[i, 8] == 1 ? "NG" : "缺图");
- m.CCDResult10 = m.CCD_Data[i, 9] == 0 ? "OK" : (m.CCD_Data[i, 9] == 1 ? "NG" : "缺图");
- m.CCDResult11 = m.CCD_Data[i, 10] == 0 ? "OK" : (m.CCD_Data[i, 10] == 1 ? "NG" : "缺图");
- m.CCDResult12 = m.CCD_Data[i, 11] == 0 ? "OK" : (m.CCD_Data[i, 11] == 1 ? "NG" : "缺图");
- m.CCDResult13 = m.CCD_Data[i, 12] == 0 ? "OK" : (m.CCD_Data[i, 12] == 1 ? "NG" : "缺图");
- m.CCDResult14 = m.CCD_Data[i, 13] == 0 ? "OK" : (m.CCD_Data[i, 13] == 1 ? "NG" : "缺图");
- m.CCDResult15 = m.CCD_Data[i, 14] == 0 ? "OK" : (m.CCD_Data[i, 14] == 1 ? "NG" : "缺图");
- m.CCDResult16 = m.CCD_Data[i, 15] == 0 ? "OK" : (m.CCD_Data[i, 15] == 1 ? "NG" : "缺图");
- m.CCDResult17 = m.CCD_Data[i, 16] == 0 ? "OK" : (m.CCD_Data[i, 16] == 1 ? "NG" : "缺图");
- m.CCDResult18 = m.CCD_Data[i, 17] == 0 ? "OK" : (m.CCD_Data[i, 17] == 1 ? "NG" : "缺图");
- m.CCDResult19 = m.CCD_Data[i, 18] == 0 ? "OK" : (m.CCD_Data[i, 18] == 1 ? "NG" : "缺图");
- m.CCDResult20 = m.CCD_Data[i, 19] == 0 ? "OK" : (m.CCD_Data[i, 19] == 1 ? "NG" : "缺图");
- m.CCDResult21 = m.CCD_Data[i, 20] == 0 ? "OK" : (m.CCD_Data[i, 20] == 1 ? "NG" : "缺图");
- m.CCDResult22 = m.CCD_Data[i, 21] == 0 ? "OK" : (m.CCD_Data[i, 21] == 1 ? "NG" : "缺图");
- m.CCDResult23 = m.CCD_Data[i, 22] == 0 ? "OK" : (m.CCD_Data[i, 22] == 1 ? "NG" : "缺图");
- m.CCDResult24 = m.CCD_Data[i, 23] == 0 ? "OK" : (m.CCD_Data[i, 23] == 1 ? "NG" : "缺图");
- m.CCDResult25 = m.CCD_Data[i, 24] == 0 ? "OK" : (m.CCD_Data[i, 24] == 1 ? "NG" : "缺图");
- m.CCDResult26 = m.CCD_Data[i, 25] == 0 ? "OK" : (m.CCD_Data[i, 25] == 1 ? "NG" : "缺图");
- m.CCDResult27 = m.CCD_Data[i, 26] == 0 ? "OK" : (m.CCD_Data[i, 26] == 1 ? "NG" : "缺图");
+ #region //电芯CCD判定结果 1 0K 0NG 2缺图
+ m.CCDResult1 = m.CCD_Data[i, 0] == 1 ? "OK" : (m.CCD_Data[i, 0] == 0 ? "NG" : "缺图");
+ m.CCDResult2 = m.CCD_Data[i, 1] == 1 ? "OK" : (m.CCD_Data[i, 1] == 0 ? "NG" : "缺图");
+ m.CCDResult3 = m.CCD_Data[i, 2] == 1 ? "OK" : (m.CCD_Data[i, 2] == 0 ? "NG" : "缺图");
+ m.CCDResult4 = m.CCD_Data[i, 3] == 1 ? "OK" : (m.CCD_Data[i, 3] == 0 ? "NG" : "缺图");
+ m.CCDResult5 = m.CCD_Data[i, 4] == 1 ? "OK" : (m.CCD_Data[i, 4] == 0 ? "NG" : "缺图");
+ m.CCDResult6 = m.CCD_Data[i, 5] == 1 ? "OK" : (m.CCD_Data[i, 5] == 0 ? "NG" : "缺图");
+ m.CCDResult7 = m.CCD_Data[i, 6] == 1 ? "OK" : (m.CCD_Data[i, 6] == 0 ? "NG" : "缺图");
+ m.CCDResult8 = m.CCD_Data[i, 7] == 1 ? "OK" : (m.CCD_Data[i, 7] == 0 ? "NG" : "缺图");
+ m.CCDResult9 = m.CCD_Data[i, 8] == 1 ? "OK" : (m.CCD_Data[i, 8] == 0 ? "NG" : "缺图");
+ m.CCDResult10 = m.CCD_Data[i, 9] == 1 ? "OK" : (m.CCD_Data[i, 9] == 0 ? "NG" : "缺图");
+ m.CCDResult11 = m.CCD_Data[i, 10] == 1 ? "OK" : (m.CCD_Data[i, 10] == 0 ? "NG" : "缺图");
+ m.CCDResult12 = m.CCD_Data[i, 11] == 1 ? "OK" : (m.CCD_Data[i, 11] == 0 ? "NG" : "缺图");
+ m.CCDResult13 = m.CCD_Data[i, 12] == 1 ? "OK" : (m.CCD_Data[i, 12] == 0 ? "NG" : "缺图");
+ m.CCDResult14 = m.CCD_Data[i, 13] == 1 ? "OK" : (m.CCD_Data[i, 13] == 0 ? "NG" : "缺图");
+ m.CCDResult15 = m.CCD_Data[i, 14] == 1 ? "OK" : (m.CCD_Data[i, 14] == 0 ? "NG" : "缺图");
+ m.CCDResult16 = m.CCD_Data[i, 15] == 1 ? "OK" : (m.CCD_Data[i, 15] == 0 ? "NG" : "缺图");
+ m.CCDResult17 = m.CCD_Data[i, 16] == 1 ? "OK" : (m.CCD_Data[i, 16] == 0 ? "NG" : "缺图");
+ m.CCDResult18 = m.CCD_Data[i, 17] == 1 ? "OK" : (m.CCD_Data[i, 17] == 0 ? "NG" : "缺图");
+ m.CCDResult19 = m.CCD_Data[i, 18] == 1 ? "OK" : (m.CCD_Data[i, 18] == 0 ? "NG" : "缺图");
+ m.CCDResult20 = m.CCD_Data[i, 19] == 1 ? "OK" : (m.CCD_Data[i, 19] == 0 ? "NG" : "缺图");
+ m.CCDResult21 = m.CCD_Data[i, 20] == 1 ? "OK" : (m.CCD_Data[i, 20] == 0 ? "NG" : "缺图");
+ m.CCDResult22 = m.CCD_Data[i, 21] == 1 ? "OK" : (m.CCD_Data[i, 21] == 0 ? "NG" : "缺图");
+ m.CCDResult23 = m.CCD_Data[i, 22] == 1 ? "OK" : (m.CCD_Data[i, 22] == 0 ? "NG" : "缺图");
+ m.CCDResult24 = m.CCD_Data[i, 23] == 1 ? "OK" : (m.CCD_Data[i, 23] == 0 ? "NG" : "缺图");
+ m.CCDResult25 = m.CCD_Data[i, 24] == 1 ? "OK" : (m.CCD_Data[i, 24] == 0 ? "NG" : "缺图");
+ m.CCDResult26 = m.CCD_Data[i, 25] == 1 ? "OK" : (m.CCD_Data[i, 25] == 0 ? "NG" : "缺图");
+ m.CCDResult27 = m.CCD_Data[i, 26] == 1 ? "OK" : (m.CCD_Data[i, 26] == 0 ? "NG" : "缺图");
#endregion
m.CSBYHASCANNINGTIME = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
@@ -1851,9 +1869,10 @@ namespace JinYuan.ControlCenters
{
for (int ii = 0; ii < 27; ii++)
{
- if (m.CCD_Data[i, ii] != 0)
+ if (m.CCD_Data[i, ii] != 1)
{
- MyRes[i] = m.CCD_Data[i, ii];
+ //1OK,2扫码NG,3MES反馈NG,4其他NG
+ MyRes[i] = 4;
break;
}
@@ -1861,7 +1880,7 @@ namespace JinYuan.ControlCenters
}
else
MyRes[i] = 1;
- //MyRes[i] = JudgmentResult(Code_NG, m.CCD_Data);
+ MyRes[i] = JudgmentWGJResult(Code_NG, m.CCD_Data,i);
m.Result = MyRes[i];
@@ -2008,11 +2027,12 @@ namespace JinYuan.ControlCenters
#endregion
JYResult result1 = null;
JYResult result2 = null;
+ JYResult result3 = null;
if (pf.IsFeedbackPlc)
{
//result1 = CommonMethods.PlcLink.WriteValue(pf.VarList[2].VarAddress, MyRes[0], Data_Type.Short);//判断结果写入PLC
//result2 = CommonMethods.PlcLink.WriteValue(pf.VarList[3].VarAddress, MyRes[1], Data_Type.Short);//判断结果写入PLC
- //if (CommonMethods.sysConfig.OKSwitching)
+ // if (CommonMethods.sysConfig.OKSwitching)
{
//调试发OK
//MyRes[0] = 1;
@@ -2020,7 +2040,7 @@ namespace JinYuan.ControlCenters
Thread.Sleep(500);
result1 = CommonMethods.PlcLink.WriteValue(pf.VarList[2].VarAddress, MyRes[0], Data_Type.Short);//判断结果写入PLC
result2 = CommonMethods.PlcLink.WriteValue(pf.VarList[3].VarAddress, MyRes[1], Data_Type.Short);//判断结果写入PLC
- result2 = CommonMethods.PlcLink.WriteValue(pf.VarList[4].VarAddress, MyRes[2], Data_Type.Short);//判断结果写入PLC
+ result3 = CommonMethods.PlcLink.WriteValue(pf.VarList[4].VarAddress, MyRes[2], Data_Type.Short);//判断结果写入PLC
}
//else
//{
@@ -2030,7 +2050,7 @@ namespace JinYuan.ControlCenters
// result2 = CommonMethods.PlcLink.WriteValue(pf.VarList[3].VarAddress, MyRes[1], Data_Type.Short);//判断结果写入PLC
//}
}
- JYResult result3 = CommonMethods.PlcLink.WriteValue(pf.VarList[0].VarAddress, 0);//置位0
+ JYResult result4 = CommonMethods.PlcLink.WriteValue(pf.VarList[0].VarAddress, 0);//置位0
CommonMethods.AddDataMonitorLog(0, $"发送信息给PLC:{result1.IsSuccess},{MyRes[0]},{MyRes[1]},{MyRes[2]}");
LoggerHelp.WriteLog($"发送信息给PLC:{result1.IsSuccess},{MyRes[0]},{MyRes[1]},{MyRes[2]}");
@@ -2212,6 +2232,20 @@ namespace JinYuan.ControlCenters
return NGcodelist;
}
+ //下料不良代码 外观检
+ public List NGWGJcode(short[ ,] lstResult,int index)
+ {
+ List NGcodelist = new List();
+ for (int i = 0; i < 28; i++)
+ {
+ if(lstResult[index,i] == 2)
+ {
+ NGcodelist.Add("WGJA00"+(i+1));
+ }
+ }
+
+ return NGcodelist;
+ }
#endregion
#region NG下料不良代码
diff --git a/JinYuan.MES/MesDataProcess.cs b/JinYuan.MES/MesDataProcess.cs
index b09aaf2..7c5de03 100644
--- a/JinYuan.MES/MesDataProcess.cs
+++ b/JinYuan.MES/MesDataProcess.cs
@@ -783,14 +783,14 @@ namespace JinYuan.MES
long outTime = sw.ElapsedMilliseconds;
if (outTime > 1000)
{
- LoggerHelp.WriteLog($"预焊出站PC<=>MES上传耗时:{outTime}ms,电芯码:{listBar.CSBYHCODEA}", "MESTime");
+ LoggerHelp.WriteLog($"外观检出站PC<=>MES上传耗时:{outTime}ms,电芯码:{listBar.CSBYHCODEA}", "MESTime");
}
if (string.IsNullOrEmpty(result))
{
string resData = result == "" ? "" : result;
- resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品出站信息(组装)接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resData}";
- TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\产品出站信息(组装)\{nowDate.ToString("HH")}.txt", resJson);
+ resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品出站信息(包装)接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resData}";
+ TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\产品出站信息(包装)\{nowDate.ToString("HH")}.txt", resJson);
return res;
}
@@ -799,22 +799,22 @@ namespace JinYuan.MES
{
res = true;
GetOutMesResType(res1, listBar.CSBYHCODEA, ref MesMessage, ref mesResType);
- resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品出站信息(组装)接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{result}";
- TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\产品出站信息(组装)\{nowDate.ToString("HH")}.txt", resJson);
+ resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品出站信息(包装)接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{result}";
+ TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\产品出站信息(包装)\{nowDate.ToString("HH")}.txt", resJson);
}
else
{
GetOutMesResType(res1, listBar.CSBYHCODEA, ref MesMessage, ref mesResType);
var resData = res1 == null ? "" : result;
- resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品出站信息(组装)接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resData}";
- TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\产品出站信息(组装)\{nowDate.ToString("HH")}.txt", resJson);
+ resJson = $"{nowDate.ToString("yyyy-MM-dd HH:mm:ss.fff")}:调用产品出站信息(包装)接口:{url},请求数据为:{postcontent},\n{nowDate.AddMilliseconds(sw.ElapsedMilliseconds).ToString("yyyy-MM-dd HH:mm:ss.fff")}:接口耗时:{sw.ElapsedMilliseconds}ms,返回结果:{resData}";
+ TxtHelper.WriteTxt($@"D:\APILog\Logs\MesLogs\{nowDate.ToString("yyyyMMdd")}\产品出站信息(包装)\{nowDate.ToString("HH")}.txt", resJson);
}
}
catch (Exception ex)
{
- resJson = $"产品出站信息(组装)接口发生异常:{ex.Message}";
- LoggerHelp.WriteEX("产品出站信息(组装)接口", ex);
+ resJson = $"产品出站信息(包装)接口发生异常:{ex.Message}";
+ LoggerHelp.WriteEX("产品出站信息(包装)接口", ex);
}
return res;
diff --git a/JinYuan.Models/FDConfig.cs b/JinYuan.Models/FDConfig.cs
new file mode 100644
index 0000000..a340e8d
--- /dev/null
+++ b/JinYuan.Models/FDConfig.cs
@@ -0,0 +1,52 @@
+using SqlSugar;
+
+namespace JinYuan.Models
+{
+ public class FDConfig
+ {
+ ///
+ /// 编号
+ ///
+
+ public int FdNum { get; set; }
+ ///
+ /// OK拉带类型1
+ ///
+ public string OKLD1Type { get; set; }
+ ///
+ /// OK拉带类型2
+ ///
+ public string OKLD2Type { get; set; }
+ ///
+ /// OK拉带类型3
+ ///
+ public string OKLD3Type { get; set; }
+ ///
+ /// OK拉带类型4
+ ///
+ public string OKLD4Type { get; set; }
+ ///
+ /// NG拉带类型5
+ ///
+ public string NGLD5Type { get; set; }
+ ///
+ /// NG拉带类型6
+ ///
+ public string NGLD6Type { get; set; }
+ ///
+ /// NG拉带类型7
+ ///
+ public string NGLD7Type { get; set; }
+ ///
+ /// 是否开启分档
+ ///
+ public bool IsFDActive { get; set; }
+ ///
+ ///是否激活NG电池不分类排出
+ ///
+
+ public bool IsNGActive { get; set; }
+
+
+ }
+}
diff --git a/JinYuan.Models/JinYuan.Models.csproj b/JinYuan.Models/JinYuan.Models.csproj
index 2e2a31e..89adaba 100644
--- a/JinYuan.Models/JinYuan.Models.csproj
+++ b/JinYuan.Models/JinYuan.Models.csproj
@@ -84,6 +84,7 @@
+
diff --git a/JinYuan.VirtualDataLibrary/MesConfig.cs b/JinYuan.VirtualDataLibrary/MesConfig.cs
index 2294e38..50553f4 100644
--- a/JinYuan.VirtualDataLibrary/MesConfig.cs
+++ b/JinYuan.VirtualDataLibrary/MesConfig.cs
@@ -184,6 +184,10 @@ namespace JinYuan.VirtualDataLibrary
/// 设备风速接口
///
public string CollectData = "http://10.1.3.66:3000/mock/15/eve_api/ems/iot/upload_device_collect_data";
+ ///
+ /// 设备风速接口
+ ///
+ public string OkNgParamMesUrl = "http://10.17.128.206/core/api/public/eve/pm/eqm/new/grading";
}
}
diff --git a/LargeSquareOne/App.config b/LargeSquareOne/App.config
index 71dfbd6..04900ab 100644
--- a/LargeSquareOne/App.config
+++ b/LargeSquareOne/App.config
@@ -5,7 +5,7 @@
-
+
diff --git a/LargeSquareOne/Config/Configure.ini b/LargeSquareOne/Config/Configure.ini
index b982b35..e6ff45d 100644
--- a/LargeSquareOne/Config/Configure.ini
+++ b/LargeSquareOne/Config/Configure.ini
@@ -34,6 +34,8 @@ MES
É豸״̬=http://10.22.160.141/core/api/public/eve/pm/eqm/run/status/operation
ÄܺÄ=http://10.22.160.141/core/api/public/eve/pm/energy/consumption/collection/submit
·çËÙÒÇ=https://iot.eveportal.com:9470/eve_api/ems/iot/upload_device_collect_data
+·çËÙÒÇ=https://iot.eveportal.com:9470/eve_api/ems/iot/upload_device_collect_data
+·ֵµ²ÎÊý=http://10.22.160.141/core/api/public/eve/pm/eqm/new/grading
guid=a270c7d2-9cbd-4739-9a0b-0709b5813332
DeviceState=1
run_AlarmMark=0
diff --git a/LargeSquareOne/Config/Device.xlsx b/LargeSquareOne/Config/Device.xlsx
new file mode 100644
index 0000000000000000000000000000000000000000..c5d26eb9c746a0cbf2e111a6a58b071cc958b5d8
GIT binary patch
literal 9494
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
U;2<0X0FWUc8VHT&$bX*w52dv|G5`Po
literal 0
HcmV?d00001
diff --git a/LargeSquareOne/Config/FdConfig.xlsx b/LargeSquareOne/Config/FdConfig.xlsx
new file mode 100644
index 0000000000000000000000000000000000000000..17a456979ca6b81e8a200a1c87ee7775df3656eb
GIT binary patch
literal 4355
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
literal 0
HcmV?d00001
diff --git a/LargeSquareOne/FrmMain.cs b/LargeSquareOne/FrmMain.cs
index cecac8b..5f95ae1 100644
--- a/LargeSquareOne/FrmMain.cs
+++ b/LargeSquareOne/FrmMain.cs
@@ -198,6 +198,7 @@ namespace LargeSquareOne
CommonMethods.mesConfig.InPutStationMesUrl = IniConfigHelper.ReadIniData("MES配置", "产品进站", "0");
CommonMethods.mesConfig.EquProcessProcessParamMesUrl = IniConfigHelper.ReadIniData("MES配置", "产品过程加工参数", "0");
CommonMethods.mesConfig.ResultProcessParamMesUrl = IniConfigHelper.ReadIniData("MES配置", "产品结果加工参数", "0");
+ CommonMethods.mesConfig.OkNgParamMesUrl = IniConfigHelper.ReadIniData("MES配置", "分档参数", "0");
CommonMethods.mesConfig.OutStationMesUrl = IniConfigHelper.ReadIniData("MES配置", "产品出站", "0");
CommonMethods.mesConfig.AlarmCurrencyMesUrl = IniConfigHelper.ReadIniData("MES配置", "设备报警", "0");
CommonMethods.mesConfig.StatusMesUrl = IniConfigHelper.ReadIniData("MES配置", "设备状态", "0");
diff --git a/LargeSquareOne/FrmParamSet.Designer.cs b/LargeSquareOne/FrmParamSet.Designer.cs
index b83aa9c..de3ef9c 100644
--- a/LargeSquareOne/FrmParamSet.Designer.cs
+++ b/LargeSquareOne/FrmParamSet.Designer.cs
@@ -29,6 +29,9 @@
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmSystemSet));
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
this.up_QieHuanPeriod = new JinYuan.ControlLib.UpDownLabel();
this.tog_AutoQieHuanM = new JinYuan.ControlLib.Toggle();
this.label16 = new System.Windows.Forms.Label();
@@ -73,6 +76,9 @@
this.title1 = new JinYuan.ControlLib.Title();
this.label18 = new System.Windows.Forms.Label();
this.tog_OKSwitching = new JinYuan.ControlLib.Toggle();
+ this.title5 = new JinYuan.ControlLib.Title();
+ this.dgvFdConfigs = new System.Windows.Forms.DataGridView();
+ ((System.ComponentModel.ISupportInitialize)(this.dgvFdConfigs)).BeginInit();
this.SuspendLayout();
//
// up_QieHuanPeriod
@@ -647,12 +653,73 @@
this.tog_OKSwitching.TrueText = "";
this.tog_OKSwitching.CheckedChanged += new System.EventHandler(this.tog_OKSwitching_CheckedChanged);
//
+ // title5
+ //
+ this.title5.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(5)))), ((int)(((byte)(28)))), ((int)(((byte)(68)))));
+ this.title5.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("title5.BackgroundImage")));
+ this.title5.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
+ this.title5.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Bold);
+ this.title5.Location = new System.Drawing.Point(22, 424);
+ this.title5.Margin = new System.Windows.Forms.Padding(5, 8, 5, 8);
+ this.title5.Name = "title5";
+ this.title5.Size = new System.Drawing.Size(117, 37);
+ this.title5.TabIndex = 49;
+ this.title5.TitleName = "分档设置";
+ //
+ // dgvFdConfigs
+ //
+ this.dgvFdConfigs.AllowUserToAddRows = false;
+ this.dgvFdConfigs.AllowUserToDeleteRows = false;
+ this.dgvFdConfigs.AllowUserToResizeRows = false;
+ this.dgvFdConfigs.BackgroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(14)))), ((int)(((byte)(23)))), ((int)(((byte)(38)))));
+ this.dgvFdConfigs.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
+ this.dgvFdConfigs.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single;
+ dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
+ dataGridViewCellStyle1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(14)))), ((int)(((byte)(23)))), ((int)(((byte)(38)))));
+ dataGridViewCellStyle1.Font = new System.Drawing.Font("微软雅黑", 10.5F);
+ dataGridViewCellStyle1.ForeColor = System.Drawing.Color.White;
+ dataGridViewCellStyle1.SelectionBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(14)))), ((int)(((byte)(23)))), ((int)(((byte)(38)))));
+ dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
+ dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
+ this.dgvFdConfigs.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
+ this.dgvFdConfigs.ColumnHeadersHeight = 40;
+ this.dgvFdConfigs.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+ dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
+ dataGridViewCellStyle2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(6)))), ((int)(((byte)(40)))), ((int)(((byte)(86)))));
+ dataGridViewCellStyle2.Font = new System.Drawing.Font("微软雅黑", 10.5F);
+ dataGridViewCellStyle2.ForeColor = System.Drawing.Color.White;
+ dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight;
+ dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
+ dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
+ this.dgvFdConfigs.DefaultCellStyle = dataGridViewCellStyle2;
+ this.dgvFdConfigs.EnableHeadersVisualStyles = false;
+ this.dgvFdConfigs.GridColor = System.Drawing.Color.FromArgb(((int)(((byte)(21)))), ((int)(((byte)(77)))), ((int)(((byte)(147)))));
+ this.dgvFdConfigs.Location = new System.Drawing.Point(44, 486);
+ this.dgvFdConfigs.Name = "dgvFdConfigs";
+ this.dgvFdConfigs.RowHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single;
+ dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
+ dataGridViewCellStyle3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(6)))), ((int)(((byte)(40)))), ((int)(((byte)(86)))));
+ dataGridViewCellStyle3.Font = new System.Drawing.Font("微软雅黑", 10.5F);
+ dataGridViewCellStyle3.ForeColor = System.Drawing.Color.White;
+ dataGridViewCellStyle3.SelectionBackColor = System.Drawing.SystemColors.Highlight;
+ dataGridViewCellStyle3.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
+ dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
+ this.dgvFdConfigs.RowHeadersDefaultCellStyle = dataGridViewCellStyle3;
+ this.dgvFdConfigs.RowHeadersWidth = 55;
+ this.dgvFdConfigs.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.DisableResizing;
+ this.dgvFdConfigs.RowTemplate.Height = 40;
+ this.dgvFdConfigs.RowTemplate.Resizable = System.Windows.Forms.DataGridViewTriState.False;
+ this.dgvFdConfigs.Size = new System.Drawing.Size(1757, 69);
+ this.dgvFdConfigs.TabIndex = 78;
+ //
// FrmSystemSet
//
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 20F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(14)))), ((int)(((byte)(23)))), ((int)(((byte)(38)))));
this.ClientSize = new System.Drawing.Size(1370, 651);
+ this.Controls.Add(this.dgvFdConfigs);
+ this.Controls.Add(this.title5);
this.Controls.Add(this.tog_OKSwitching);
this.Controls.Add(this.label18);
this.Controls.Add(this.up_QieHuanPeriod);
@@ -702,6 +769,7 @@
this.Margin = new System.Windows.Forms.Padding(5);
this.Name = "FrmSystemSet";
this.Text = "系统设置";
+ ((System.ComponentModel.ISupportInitialize)(this.dgvFdConfigs)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
@@ -752,5 +820,7 @@
private System.Windows.Forms.Label label17;
private System.Windows.Forms.Label label18;
private JinYuan.ControlLib.Toggle tog_OKSwitching;
+ private JinYuan.ControlLib.Title title5;
+ private System.Windows.Forms.DataGridView dgvFdConfigs;
}
}
\ No newline at end of file
diff --git a/LargeSquareOne/FrmParamSet.cs b/LargeSquareOne/FrmParamSet.cs
index 8d2e651..ab3756d 100644
--- a/LargeSquareOne/FrmParamSet.cs
+++ b/LargeSquareOne/FrmParamSet.cs
@@ -1,15 +1,32 @@
-using JinYuan.ControlLib;
+using JinYuan.CommunicationLib.Enum;
+using JinYuan.ControlLib;
using JinYuan.Helper;
+using JinYuan.Models;
using JinYuan.VirtualDataLibrary;
using Microsoft.Win32;
+using MiniExcelLibs;
using System;
+using System.Collections.Generic;
+using System.ComponentModel;
using System.IO;
using System.Windows.Forms;
+using System.Linq;
+using static Org.BouncyCastle.Math.EC.ECCurve;
+using System.Drawing;
namespace LargeSquareOne
{
public partial class FrmSystemSet : Form
{
+ private string FdConfigFilePath = "fd_config.xlsx";
+ private List fdConfigs;
+ private List PLCTypes = new List();
+ private List NGLDTypes1 = new List();//NG拉带类型
+ private List NGLDTypes2 = new List();//NG拉带类型
+ private List NGLDTypes3 = new List();//NG拉带类型
+ private bool isFDEditing = false;
+ private int editingFDRowIndex = -1;
+ private readonly string configFolderPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config");
///
/// 打印日志方法
///
@@ -49,6 +66,14 @@ namespace LargeSquareOne
this.cmb_PLCType.Items.Add("Mitsubishi");
this.cmb_PLCType.Items.Add("Inovance");
+ FdConfigFilePath = Path.Combine(configFolderPath, "FdConfig.xlsx");
+ PLCTypes.AddRange(new string[] { "OmronFinsTCP", "OmronCipNet" });
+ NGLDTypes1.AddRange(new string[] { "面1", "面2", "面3" });
+ NGLDTypes2.AddRange(new string[] { "面1", "面2", "面3" });
+ NGLDTypes3.AddRange(new string[] { "面1", "面2", "面3" });
+ SetupFDDataGridView();
+ LoadFDConfig();
+
this.tog_AutoStart.IsChecked = CommonMethods.sysConfig.AutoStart;
this.tog_AutoLogin.IsChecked = CommonMethods.sysConfig.AutoLogin;
this.tog_AutoLock.IsChecked = CommonMethods.sysConfig.AutoLock;
@@ -73,7 +98,7 @@ namespace LargeSquareOne
this.up_ShowSeriesCount.ValueChanged += new System.EventHandler(this.up_ShowSeriesCount_ValueChanged);
this.devPath = devPath;
-
+
InitParam();
}
@@ -417,5 +442,424 @@ namespace LargeSquareOne
LogMessage(OKMessage, "强制结果OK日志");
}
}
+
+ #region 分档设置
+ private void LoadFDConfig()
+ {
+
+ try
+ {
+ if (File.Exists(FdConfigFilePath))
+ {
+ using (var stream = File.OpenRead(FdConfigFilePath))
+ {
+ var devices = MiniExcel.Query(stream).ToList();
+ fdConfigs = devices.Select(device => new FDConfig
+ {
+ FdNum = device.FdNum,
+ OKLD1Type = device.OKLD1Type,
+ OKLD2Type = device.OKLD2Type,
+ OKLD3Type = device.OKLD3Type,
+ OKLD4Type = device.OKLD4Type,
+ NGLD5Type = device.NGLD5Type,
+ NGLD6Type = device.NGLD6Type,
+ NGLD7Type = device.NGLD7Type,
+ IsFDActive = device.IsFDActive,
+ IsNGActive = device.IsNGActive
+ }).ToList();
+ }
+
+ }
+ else
+ {
+ fdConfigs = new List();
+ }
+
+ RefreshFDDataGridView();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show($"加载配置文件失败:{ex.Message}", "错误",
+ MessageBoxButtons.OK, MessageBoxIcon.Error);
+ fdConfigs = new List();
+ }
+
+
+ }
+ private void SetColumnsFDReadOnly(bool readOnly)
+ {
+ foreach (DataGridViewColumn col in dgvFdConfigs.Columns)
+ {
+ // PlcNum 列始终保持只读
+ if (col.Name == "FdNum")
+ {
+ col.ReadOnly = true;
+ continue;
+ }
+
+ // 按钮列不需要设置 ReadOnly 属性
+ if (col is DataGridViewButtonColumn)
+ continue;
+
+ // 其他列根据参数设置
+ col.ReadOnly = readOnly;
+ }
+ }
+
+ ///
+ /// 初始化分档DataGrid
+ ///
+ private void SetupFDDataGridView()
+ {
+ // 设置基本属性
+ dgvFdConfigs.AutoGenerateColumns = false;
+ dgvFdConfigs.MultiSelect = false;
+
+ // 添加数据列
+ dgvFdConfigs.Columns.AddRange(new DataGridViewColumn[]
+ {
+ new DataGridViewTextBoxColumn
+ {
+ Name = "FdNum",
+ HeaderText = "分档编号",
+ DataPropertyName = "FdNum",
+ ReadOnly = true,
+ Width = 80,
+ ValueType = typeof(int)
+ },
+ #region 分档类型
+ new DataGridViewTextBoxColumn
+ {
+ Name = "OKLD1Type",
+ HeaderText = "OK拉带类型1",
+ DataPropertyName = "OKLD1Type",
+ Width = 120,
+ ValueType = typeof(string)
+ },
+ new DataGridViewTextBoxColumn
+ {
+ Name = "OKLD2Type",
+ HeaderText = "OK拉带类型2",
+ DataPropertyName = "OKLD2Type",
+ Width = 120,
+ ValueType = typeof(string)
+ },
+ new DataGridViewTextBoxColumn
+ {
+ Name = "OKLD3Type",
+ HeaderText = "OK拉带类型3",
+ DataPropertyName = "OKLD3Type",
+ Width = 120,
+ ValueType = typeof(string)
+ },
+ new DataGridViewTextBoxColumn
+ {
+ Name = "OKLD4Type",
+ HeaderText = "OK拉带类型4",
+ DataPropertyName = "OKLD4Type",
+ Width = 120,
+ ValueType = typeof(string)
+ },
+ #endregion
+ #region NG拉带类型
+ new DataGridViewComboBoxColumn
+ {
+ Name = "NGLD5Type",
+ HeaderText = "NG拉带类型5",
+ DataPropertyName = "NGLD5Type",//NG拉带
+ DataSource = new List(NGLDTypes1), // 使用新列表避免引用问题
+ Width = 160,
+ ValueType = typeof(string),
+ FlatStyle = FlatStyle.Flat,
+ DefaultCellStyle = new DataGridViewCellStyle
+ {
+ BackColor = Color.FromArgb(14, 23, 38), // 深色背景
+ ForeColor = Color.White, // 白色文字
+ SelectionBackColor = Color.FromArgb(0, 122, 204), // 选中时的背景色
+ SelectionForeColor = Color.White, // 选中时的文字颜色
+ Font = new Font("微软雅黑", 9F) // 字体设置
+ }
+ },
+ new DataGridViewComboBoxColumn
+ {
+ Name = "NGLD6Type",
+ HeaderText = "NG拉带类型6",
+ DataPropertyName = "NGLD6Type",//NG拉带
+ DataSource = new List(NGLDTypes2), // 使用新列表避免引用问题
+ Width = 160,
+ ValueType = typeof(string),
+ FlatStyle = FlatStyle.Flat,
+ DefaultCellStyle = new DataGridViewCellStyle
+ {
+ BackColor = Color.FromArgb(14, 23, 38), // 深色背景
+ ForeColor = Color.White, // 白色文字
+ SelectionBackColor = Color.FromArgb(0, 122, 204), // 选中时的背景色
+ SelectionForeColor = Color.White, // 选中时的文字颜色
+ Font = new Font("微软雅黑", 9F) // 字体设置
+ }
+ },
+ new DataGridViewComboBoxColumn
+ {
+ Name = "NGLD7Type",
+ HeaderText = "NG拉带类型7",
+ DataPropertyName = "NGLD7Type",//NG拉带
+ DataSource = new List(NGLDTypes3), // 使用新列表避免引用问题
+ Width = 160,
+ ValueType = typeof(string),
+ FlatStyle = FlatStyle.Flat,
+ DefaultCellStyle = new DataGridViewCellStyle
+ {
+ BackColor = Color.FromArgb(14, 23, 38), // 深色背景
+ ForeColor = Color.White, // 白色文字
+ SelectionBackColor = Color.FromArgb(0, 122, 204), // 选中时的背景色
+ SelectionForeColor = Color.White, // 选中时的文字颜色
+ Font = new Font("微软雅黑", 9F) // 字体设置
+ }
+ },
+ #endregion
+ #region 开启分档
+ new DataGridViewCheckBoxColumn
+ {
+ Name = "IsFDActive",
+ HeaderText = "开启分档",
+ DataPropertyName = "IsFDActive",
+ Width = 80,
+ ValueType = typeof(bool),
+ TrueValue = true,
+ FalseValue = false
+ },
+ new DataGridViewCheckBoxColumn
+ {
+ Name = "IsNGActive",
+ HeaderText = "NG电池不分类排出",
+ DataPropertyName = "IsNGActive",
+ Width = 80,
+ ValueType = typeof(bool),
+ TrueValue = true,
+ FalseValue = false
+ },
+ #endregion
+
+ new DataGridViewButtonColumn
+ {
+ Name = "Edit",
+ HeaderText = "操作",
+ Text = "修改",
+ UseColumnTextForButtonValue = true,
+ Width = 80
+ }
+
+
+ });
+
+
+ // 设置列为只读
+ SetColumnsFDReadOnly(false);
+
+ // 绑定事件
+ dgvFdConfigs.CellClick += DgvFdConfigs_CellClick;
+ dgvFdConfigs.CellValidating += DgvFdConfigs_CellValidating;
+ dgvFdConfigs.CellValueChanged += DgvFdConfigs_CellValueChanged;
+ dgvFdConfigs.DataError += DgvFdConfigs_DataError;
+
+ // 设置自动调整行高
+ dgvFdConfigs.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
+ dgvFdConfigs.RowHeadersVisible = false;
+ }
+ private void DgvFdConfigs_CellClick(object sender, DataGridViewCellEventArgs e)
+ {
+ if (e.RowIndex < 0) return;
+
+ var columnName = dgvFdConfigs.Columns[e.ColumnIndex].Name;
+
+ // 如果正在编辑其他行,阻止操作
+ if (isFDEditing && editingFDRowIndex != e.RowIndex)
+ {
+ MessageBox.Show("请先完成当前编辑操作", "提示",
+ MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ return;
+ }
+
+ var fdConfig = fdConfigs[e.RowIndex];
+
+ switch (columnName)
+ {
+ case "Edit":
+ HandleFDEdit(e.RowIndex);
+ break;
+ case "CommConfig":
+ HandleCommFdConfig(fdConfig);
+ break;
+ case "VariableConfig":
+ HandleVariableFdConfig(fdConfig);
+ break;
+ case "Delete":
+ HandleFdDelete(e.RowIndex, fdConfig);
+ break;
+ }
+ }
+ private void HandleFDEdit(int rowIndex)
+ {
+ if (!isFDEditing)
+ {
+ // 开始编辑
+ isFDEditing = true;
+ editingFDRowIndex = rowIndex;
+ SetColumnsFDReadOnly(false); // 设置其他列为可编辑
+
+ // 更改编辑按钮文本为"保存"
+ dgvFdConfigs.Rows[rowIndex].Cells["Edit"].Value = "保存";
+
+ // 禁用其他行的按钮
+ foreach (DataGridViewRow row in dgvFdConfigs.Rows)
+ {
+ if (row.Index != rowIndex)
+ {
+ if (row.Cells["Edit"] is DataGridViewButtonCell editCell)
+ editCell.Value = "";
+ if (row.Cells["CommConfig"] is DataGridViewButtonCell configCell)
+ configCell.Value = "";
+ if (row.Cells["Delete"] is DataGridViewButtonCell deleteCell)
+ deleteCell.Value = "";
+ }
+ }
+
+ // 禁用添加按钮
+ //btAddPLC.Enabled = false;
+ }
+ else if (rowIndex == editingFDRowIndex)
+ {
+ // 保存更改
+ //if (ValidateRow(rowIndex))
+ {
+ SaveFDChanges(rowIndex);
+ EndFDEditing();
+ }
+ }
+ }
+ private void EndFDEditing()
+ {
+ isFDEditing = false;
+ editingFDRowIndex = -1;
+ SetColumnsFDReadOnly(true);
+
+ // 恢复所有按钮文本和状态
+ foreach (DataGridViewRow row in dgvFdConfigs.Rows)
+ {
+ row.Cells["Edit"].Value = "编辑";
+ // row.Cells["CommConfig"].Value = "通信组";
+ // row.Cells["Delete"].Value = "删除";
+ }
+
+ // 启用添加按钮
+ //btAddPLC.Enabled = true;
+ }
+ private void HandleCommFdConfig(FDConfig fdconfig)
+ {
+ }
+ private void HandleVariableFdConfig(FDConfig fdconfig)
+ {
+
+ }
+ private void HandleFdDelete(int rowIndex, FDConfig fdconfig)
+ {
+ if (MessageBox.Show($"确定要删除 分档 {fdconfig.FdNum} 吗?", "确认删除",
+ MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
+ {
+ fdConfigs.RemoveAt(rowIndex);
+ SaveFDConfig();
+ RefreshFDDataGridView();
+ }
+ }
+ private void SaveFDChanges(int rowIndex)
+ {
+ try
+ {
+ var row = dgvFdConfigs.Rows[rowIndex];
+ var config = fdConfigs[rowIndex];
+
+ // 更新配置对象
+ config.OKLD1Type = row.Cells["OKLD1Type"].Value?.ToString() ?? "";
+ config.OKLD2Type = row.Cells["OKLD2Type"].Value?.ToString() ?? "";
+ config.OKLD3Type = row.Cells["OKLD3Type"].Value?.ToString() ?? "";
+ config.OKLD4Type = row.Cells["OKLD4Type"].Value?.ToString() ?? "";
+ config.NGLD5Type = row.Cells["NGLD5Type"].Value?.ToString() ?? "";
+ config.NGLD6Type = row.Cells["NGLD6Type"].Value?.ToString() ?? "";
+ config.NGLD7Type = row.Cells["NGLD7Type"].Value?.ToString() ?? "";
+
+ config.IsFDActive = row.Cells["IsFDActive"].Value != null &&
+ Convert.ToBoolean(row.Cells["IsFDActive"].Value);
+ config.IsNGActive = row.Cells["IsNGActive"].Value != null &&
+ Convert.ToBoolean(row.Cells["IsNGActive"].Value);
+
+ // 保存更改
+ SaveFDConfig();
+ MessageBox.Show("保存成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ }
+ catch (Exception ex)
+ {
+ // 这里只显示错误信息,不再抛出异常
+ MessageBox.Show($"保存失败:{ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+ private void DgvFdConfigs_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
+ {
+ if (e.RowIndex < 0 || !isFDEditing || e.RowIndex != editingFDRowIndex) return;
+
+ string newValue = e.FormattedValue.ToString();
+ var column = dgvFdConfigs.Columns[e.ColumnIndex];
+
+ }
+ private void DgvFdConfigs_CellValueChanged(object sender, DataGridViewCellEventArgs e)
+ {
+ if (e.RowIndex < 0) return;
+ dgvFdConfigs.Rows[e.RowIndex].ErrorText = string.Empty;
+ }
+ private void DgvFdConfigs_DataError(object sender, DataGridViewDataErrorEventArgs e)
+ {
+ e.ThrowException = false;
+ string columnName = dgvFdConfigs.Columns[e.ColumnIndex].HeaderText;
+ MessageBox.Show($"'{columnName}'列的输入数据格式不正确", "数据错误",
+ MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ }
+ private void SaveFDConfig()
+ {
+ try
+ {
+ // 创建备份
+ if (File.Exists(FdConfigFilePath))
+ {
+ string backupFile = $"{FdConfigFilePath}.bak";
+ File.Copy(FdConfigFilePath, backupFile, true);
+ }
+
+ // 直接保存到目标文件
+ MiniExcel.SaveAs(FdConfigFilePath, fdConfigs, overwriteFile: true);
+ }
+ catch (IOException ex)
+ {
+ MessageBox.Show($"保存文件时发生IO错误:{ex.Message}\n请确保文件未被其他程序占用。",
+ "保存错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ throw;
+ }
+ catch (UnauthorizedAccessException ex)
+ {
+ MessageBox.Show($"没有足够的权限保存文件:{ex.Message}\n请确保有写入权限。",
+ "权限错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ throw;
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show($"保存配置时发生错误:{ex.Message}",
+ "保存错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ throw;
+ }
+ }
+ private void RefreshFDDataGridView()
+ {
+ dgvFdConfigs.DataSource = null;
+ dgvFdConfigs.DataSource = new BindingList(fdConfigs);
+ }
+ #endregion
}
}
diff --git a/LargeSquareOne/FrmParamSet.resx b/LargeSquareOne/FrmParamSet.resx
index 0f15feb..656bea1 100644
--- a/LargeSquareOne/FrmParamSet.resx
+++ b/LargeSquareOne/FrmParamSet.resx
@@ -220,6 +220,32 @@
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
\ No newline at end of file