schangxiang@126.com
2024-06-09 d5f80f2bae790fd13c159ff59568766b22495e30
修复bug
已添加2个文件
已修改9个文件
1846 ■■■■■ 文件已修改
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/BLL/SystemValue.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/BLL/WorkPieceInfoManager.cs 177 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/DataCaptureHandler_02.cs 114 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/DataCaptureHandler_05.cs 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_DataCaptureV3/App - 本机环境.config 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_DataCaptureV3/App - 生产环境.config 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_DataCaptureV3/App.config 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_DataCaptureV3/FormMain.Designer.cs 947 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_DataCaptureV3/FormMain.cs 408 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_DataCaptureV3/iWare_SCADA_DataCaptureV3.csproj 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_Model/MiddleModel/WorkPieceLogMiddle.cs 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/BLL/SystemValue.cs
@@ -16,6 +16,11 @@
    /// </summary>
    public class SystemValue
    {
        /// <summary>
        /// OP20的当前检测面值
        /// </summary>
        public static string OP20_Side_Value = "";
        #region PLC链接
        public static object lockPlcService = new object();
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/BLL/WorkPieceInfoManager.cs
@@ -41,7 +41,7 @@
                return workPiece.Id;
            }
        }
        public static WorkPieceLogMiddle GetAddWorkPieceLog(WorkPieceLogMiddle loginfo)
        {
            loginfo.Id = Yitter.IdGenerator.YitIdHelper.NextId();
@@ -140,15 +140,16 @@
            try
            {
                var info = db.KnifeToolEquipmentInfo.Where(o => o.EquipmentID.Equals(loginfo.EquipmentID)).ToList();
                foreach(var item in info)
                foreach (var item in info)
                {
                    item.CurrentLife++;
                    item.UpdatedTime= DateTime.Now;
                    item.UpdatedTime = DateTime.Now;
                }
            }catch(Exception ex)
            }
            catch (Exception ex)
            {
               loginfo.Remarks = (loginfo.Remarks ?? "") + $"{loginfo.WorkPieceID ?? "空"}刀具寿命更新数据异常{ex.Message}";
                loginfo.Remarks = (loginfo.Remarks ?? "") + $"{loginfo.WorkPieceID ?? "空"}刀具寿命更新数据异常{ex.Message}";
            }
        }
@@ -157,7 +158,7 @@
        /// è¯»å–二维码时逻辑
        /// æ ¡éªŒå·¥ä»¶æ˜¯å¦è·³åºï¼Œè´¨é‡æ˜¯å¦åˆæ ¼
        /// </summary>
        public static void ReadQRcode(WorkPieceLog loginfo, LogType type,PLCService plcService, int? IsFeedback)
        public static void ReadQRcode(WorkPieceLog loginfo, LogType type, PLCService plcService, int? IsFeedback)
        {//此处同时插入了WorkPieceLog,WorkPieceInfoLog表,并新增或修改WorkPieceInfo表
            using (DbModel db = new DbModel())
            {
@@ -193,7 +194,7 @@
                        }
                        else
                        {
                            if(info.WorkingProcedureCurrent.Equals("OP05"))
                            if (info.WorkingProcedureCurrent.Equals("OP05"))
                            {
                                loginfo.Remarks = (loginfo.Remarks ?? "") + $"读取二维码{loginfo.WorkPieceID ?? "空"} OP05工序重复读取了";
                                return;
@@ -211,9 +212,9 @@
                        info.WorkPieceCurrentPosition = loginfo.WorkingProcedure;
                        info.WorkPieceCurrentPositionOrder = info.WorkingProcedurePlan.IndexOf(loginfo.WorkingProcedure) / 2;
                        info.WorkingProcedureCurrent = loginfo.WorkingProcedure;
                        info.Remarks = info.Remarks??""+$"{info.WorkingProcedureCurrent}工件上线";
                        info.Remarks = info.Remarks ?? "" + $"{info.WorkingProcedureCurrent}工件上线";
                        var pro = db.WorkPieceProcess.Where(o => o.WorkPieceID == loginfo.WorkPieceID &&!o.OperationType.Equals("SPC")&& (o.EndTime==null|| o.EndTime<=DateTime.MinValue)).OrderByDescending(o => o.StartTime).FirstOrDefault();
                        var pro = db.WorkPieceProcess.Where(o => o.WorkPieceID == loginfo.WorkPieceID && !o.OperationType.Equals("SPC") && (o.EndTime == null || o.EndTime <= DateTime.MinValue)).OrderByDescending(o => o.StartTime).FirstOrDefault();
                        if (pro != null && pro.WorkPieceID.Length > 1)
                        {
                            pro.EndTime = DateTimeHelper.GetDateTime();
@@ -318,14 +319,14 @@
                        {//没有工件信息,不做更新
                            Log4NetHelper.WriteErrorLog(type, $"设备{loginfo.EquipmentID} å‘Šè­¦ç›‘控{loginfo.WorkingProcedure} æ²¡æœ‰èŽ·å–åˆ°è®¾å¤‡ç›‘æŽ§ä¿¡æ¯ï¼ŒçŽ°æ–°å¢ž");
                            equinfo = EntityPropHelper.Mapper<EquipmentCurrentMonitor, WorkPieceLog>(loginfo);
                            equinfo.OnlineTime=DateTime.Now;
                            equinfo.OnlineTime = DateTime.Now;
                            isAddEquipmentCurrentMonitor = true;
                        }
                        else
                        {//更新工件
                            equinfo.WorkPieceID = loginfo.WorkPieceID;
                            equinfo.UpdatedUserName = loginfo.MonitoringPoint;
                            equinfo.UpdatedTime = DateTime.Now;
                            equinfo.UpdatedTime = DateTime.Now;
                            equinfo.OnlineTime = DateTime.Now;
                        }
                        if (isAddEquipmentCurrentMonitor)
@@ -345,7 +346,7 @@
                    }
                }
                catch(Exception e)
                catch (Exception e)
                {
                    loginfo.Remarks = (loginfo.Remarks ?? "") + $"读取二维码{loginfo.WorkPieceID ?? "空"}更新数据异常{e.Message}";
                }
@@ -393,7 +394,7 @@
                            {
                                return loginfo;
                            }
                            loginfo.QualityOP40To1 = ((StandardValue + oldvalue*1.0/ cofOP40.DecimalPlaces).ToString());
                            loginfo.QualityOP40To1 = ((StandardValue + oldvalue * 1.0 / cofOP40.DecimalPlaces).ToString());
                            //+(string.IsNullOrEmpty(cofOP40.Unit) ? "" : cofOP40.Unit)
                        }
                        break;
@@ -409,7 +410,7 @@
                            {
                                return loginfo;
                            }
                            loginfo.QualityOP20To1 = ((StandardValue + oldvalue * 1.0 /  cofOP20.DecimalPlaces).ToString());
                            loginfo.QualityOP20To1 = ((StandardValue + oldvalue * 1.0 / cofOP20.DecimalPlaces).ToString());
                        }
                        break;
                    case "OP60":
@@ -445,7 +446,7 @@
                }
            }
            catch(Exception ex)
            catch (Exception ex)
            {
            }
@@ -477,7 +478,7 @@
                        info = db.WorkPieceInfo.Where(o => o.WorkPieceID == loginfo.WorkPieceID).FirstOrDefault();
                        if (info == null || info.WorkPieceID.Length < 1)
                        {//没有工件信息,不做更新
                            if (loginfo.MonitoringPoint.Equals("OP1002") || loginfo.MonitoringPoint.Equals("OP1003")|| loginfo.MonitoringPoint.Contains("OP2002"))
                            if (loginfo.MonitoringPoint.Equals("OP1002") || loginfo.MonitoringPoint.Equals("OP1003") || loginfo.MonitoringPoint.Contains("OP2002"))
                            {//OP10 æ²¡æœ‰ä¸Šçº¿æ‰«ç æžªï¼Œçº¦å®šç”¨æµ‹é‡å®Œæˆä¿¡å·å½“上线标记
                                info = EntityPropHelper.Mapper<WorkPieceInfo, WorkPieceLogMiddle>(loginfo);
                                //EntityPropHelper<WorkPieceLog, WorkPieceInfo>.CopyProp(loginfo, info, loginfo.GetWorkPieceInfoDict());
@@ -505,7 +506,7 @@
                            }
                            else
                            {
                                loginfo2.Remarks = loginfo2.Remarks??""+$"|工件{loginfo.WorkPieceID} è´¨é‡æ£€æµ‹å®Œæˆå·¥åº{loginfo.MonitoringPoint} æ²¡æœ‰èŽ·å–åˆ°å·¥ä»¶ä¿¡æ¯ä¸åšæ›´æ–°";
                                loginfo2.Remarks = loginfo2.Remarks ?? "" + $"|工件{loginfo.WorkPieceID} è´¨é‡æ£€æµ‹å®Œæˆå·¥åº{loginfo.MonitoringPoint} æ²¡æœ‰èŽ·å–åˆ°å·¥ä»¶ä¿¡æ¯ä¸åšæ›´æ–°";
                                Log4NetHelper.WriteErrorLog(type, $"工件{loginfo.WorkPieceID} è´¨é‡æ£€æµ‹å®Œæˆå·¥åº{loginfo.MonitoringPoint} æ²¡æœ‰èŽ·å–åˆ°å·¥ä»¶ä¿¡æ¯ä¸åšæ›´æ–°");
                                return;
                            }
@@ -532,7 +533,7 @@
                            if (equinfo == null || equinfo.Id < 1)
                            {//没有工件信息,不做更新
                                Log4NetHelper.WriteErrorLog(type, $"设备{loginfo.EquipmentID} å‘Šè­¦ç›‘控{loginfo.WorkingProcedure} æ²¡æœ‰èŽ·å–åˆ°è®¾å¤‡ç›‘æŽ§ä¿¡æ¯ï¼ŒçŽ°æ–°å¢ž");
                                equinfo = EntityPropHelper.Mapper<EquipmentCurrentMonitor, WorkPieceLog>(loginfo);
                                equinfo = EntityPropHelper.Mapper<EquipmentCurrentMonitor, WorkPieceLog>(loginfo);
                                equinfo.OnlineTime = DateTime.Now;
                                isAddEquipmentCurrentMonitor = true;
                            }
@@ -556,7 +557,7 @@
                        info.QualityStateUpdateUser = loginfo.UpdatedUserName;
                        info.QualityStateUpdateTime = loginfo.UpdatedTime.Value.LocalDateTime;
                        info.QualityStateUpdateMode = QualityStateUpdateMode.Auto.ToString();
                        info.Remarks = info.Remarks??"" + $"{loginfo.WorkingProcedure}质量检测完成修改";
                        info.Remarks = info.Remarks ?? "" + $"{loginfo.WorkingProcedure}质量检测完成修改";
                        info.UpdatedUserName = loginfo.MonitoringPoint;
                        info.UpdatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local);
                        if (!(info.WorkingProcedureStartTime.HasValue && info.WorkingProcedureStartTime > DateTime.Parse("1900/01/01")))
@@ -576,12 +577,12 @@
                        loginfo.QualityState = info.QualityState;
                        if (isAddWorkPieceInfo)
                        {
                            db.WorkPieceInfo.Add(info);
                            db.WorkPieceInfo.Add(info);
                        }
                        #region æ ¹æ®æ ‡å‡†å€¼æ›´æ–°æœ€æ–°è´¨é‡æ•°æ®ï¼ˆOP10/OP40/OP20/OP60)
                        var qcofig = db.EquipmentQualityConfig.Where(o => o.WorkingProcedure.Equals(loginfo.WorkingProcedure) && o.ParamType!=1 && o.IsDeleted == false).ToList();
                        if(qcofig.Count > 0)
                        var qcofig = db.EquipmentQualityConfig.Where(o => o.WorkingProcedure.Equals(loginfo.WorkingProcedure) && o.ParamType != 1 && o.IsDeleted == false).ToList();
                        if (qcofig.Count > 0)
                        {
                            QualityDataHand(loginfo, qcofig);
                        }
@@ -595,15 +596,15 @@
                            db.QualityDataInfo.Add(GetAddQualityDataInfo(qualityData));
                        }
                        //修改QualityDataInfo表 //重复收到质量信息,会覆盖之前的
                        EntityPropHelper<WorkPieceLogMiddle, QualityDataInfo>.CopyProp(loginfo, qualityData, GetQualityDataInfoUpdate(loginfo.WorkingProcedure,loginfo.MonitoringPoint));//指定修改字段
                        EntityPropHelper<WorkPieceLogMiddle, QualityDataInfo>.CopyProp(loginfo, qualityData, GetQualityDataInfoUpdate(loginfo.WorkingProcedure, loginfo.MonitoringPoint));//指定修改字段
                        qualityData.QualityStateUpdateUser = info.UpdatedUserName;
                        qualityData.QualityReceiveTime = info.UpdatedTime.Value.LocalDateTime;
                        qualityData.QualityStateUpdateMode = info.QualityStateUpdateMode;
                        if (loginfo.WorkingProcedure.Equals("OP10"))
                        {
                            qualityData.OP10QualityState = loginfo.QualityState.HasValue? loginfo.QualityState.Value.ToString():"3";
                            qualityData.OP10QualityReceiveTime= DateTimeHelper.GetDateTime();
                            qualityData.OP10QualityState = loginfo.QualityState.HasValue ? loginfo.QualityState.Value.ToString() : "3";
                            qualityData.OP10QualityReceiveTime = DateTimeHelper.GetDateTime();
                        }
                        else if (loginfo.WorkingProcedure.Equals("OP20"))
                        {
@@ -620,7 +621,7 @@
                                case "OP3002CH3":
                                    qualityData.OP30QualityFilePathCH3 = loginfo.OP30QualityFilePathCH3;
                                    qualityData.OP30QualityStateCH3 = loginfo.QualityState.HasValue ? loginfo.QualityState.Value.ToString() : "3";
                                    qualityData.OP30QualityReceiveTimeCH3= DateTimeHelper.GetDateTime();
                                    qualityData.OP30QualityReceiveTimeCH3 = DateTimeHelper.GetDateTime();
                                    break;
                                case "OP3002CH4":
                                    qualityData.OP30QualityFilePathCH4 = loginfo.OP30QualityFilePathCH4;
@@ -667,7 +668,7 @@
                        }
                        var pro = db.WorkPieceProcess.Where(o => o.WorkPieceID == loginfo.WorkPieceID && o.WorkingProcedureCurrent == info.WorkingProcedureCurrent && o.OperationType == OperationType.生产.ToString()).OrderByDescending(o => o.StartTime).FirstOrDefault();
                        if (pro == null || pro.WorkPieceID.Length < 1||loginfo.MonitoringPoint.Equals("OP1002") || loginfo.MonitoringPoint.Equals("OP1003") || loginfo.MonitoringPoint.Contains("OP2002"))
                        if (pro == null || pro.WorkPieceID.Length < 1 || loginfo.MonitoringPoint.Equals("OP1002") || loginfo.MonitoringPoint.Equals("OP1003") || loginfo.MonitoringPoint.Contains("OP2002"))
                        {// OP10 æ²¡æœ‰ä¸Šçº¿æ‰«ç æžªï¼Œçº¦å®šç”¨æµ‹é‡å®Œæˆä¿¡å·å½“上线标记,所以上线需要修改的字段放这里
                            //上线是每次都插入
@@ -693,9 +694,14 @@
                            pro.QualityState = info.QualityState.HasValue ? info.QualityState.Value : 9;
                            //TODO:判断如果是60工序,那么就要更新pro表的创建人为loginfo.MonitoringPoint ã€Editby shaocx,2024-06-05】
                            if (loginfo.WorkingProcedure == "OP60")
                            {
                                pro.CreatedUserName = loginfo.MonitoringPoint;
                            }
                        }
                        if (loginfo.QualityType!=null&& loginfo.QualityType.Equals(QualityType.SPC.ToString()))
                        if (loginfo.QualityType != null && loginfo.QualityType.Equals(QualityType.SPC.ToString()))
                        {//SPC反馈,
                            if (loginfo.QualityState != (int)QualityState.OK)
                            {
@@ -705,7 +711,7 @@
                                //时间段结束时间:抽检工件质量结果出现后的时间
                                //抽检工件工序扫描枪外入口处的第一个工件 ä¹ŸæŠŠè´¨é‡çŠ¶æ€ç½®ä¸ºç–‘ä¼¼
                                //(每一工序SPC抽检是设置的固定的,比如200抽4,状态置为疑似时若工件还在设备内,会继续生产完毕后排出)
                                //目前这块逻辑放到了 WebAPI中了
                            }
@@ -720,7 +726,7 @@
                    }
                }
                catch(Exception ex)
                catch (Exception ex)
                {
                    loginfo2.Remarks = (loginfo2.Remarks ?? "") + $"质量检测完成{loginfo.WorkPieceID ?? "空"}更新数据异常{ex.Message}++{ex.StackTrace}";
                    Log4NetHelper.WriteErrorLog(type, $" {loginfo.WorkingProcedure}工序监控读码标记 è¯»å–工件码数据[{loginfo.WorkPieceID ?? "空"}]时异常:");
@@ -781,9 +787,9 @@
                            info.WorkingProcedureCompleted = info.WorkingProcedureCompleted + loginfo.WorkingProcedure;//已完成工序
                            info.WorkPieceCurrentPositionOrder = info.WorkingProcedurePlan.IndexOf(loginfo.WorkingProcedure) / 2;
                        }
                        if(loginfo.WorkingProcedure.Equals("OP35"))
                        if (loginfo.WorkingProcedure.Equals("OP35"))
                        {//为了解决OP35的采集到的质量信息是OK还NOOK的情况,OP35 NOOK时更新质量信息
                            loginfo2.Remarks = (loginfo2.Remarks ?? "") + $"OP35NOOK原质量信息{(info.QualityState.HasValue? info.QualityState.Value.ToString():"空")}";
                            loginfo2.Remarks = (loginfo2.Remarks ?? "") + $"OP35NOOK原质量信息{(info.QualityState.HasValue ? info.QualityState.Value.ToString() : "空")}";
                            info.QualityState = (int)QualityState.NG;
                            if (!info.QualityState.Equals(((int)QualityState.OK).ToString()))
                            {
@@ -826,7 +832,7 @@
                {
                    loginfo2.Remarks = (loginfo2.Remarks ?? "") + $"读取二维码{loginfo.WorkPieceID ?? "空"}更新数据异常{e.Message}";
                }
                db.WorkPieceLog.Add(GetAddWorkPieceLog(loginfo2));//插入工件采集日志表
                db.SaveChanges();
@@ -845,8 +851,9 @@
            {
                WorkPieceLog loginfo2 = new WorkPieceLog();
                loginfo2 = EntityPropHelper.Mapper<WorkPieceLog, WorkPieceLogMiddle>(loginfo);
                try {
                    if ((loginfo.WorkPieceID != null && loginfo.WorkPieceID.Trim('\0').Length == 22)
                try
                {
                    if ((loginfo.WorkPieceID != null && loginfo.WorkPieceID.Trim('\0').Length == 22)
                        //|| !((loginfo.WorkingProcedure.Equals("OP10") || loginfo.WorkingProcedure.Equals("OP40")) && loginfo.Remarks.Length > 0)
                        )
                    {
@@ -860,7 +867,7 @@
                        }
                        else
                        {//更新表WorkPieceInfo
                            if(loginfo.WorkingProcedure.Equals("OP10"))
                            if (loginfo.WorkingProcedure.Equals("OP10"))
                            {
                                info.WorkPieceCurrentPosition = info.WorkingProcedureCurrent + "SPC";
                                //var WorkingProcedure = (loginfo.MonitoringPoint.Equals("OP1002") ? "OP10" : "OP40");
@@ -888,8 +895,8 @@
                        info.Remarks = "工件SPC抽检推出";
                        //更新上一工序的结束时间
                        var pro = db.WorkPieceProcess.Where(o => o.WorkPieceID == loginfo.WorkPieceID && o.WorkingProcedureCurrent == loginfo.WorkingProcedure && o.OperationType == OperationType.生产.ToString()).OrderByDescending(o=>o.StartTime).FirstOrDefault();
                        if (pro != null && pro.WorkPieceID.Length >0)
                        var pro = db.WorkPieceProcess.Where(o => o.WorkPieceID == loginfo.WorkPieceID && o.WorkingProcedureCurrent == loginfo.WorkingProcedure && o.OperationType == OperationType.生产.ToString()).OrderByDescending(o => o.StartTime).FirstOrDefault();
                        if (pro != null && pro.WorkPieceID.Length > 0)
                        {
                            pro.EndTime = DateTimeHelper.GetDateTime();
                            pro.Remarks = (pro.Remarks ?? "") + "SPC抽检结束";
@@ -907,7 +914,7 @@
                        process.CreatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local);
                        process.UpdatedUserName = loginfo.MonitoringPoint;
                        process.UpdatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local);
                        process.Remarks =  "工件SPC抽检推出";
                        process.Remarks = "工件SPC抽检推出";
                        db.WorkPieceProcess.Add(process);
@@ -928,7 +935,7 @@
                    db.WorkPieceLog.Add(GetAddWorkPieceLog(loginfo2));//插入工件采集日志表
                    db.SaveChanges();
                }
            }
        }
        /// <summary>
@@ -993,7 +1000,7 @@
                        {//若一直没有工序开始时间,则赋值当前时间
                            info.WorkingProcedureStartTime = DateTimeHelper.GetDateTime();
                        }
                        info.WorkingProcedureEndTime= DateTimeHelper.GetDateTime();
                        info.WorkingProcedureEndTime = DateTimeHelper.GetDateTime();
                        info.WorkPieceCurrentPositionOrder = info.WorkingProcedurePlan.IndexOf(loginfo.WorkingProcedure) / 2;
                        info.Remarks = $"{loginfo.WorkingProcedure}工序完成";
                        long op80id = 0;
@@ -1037,7 +1044,7 @@
                                info.QualityErrorInfo = "";
                            }
                        }
                        else if(loginfo.WorkingProcedure.Equals("OP30"))
                        else if (loginfo.WorkingProcedure.Equals("OP30"))
                        {
                            info.QualityState = (int)((loginfo.QualityStateStr.Equals("OK") || loginfo.QualityStateStr.Equals("0K")) ? QualityState.OK : QualityState.NG);
@@ -1076,7 +1083,7 @@
                            }
                        }
                        var pro = db.WorkPieceProcess.Where(o => o.WorkPieceID == loginfo.WorkPieceID && o.WorkingProcedureCurrent == info.WorkingProcedureCurrent && o.OperationType == OperationType.生产.ToString()).OrderByDescending(o=>o.StartTime).FirstOrDefault();
                        var pro = db.WorkPieceProcess.Where(o => o.WorkPieceID == loginfo.WorkPieceID && o.WorkingProcedureCurrent == info.WorkingProcedureCurrent && o.OperationType == OperationType.生产.ToString()).OrderByDescending(o => o.StartTime).FirstOrDefault();
                        if (pro == null || pro.WorkPieceID.Length < 1)
                        {
                            WorkPieceProcess process = new WorkPieceProcess();
@@ -1091,7 +1098,7 @@
                            process.UpdatedTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local);
                            process.OperationType = OperationType.生产.ToString();
                            process.Remarks = "";
                            if(op80id>0)
                            if (op80id > 0)
                            {
                                process.QualityDataInfoID = op80id;
                            }
@@ -1144,25 +1151,26 @@
            using (DbModel db = new DbModel())
            {
                bool isAddAlert = false;
                try {
                try
                {
                    var equipmentlist = db.EquipmentBaseInfo.Where(o=>o.IsDeleted==false).ToList();
                    var equipmentlist = db.EquipmentBaseInfo.Where(o => o.IsDeleted == false).ToList();
                    var alertlist = db.v_get_equipment_alert.Where(o => o.IsDeleted == false).ToList();
                    var knifetoolbase = db.KnifeToolBaseInfo.Where(o => o.IsDeleted == false).ToList();
                    var knifetoolinfo= db.KnifeToolEquipmentInfo.Where(o => o.IsDeleted == false).ToList();
                    var knifetoolinfo = db.KnifeToolEquipmentInfo.Where(o => o.IsDeleted == false).ToList();
                    //var knifelist = db.KnifeToolEquipmentInfo.GroupJoin(db.KnifeToolBaseInfo.Where(o => o.IsDeleted == false).ToList(), a => a.EquipmentID, b => b.EquipmentID, (a, b) => new { a,b})
                        //.SelectMany(ab => ab.b.DefaultIfEmpty(), (ab, b) => new { ab.a, b.KnifeToolChangeAlertThreshold,b.KnifeToolLife })
                        //.Where(o => o.a.IsDeleted == false)
                        //.ToList();
                    //.SelectMany(ab => ab.b.DefaultIfEmpty(), (ab, b) => new { ab.a, b.KnifeToolChangeAlertThreshold,b.KnifeToolLife })
                    //.Where(o => o.a.IsDeleted == false)
                    //.ToList();
                    foreach (var item in equipmentlist)
                    {
                        try
                        {
                            var alert = alertlist.Where(o => o.EquipmentId.Equals(item.EquipmentId)).FirstOrDefault();
                            if (alert==null||alert.Id<1)
                            if (alert == null || alert.Id < 1)
                            {
                                alert = EntityPropHelper.Mapper<v_get_equipment_alert, EquipmentBaseInfo>(item);
                                isAddAlert=true;
                                isAddAlert = true;
                            }
                            //if(item.WorkingProcedure.Equals("OP70"))
                            {
@@ -1191,7 +1199,7 @@
                            }
                            //if (!item.WorkingProcedure.Equals("OP05")&& !item.WorkingProcedure.Equals("OP30") && !item.WorkingProcedure.Equals("OP70") && !item.WorkingProcedure.Equals("OP80"))
                            {
                                if(item.CuttingFluidChangeTime.HasValue)
                                if (item.CuttingFluidChangeTime.HasValue)
                                {
                                    if (item.CuttingFluidChangeTime.Value.AddDays(item.CuttingFluidChangeAlertThreshold).Date <= DateTime.Now.Date)
                                    {//切削液告警
@@ -1214,10 +1222,10 @@
                            }
                            bool flag = false;
                            string desc = $"设备【{item.EquipmentName}】";
                            foreach (var knife in knifetoolinfo.Where(o=>o.EquipmentID.Equals(item.EquipmentId)))
                            foreach (var knife in knifetoolinfo.Where(o => o.EquipmentID.Equals(item.EquipmentId)))
                            {
                                var list = knifetoolbase.Where(o => o.KnifeToolID.Equals(knife.KnifeToolID)).FirstOrDefault();
                                if(list!=null)
                                if (list != null)
                                {
                                    if ((knife.CurrentLife + list.KnifeToolChangeAlertThreshold) >= list.KnifeToolLife)
                                    {//刀具告警
@@ -1228,7 +1236,7 @@
                                    }
                                }
                            }
                            if(!flag)
                            if (!flag)
                            {//没有刀具告警
                                alert.IsAlertKnifeTool = false;
                                alert.KnifeToolDesc = "";
@@ -1247,7 +1255,7 @@
                            }
                            else
                            {
                                if(string.IsNullOrEmpty(info.Alertmsg))
                                if (string.IsNullOrEmpty(info.Alertmsg))
                                {
                                    alert.IsAlert = false;
                                    alert.AlertDesc = "";
@@ -1262,7 +1270,8 @@
                            {
                                db.v_get_equipment_alert.Add(alert);
                            }
                        }catch(Exception ex)
                        }
                        catch (Exception ex)
                        {
                            Log4NetHelper.WriteErrorLog(type, $" {item.EquipmentName}设备计算告警时异常:");
@@ -1273,8 +1282,8 @@
                {
                    Log4NetHelper.WriteErrorLog(type, $" è®¾å¤‡å‘Šè­¦ç›‘控(清洗液,切削液,刀具告警等) è®¡ç®—时异常:{e.Message} {e.StackTrace}");
                }
                //db.WorkPieceLog.Add(loginfo2);//插入设备采集日志表
                db.SaveChanges();
@@ -1335,9 +1344,9 @@
                    string faultmsg = "";
                    int i = 1;
                    foreach (var failues in Failueslist)
                    {
                    {
                        faultall += (failues + "\r\n");
                        EquipmentFailureCode codeinfo = codelist.Where(o =>  o.Code == failues.ToString()).FirstOrDefault();
                        EquipmentFailureCode codeinfo = codelist.Where(o => o.Code == failues.ToString()).FirstOrDefault();
                        if (codeinfo != null && codeinfo.Code.Length > 0)
                        {
                            faultmsg += (i.ToString() + "." + (codeinfo.CodeDesc ?? codeinfo.Code) + "\r\n");
@@ -1377,13 +1386,13 @@
                    string alertall = "";
                    string warnmsg = "";
                    i = 1;
                    foreach(var alert in Alertlist)
                    foreach (var alert in Alertlist)
                    {
                        alertall+=(alert+"\r\n");
                        var codeinfo=codelist.Where(o => o.Code == alert.ToString()).FirstOrDefault();
                        if(codeinfo!=null&&codeinfo.Code.Length>0)
                        alertall += (alert + "\r\n");
                        var codeinfo = codelist.Where(o => o.Code == alert.ToString()).FirstOrDefault();
                        if (codeinfo != null && codeinfo.Code.Length > 0)
                        {
                            warnmsg += (i.ToString()+"."+(codeinfo.CodeDesc ?? codeinfo.Code) + "\r\n");
                            warnmsg += (i.ToString() + "." + (codeinfo.CodeDesc ?? codeinfo.Code) + "\r\n");
                        }
                        else
                        {
@@ -1456,7 +1465,7 @@
                            info.Warnmsg = warnmsg;//这个需要代码对应字典维护信息才知道
                            info.WarnType = alertall;
                        }
                        if (info.EquipmentCurrentState==null||(!info.EquipmentCurrentState.Equals(((int)EnumEquipmentCurrentStateDisplay.离线).ToString())))
                        if (info.EquipmentCurrentState == null || (!info.EquipmentCurrentState.Equals(((int)EnumEquipmentCurrentStateDisplay.离线).ToString())))
                        {//如果设备状态为离线,则此处不需要判断任何信息
                            if (loginfo.IsNormalProduction && !loginfo.LackMaterial && !loginfo.FullMaterial)
                            {//自动运行状态+不缺料+不堵料
@@ -1504,7 +1513,7 @@
                        infolog.Remarks = "告警信息出现变更3";
                        infolog.UpdateDesc = (infolog.UpdateDesc ?? "") + $"设备状态变更为{((EnumEquipmentCurrentStateDisplay)int.Parse(State)).ToString()}\r\n";
                        isAddEquipmentWorkingLog = true;
                        isStatechange=true;
                        isStatechange = true;
                    }
                    #endregion
@@ -1538,7 +1547,7 @@
                    //查找是否有未结束的告警
                    var equlogalert = db.EquipmentWorkingLog.Where(o => o.EquipmentID == loginfo.EquipmentID
                    && o.WarnStartTime != null && o.WarnStartTime != DateTime.MinValue && (o.WarnEndTime == null|| o.WarnEndTime == DateTime.MinValue))
                    && o.WarnStartTime != null && o.WarnStartTime != DateTime.MinValue && (o.WarnEndTime == null || o.WarnEndTime == DateTime.MinValue))
                        .OrderByDescending(o => o.WarnStartTime).FirstOrDefault();
                    if (loginfo.IsMessage)
                    {//若有告警,如果有设备状态变更,肯定插入,此处只修改即可
@@ -1722,13 +1731,13 @@
                        info.Id = Yitter.IdGenerator.YitIdHelper.NextId();
                        db.EquipmentCurrentMonitor.Add(info);
                    }
                    if(isAddEquipmentWorkingLog)
                    if (isAddEquipmentWorkingLog)
                    {
                        db.EquipmentWorkingLog.Add(infolog);
                    }
                }
                catch (Exception e)
                {
                {
                    loginfo2.Remarks = (loginfo2.Remarks ?? "") + $"{loginfo2.MonitoringPoint}设备监控更新数据异常{e.Message}.{e.StackTrace}";
                    Log4NetHelper.WriteErrorLog(type, $"{loginfo2.MonitoringPoint}设备监控更新数据异常{e.Message}.{e.StackTrace}");
                }
@@ -1777,13 +1786,13 @@
                    info.UpdatedUserName = loginfo.MonitoringPoint;
                    info.UpdatedTime = DateTime.Now;
                    info.Alertmsg = "设备离线";
                    info.AlertTime= DateTimeHelper.GetDateTime();
                    info.AlertTime = DateTimeHelper.GetDateTime();
                    info.FailureType = "";
                    //若没有离线的信息,则新增一条
                    var equlog = db.EquipmentWorkingLog.Where(o => o.EquipmentID == loginfo.EquipmentID
                    && o.EquipmentStateStartTime != null && o.EquipmentStateStartTime != DateTime.MinValue &&(o.EquipmentStateEndTime==null||o.EquipmentStateEndTime==DateTime.MinValue)
                    &&o.EquipmentState.Equals(state)
                    && o.EquipmentStateStartTime != null && o.EquipmentStateStartTime != DateTime.MinValue && (o.EquipmentStateEndTime == null || o.EquipmentStateEndTime == DateTime.MinValue)
                    && o.EquipmentState.Equals(state)
                    ).OrderByDescending(o => o.EquipmentStateStartTime).FirstOrDefault();
                    if (equlog == null)
@@ -1810,7 +1819,7 @@
                }
                else
                {//最新状态为开机
                    if(((int)EnumEquipmentCurrentStateDisplay.离线).ToString() == info.EquipmentCurrentState)
                    if (((int)EnumEquipmentCurrentStateDisplay.离线).ToString() == info.EquipmentCurrentState)
                    {//只有离线状态,才能变成开机
                        state = ((int)EnumEquipmentCurrentStateDisplay.待机).ToString();
                        info.EquipmentCurrentState = state;
@@ -1821,7 +1830,7 @@
                        //有离线的数据,则更新
                        var equlog = db.EquipmentWorkingLog.Where(o => o.EquipmentID == loginfo.EquipmentID
                        && o.EquipmentStateStartTime != null && o.EquipmentStateStartTime != DateTime.MinValue&& (o.EquipmentStateEndTime == null || o.EquipmentStateEndTime == DateTime.MinValue)
                        && o.EquipmentStateStartTime != null && o.EquipmentStateStartTime != DateTime.MinValue && (o.EquipmentStateEndTime == null || o.EquipmentStateEndTime == DateTime.MinValue)
                        && o.EquipmentState.Equals(((int)EnumEquipmentCurrentStateDisplay.离线).ToString())
                        ).OrderByDescending(o => o.EquipmentStateStartTime).FirstOrDefault();
                        if (equlog != null)
@@ -1874,13 +1883,13 @@
                using (DbModel db = new DbModel())
                {
                    var info = db.ThreadStatusMonitor.Where(o => o.Threadcode == threadinfo.Threadcode).FirstOrDefault();
                    if (info == null || info.Id==0)
                    if (info == null || info.Id == 0)
                    {//没有工件信息,不做更新
                        threadinfo.Id = Yitter.IdGenerator.YitIdHelper.NextId();
                        threadinfo.CreatedTime= DateTimeHelper.GetDateTime();
                        threadinfo.CreatedTime = DateTimeHelper.GetDateTime();
                        threadinfo.CreatedUserName = threadinfo.Threadcode;
                        db.ThreadStatusMonitor.Add(threadinfo);
                    }
                    else
                    {//更新表WorkPieceInfo
@@ -1901,7 +1910,7 @@
                }
            }
            catch(Exception ex)
            catch (Exception ex)
            {
            }
@@ -1914,7 +1923,7 @@
        /// </summary>
        /// <param name="WorkingProcedure"></param>
        /// <returns></returns>
        public static Dictionary<string, string> GetQualityDataInfoUpdate(string WorkingProcedure="",string MonitoringPoint="")
        public static Dictionary<string, string> GetQualityDataInfoUpdate(string WorkingProcedure = "", string MonitoringPoint = "")
        {
            Dictionary<string, string> dict = new Dictionary<string, string>();
@@ -2053,13 +2062,13 @@
        }
        /// <summary>
        ///         è§£æžäºŒç»´ç 
        /// </summary>
        /// <param name="loginfo"></param>
        /// <returns></returns>
        public static WorkPieceInfo ParseQRCode(WorkPieceInfo loginfo)
        {
            if(string.IsNullOrEmpty(loginfo.WorkPieceID)|| loginfo.WorkPieceID.Length!=22)
            if (string.IsNullOrEmpty(loginfo.WorkPieceID) || loginfo.WorkPieceID.Length != 22)
            {
                return loginfo;
            }
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/DataCaptureHandler_02.cs
@@ -25,7 +25,7 @@
    /// <summary>
    /// æµ‹é‡å®Œæˆæ ‡è®°
    /// </summary>
    public class DataCaptureHandler_02: DataCaptureHandler
    public class DataCaptureHandler_02 : DataCaptureHandler
    {
        public static readonly DataCaptureHandler_02 Instance = new DataCaptureHandler_02();
@@ -182,13 +182,23 @@
                        }
                        else
                        {
                            var value = plcService.ReadValuePoint(_dataCaptureConfig.DbNumber, _dataCaptureConfig.Offset, PLCManger.GetTypeForString(_dataCaptureConfig.DataCaptureColumnType));
                            object value;
                            //判断DBNumber不同  ã€Editby shaocx,2024-06-07】
                            if (_dataCaptureConfig.DbNumber.ToUpper() == "M")
                            {
                                value = plcService.ReadValuePointV2(_dataCaptureConfig.DbNumber + _dataCaptureConfig.Offset, PLCManger.GetTypeForString(_dataCaptureConfig.DataCaptureColumnType));
                            }
                            else
                            {
                                value = plcService.ReadValuePoint(_dataCaptureConfig.DbNumber, _dataCaptureConfig.Offset, PLCManger.GetTypeForString(_dataCaptureConfig.DataCaptureColumnType));
                            }
                            Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"{DataCapturePointCode}测量完成【{value_02}】【{value.ToString()}】【{_dataCaptureConfig.PLCIP}】【{_dataCaptureConfig.DbNumber}】【{_dataCaptureConfig.Offset}】[{_dataCaptureConfig.DataCapturePLCType}][{plcService.IsConnected.ToString()}]");
                            if (value_02.ToUpper().Equals("FALSE") && value.ToString().ToUpper().Equals("TRUE"))
                            {//当上一标记位0,当前获取标记为1时,
                             //触发操作,  å¹¶ç»™é™æ€å˜é‡èµ‹å€¼ä¸º1
                             //业务代码
                             Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"{DataCapturePointCode}进入测量完成【{value_02}】【{value.ToString()}】");
                                Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"{DataCapturePointCode}进入测量完成【{value_02}】【{value.ToString()}】");
                                threadStatusMonitor.Threadlastmodifytime = DateTime.Now;
                                WorkPieceLogMiddle wplog = new WorkPieceLogMiddle();
@@ -199,7 +209,7 @@
                                wplog.MonitoringPoint = DataCapturePointCode;
                                wplog.CreatedTime = DateTimeHelper.GetDateTime();
                                wplog.CreatedUserName = DataCapturePointCode;
                                wplog.UpdatedUserName = Environment.MachineName+"自动" + Thread.CurrentThread.ManagedThreadId.ToString();
                                wplog.UpdatedUserName = Environment.MachineName + "自动" + Thread.CurrentThread.ManagedThreadId.ToString();
                                wplog.UpdatedTime = DateTimeHelper.GetDateTime();
                                wplog.IsDeleted = false;
                                wplog.QualityType = QualityType.Online.ToString();
@@ -215,7 +225,7 @@
                                        {
                                            Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $" {DataCapturePointCode}工序监控测量完成标记 è¯»å–工件码动态由于字段名没找到,赋值【{WorkingProcedure ?? "空字符串"}】失败{wplog.Id}");
                                        }
                                        if(set.PropertyType.FullName.Equals("System.String"))
                                        if (set.PropertyType.FullName.Equals("System.String"))
                                        {
                                            set.SetValue(wplog, valuecol.ToString());//给动态字段赋值
                                        }
@@ -235,13 +245,13 @@
                                    if (WorkingProcedure.Equals("OP30"))
                                    {
                                        var time = DateTimeHelper.GetDateTime();
                                        if (fileFindTime==null)
                                        if (fileFindTime == null)
                                        {
                                            fileFindTime = time.AddMinutes(-10);
                                        }
                                        //获取文件夹名称
                                        List<string> directorylist = new List<string>();
                                        List<string> directorylist = new List<string>();
                                        string directory = time.ToString("yyyy-MM-dd_HH");
                                        string directoryOther = time.AddSeconds(-30).ToString("yyyy-MM-dd_HH");
                                        directorylist.Add(directory);
@@ -255,7 +265,7 @@
                                        {
                                            try
                                            {
                                                if (DataCapturePointCode.Contains("CH3")|| DataCapturePointCode.Contains("CH6"))
                                                if (DataCapturePointCode.Contains("CH3") || DataCapturePointCode.Contains("CH6"))
                                                {//工位3 æ¶¨æ–­åŠ›çŸ©
                                                 //扫描当前时间与30秒前出现的文件,一般节拍在15秒左右(两个服务器时间不一样会导致取不到文件)
                                                    var newFiles = FileHelper.DetectNewFiles(path36 + @"\" + dir, "*.pdf", 10, fileFindTime.Value, time.AddMinutes(120));
@@ -264,7 +274,7 @@
                                                        files.Add((FileInfo)file);
                                                    }
                                                }
                                                else if (DataCapturePointCode.Contains("CH4")|| DataCapturePointCode.Contains("CH5"))
                                                else if (DataCapturePointCode.Contains("CH4") || DataCapturePointCode.Contains("CH5"))
                                                {//工位4 é¢„拧紧力矩  SEQ_04
                                                    //扫描当前时间与30秒前出现的文件,一般节拍在15秒左右(两个服务器时间不一样会导致取不到文件)
@@ -275,21 +285,21 @@
                                                    }
                                                }
                                            }
                                            catch(Exception ex)
                                            catch (Exception ex)
                                            {
                                                Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"{DataCapturePointCode}测量完成读取文件{dir}数据时异常,采集时间{fileFindTime.Value},避免工序完成异常1:", ex);
                                            }
                                        }
                                        files = files.OrderByDescending(o => o.LastWriteTime).ToList();
                                        if(files.Count>0)
                                        if (files.Count > 0)
                                        {
                                            Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"工位【{DataCapturePointCode}】工件【{wplog.WorkPieceID??"空字符"}】文件{files[0].FullName}测量完成读取文件数据开始");
                                            Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"工位【{DataCapturePointCode}】工件【{wplog.WorkPieceID ?? "空字符"}】文件{files[0].FullName}测量完成读取文件数据开始");
                                            switch (DataCapturePointCode)
                                            {
                                                case "OP3002CH3":
                                                    wplog.OP30QualityFilePathCH3 = files[0].FullName;
                                                    wplog.QualityStateStr= FileHelper.ReadPdfFileForSpire(files[0].FullName, "Result");
                                                    wplog.QualityStateStr = FileHelper.ReadPdfFileForSpire(files[0].FullName, "Result");
                                                    wplog.QualityOP30To1 = FileHelper.ReadPdfFileForSpire(files[0].FullName, "Y-Maximum");//涨断力矩
                                                    break;
                                                case "OP3002CH4":
@@ -312,9 +322,9 @@
                                            fileFindTime = files[0].LastWriteTime;
                                        }
                                    }
                                    else if(WorkingProcedure.Equals("OP35"))
                                    else if (WorkingProcedure.Equals("OP35"))
                                    {
                                        if(wplog.OP35OK)
                                        if (wplog.OP35OK)
                                        {
                                            wplog.QualityStateStr = "OK";
                                        }
@@ -323,8 +333,10 @@
                                            wplog.QualityStateStr = "NG";
                                        }
                                    }
                                    else if(WorkingProcedure.Equals("OP60"))
                                    else if (WorkingProcedure.Equals("OP60"))
                                    {
                                        //增加OP60 è´¨é‡ä¿¡æ¯è¯»å–校验 ã€Editby shaocx,2024-06-07】
                                        if (wplog.Op60_Place_Flag == false) continue;
                                        var time = DateTimeHelper.GetDateTime();
                                        if (fileFindTime == null)
@@ -339,7 +351,7 @@
                                        {
                                            files.Add((FileInfo)file);
                                        }
                                        if(files.Count()>0)
                                        if (files.Count() > 0)
                                        {
                                            files = files.OrderByDescending(o => o.LastWriteTime).ToList();
                                            List<OP60Info> op60Infos = new List<OP60Info>();
@@ -347,7 +359,7 @@
                                            {//取倒序匹配的文件名为工件号的文件
                                                if (file.Name.Contains("SP-" + DataCapturePointCode.Substring(DataCapturePointCode.Length - 1, 1)))
                                                {
                                                    Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"{DataCapturePointCode}下线完成读取到文件{file.Name},是指定的工件");
                                                    Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"{DataCapturePointCode}下线完成读取到文件{file.Name},是指定的工件{wplog.WorkPieceID},上次获取尼伯丁文件里的时间值:{(op60QualityTime == null ? "" : op60QualityTime.ToString())}");
                                                    var datatable = CSVHelper.ReadCSVList(file.FullName);
                                                    if (datatable.Count < 106)
@@ -374,11 +386,11 @@
                                                            op60Infos.Add(info);
                                                        }
                                                    }
                                                    if(op60Infos.Count()>=2)
                                                    if (op60Infos.Count() >= 2)
                                                    {
                                                        if(op60QualityTime.HasValue)
                                                        if (op60QualityTime.HasValue)
                                                        {
                                                            if(op60Infos[0].datetimeHandle> op60QualityTime.Value)
                                                            if (op60Infos[0].datetimeHandle > op60QualityTime.Value)
                                                            {
                                                                wplog.QualityOP60To1 = op60Infos[0].value;
                                                                wplog.QualityOP60To2 = op60Infos[1].value;
@@ -409,6 +421,14 @@
                                    }
                                    else if (WorkingProcedure.Equals("OP20"))
                                    {
                                        //记录公用变量,保存点位M88的信息 ã€Editby shaocx,2024-06-07】
                                        if (DataCapturePointCode.Contains("OP2002C"))
                                        {//从OP2002C读取,因为顺序是 CBA,而不是ABC
                                            string sideValue = GetSideForOP20(plcService);
                                            SystemValue.OP20_Side_Value = sideValue;
                                        }
                                        wplog.MonitoringPoint += SystemValue.OP20_Side_Value;
                                        wplog.CreatedUserName = wplog.MonitoringPoint;
                                        var time = DateTimeHelper.GetDateTime();
                                        if (fileFindTime == null)
@@ -433,7 +453,7 @@
                                            {//取倒序匹配的文件名为工件号的文件
                                                if (file.Name.Contains("SP-" + DataCapturePointCode.Substring(DataCapturePointCode.Length - 1, 1)))
                                                {
                                                    Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"{DataCapturePointCode}下线完成读取到文件{file.Name},是指定的工件");
                                                    Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"{DataCapturePointCode}下线完成读取到文件{file.Name},是指定的工件{wplog.WorkPieceID},上次获取尼伯丁文件里的时间值:{(op60QualityTime == null ? "" : op60QualityTime.ToString())}");
                                                    var datatable = CSVHelper.ReadCSVList(file.FullName);
                                                    if (datatable.Count < 57)
@@ -549,6 +569,48 @@
                Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"读{DataCapturePointCode}工序监控测量标记 ä¸åšæ ¡éªŒï¼Œè¯·ç¡®è®¤æ˜¯å¦é…ç½®å¼‚常");
            }
        }
        /// <summary>
        /// èŽ·å–OP20的哪个面
        /// </summary>
        /// <param name="plcService"></param>
        /// <returns></returns>
        private string GetSideForOP20(PLCService plcService)
        {
            try
            {
                object value_M88 = plcService.ReadValuePointV2("M88", PLCManger.GetTypeForString("int"));
                int i_value_M88 = 0;
                var isRight = int.TryParse(value_M88.ToString(), out i_value_M88);
                Log4NetHelper.WriteInfoLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"读取 {DataCapturePointCode}工序监控测量标记数据时异常,获取OP20的哪个面,i_value_M88:{i_value_M88}");
                if (isRight)
                {
                    if (i_value_M88 == 64)
                    {
                        return "1";
                    }
                    else if (i_value_M88 == 256)
                    {
                        return "2";
                    }
                    else if (i_value_M88 == 1024)
                    {
                        return "3";
                    }
                    else if (i_value_M88 == 4096)
                    {
                        return "4";
                    }
                }
                return "";
            }
            catch (Exception ex)
            {
                Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"读取 {DataCapturePointCode}工序监控测量标记数据时异常,获取OP20的哪个面,:", ex);
                return "";
            }
        }
        public WorkPieceLogMiddle GetCH4Info(string FullName, WorkPieceLogMiddle wplog)
        {
            try
@@ -562,13 +624,13 @@
                foreach (string line in lines2)
                {
                    count++;
                    if (count==4)
                    if (count == 4)
                    {//获取质量结果
                        var list = line.Split(' ');
                        if(list.Count()>0)
                        if (list.Count() > 0)
                        {
                            var str = list[list.Count() - 1].ToString().Trim();
                            wplog.QualityStateStr= str.Equals("OK")?"OK":"NG";
                            wplog.QualityStateStr = str.Equals("OK") ? "OK" : "NG";
                        }
                    }
                    // å¤„理每一行的逻辑
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_BusinessLogical/DataCaptureHandlerV2/DataCaptureHandler_05.cs
@@ -17,7 +17,7 @@
    /// <summary>
    ///  å·¥åºå®Œæˆ
    /// </summary>
    public class DataCaptureHandler_05: DataCaptureHandler
    public class DataCaptureHandler_05 : DataCaptureHandler
    {
        public static readonly DataCaptureHandler_05 Instance = new DataCaptureHandler_05();
@@ -132,7 +132,7 @@
                                wplog.CreatedTime = DateTimeHelper.GetDateTime();
                                wplog.CreatedUserName = DataCapturePointCode;
                                wplog.UpdatedTime = DateTimeHelper.GetDateTime();
                                wplog.UpdatedUserName = Environment.MachineName+"自动" + Thread.CurrentThread.ManagedThreadId.ToString();
                                wplog.UpdatedUserName = Environment.MachineName + "自动" + Thread.CurrentThread.ManagedThreadId.ToString();
                                wplog.IsDeleted = false;
                                foreach (var col in colConfig.Where(o => o.DataCapturePointCode == DataCapturePointCode))
                                {
@@ -148,7 +148,7 @@
                                        }
                                        set.SetValue(wplog, valuecol);//给动态字段赋值
                                    }
                                    catch(Exception setex)
                                    catch (Exception setex)
                                    {
                                        Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(_dataCaptureConfig.WorkingProcedure), $" {DataCapturePointCode}工序监控读码标记 è¯»å–工件码动态赋值【{_dataCaptureConfig.WorkingProcedure ?? "空字符串"}】异常{wplog.Id},赋值列名[{col.DataCaptureColumnTabelName ?? "空字符串"}]", setex);
                                    }
@@ -172,14 +172,14 @@
                                        {
                                            files.Add((FileInfo)file);
                                        }
                                        files = files.OrderByDescending(o => o.LastWriteTime).ToList();
                                        files = files.OrderByDescending(o => o.LastWriteTime).ToList();
                                        Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"OP80下线完成读取到文件{files.Count()}个工件{wplog.WorkPieceID}  æ—¶é—´{fileFindTime.Value.ToString()}");
                                        foreach (var file in files)
                                        {//取倒序匹配的文件名为工件号的文件
                                            if (file.Name.Contains(wplog.WorkPieceID))
                                            {
                                                Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"OP80下线完成读取到文件{file.Name},是指定的工件");
                                                Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"OP80下线完成读取到文件{file.Name},是指定的工件{wplog.WorkPieceID}");
                                                var datatable = CSVHelper.ReadCSVList(file.FullName);
                                                List<string> rowFirst = new List<string>();
@@ -188,7 +188,7 @@
                                                {
                                                    rowFirst = datatable[0].Split(',').ToList();
                                                    rowSecond = datatable[1].Split(',').ToList();
                                                    if(rowSecond.Count<11)
                                                    if (rowSecond.Count < 11)
                                                    {
                                                        continue;
                                                    }
@@ -224,22 +224,22 @@
                                                        item.下限 = rowSecond[9 + i * 10];
                                                        item.状态 = rowSecond[10 + i * 10];
                                                        oP80Info.OP80ItemInfolist.Add(item);
                                                        if(item.名称.Equals("Weight Class") || item.名称.Equals("Weight Small End")
                                                            || item.名称.Equals("Weight Big End") || item.名称.Equals("Dime Small_End Class")
                                                        if (item.名称.Equals("Weight Class") || item.名称.Equals("Weight Small End")
                                                            || item.名称.Equals("Weight Big End") || item.名称.Equals("Dime Small_End Class")
                                                            || item.名称.Equals("Dime Big_End Class"))
                                                        {
                                                        }
                                                        else
                                                        {
                                                            if(!string.IsNullOrEmpty(item.状态))
                                                            if (!string.IsNullOrEmpty(item.状态))
                                                            {
                                                                oP80Info.OP80ItemStatusInfolist.Add(item);
                                                            }
                                                        }
                                                    }
                                                    if(oP80Info.OP80ItemStatusInfolist.Count>0)
                                                    if (oP80Info.OP80ItemStatusInfolist.Count > 0)
                                                    {
                                                        if(oP80Info.OP80ItemStatusInfolist.Any(o=>!o.状态.Equals("OK")))
                                                        if (oP80Info.OP80ItemStatusInfolist.Any(o => !o.状态.Equals("OK")))
                                                        {
                                                            wplog.QualityStateStr = "NG";
                                                        }
@@ -293,7 +293,7 @@
                                    }
                                }
                                catch(Exception ex)
                                catch (Exception ex)
                                {
                                    threadStatusMonitor.ErrorMsg = $" {RandomHelper.GenerateRandomCode(4)} è¯»å–{DataCapturePointCode}下线标记 å®Œæˆè¯»å–文件数据时异常,请查看日志!";
                                    Log4NetHelper.WriteErrorLog(PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure), $"OP80下线完成读取文件数据时异常,避免工序完成异常:", ex);
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_DataCaptureV3/App - ±¾»ú»·¾³.config
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,49 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <appSettings>
    <!--net use x: \\192.168.216.133\Destination /savecred /persistent:yes
    net use z: \\192.168.216.130\kistler /savecred /persistent:yes
    net use y: \\192.168.216.6\data /savecred /persistent:yes
    net use u: \\192.168.216.130\NutrunnerData /savecred /persistent:yes-->
    <!-- åˆ¤æ–­å·¥åºæ˜¯å¦è·³åºçš„基准配置 -->
    <add key="WorkingProcedureAllStr" value="OP05OP10OP20OP30OP35OP40OP50OP60OP70OP80" />
      <add key="WorkPeiceIDPath" value="Y:\qualified" />
    <!-- op30工序的工位质量信息 -->
    <add key="OP30QualityDataFor36Station" value="Z:\" />
    <add key="OP30QualityDataFor45Station" value="U:\" />
    <add key="OP60QualityData" value="V:\" />
    <add key="OP20QualityData" value="W:\" />
    <add key="OP80QualityData" value="X:\CA4GC20TD\" />
      <!--<add key="WorkPeiceIDPath" value="C:\Users\13650\Desktop\yiqi" />-->
    <add key="HeartBeatAlertInterval" value="2000" />
  </appSettings>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
  </startup>
  <entityFramework>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
  <connectionStrings>
    <!--<add name="SCADA_DF22001_CORE" connectionString="Server=.;Database=iWare.SCADA;User=sa;Password=123abc.com;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />-->
    <!--<add name="SCADA_DF22001_CORE" connectionString="Server=10.10.40.166;Database=iWare.SCADA;User=sa;Password=123abc.com;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />-->
    <add name="SCADA_DF22001_CORE" connectionString="Server=.;Database=iWare.SCADA;User=sa;Password=123abc.com;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />
    <add name="SCModel" connectionString="data source=.;initial catalog=SCTest_new;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
  </connectionStrings>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_DataCaptureV3/App - Éú²ú»·¾³.config
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,49 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <appSettings>
    <!--net use x: \\192.168.216.133\Destination /savecred /persistent:yes
    net use z: \\192.168.216.130\kistler /savecred /persistent:yes
    net use y: \\192.168.216.6\data /savecred /persistent:yes
    net use u: \\192.168.216.130\NutrunnerData /savecred /persistent:yes-->
    <!-- åˆ¤æ–­å·¥åºæ˜¯å¦è·³åºçš„基准配置 -->
    <add key="WorkingProcedureAllStr" value="OP05OP10OP20OP30OP35OP40OP50OP60OP70OP80" />
      <add key="WorkPeiceIDPath" value="Y:\qualified" />
    <!-- op30工序的工位质量信息 -->
    <add key="OP30QualityDataFor36Station" value="Z:\" />
    <add key="OP30QualityDataFor45Station" value="U:\" />
    <add key="OP60QualityData" value="V:\" />
    <add key="OP20QualityData" value="W:\" />
    <add key="OP80QualityData" value="X:\CA4GC20TD\" />
      <!--<add key="WorkPeiceIDPath" value="C:\Users\13650\Desktop\yiqi" />-->
    <add key="HeartBeatAlertInterval" value="2000" />
  </appSettings>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
  </startup>
  <entityFramework>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
  <connectionStrings>
    <!--<add name="SCADA_DF22001_CORE" connectionString="Server=.;Database=iWare.SCADA;User=sa;Password=123abc.com;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />-->
    <!--<add name="SCADA_DF22001_CORE" connectionString="Server=10.10.40.166;Database=iWare.SCADA;User=sa;Password=123abc.com;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />-->
    <add name="SCADA_DF22001_CORE" connectionString="Server=192.168.216.203;Database=iWare.SCADA;User=sa;Password=123abc.com;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />
    <add name="SCModel" connectionString="data source=192.168.216.203;initial catalog=SCTest_new;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
  </connectionStrings>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_DataCaptureV3/App.config
@@ -14,15 +14,15 @@
    <!-- åˆ¤æ–­å·¥åºæ˜¯å¦è·³åºçš„基准配置 -->
    <add key="WorkingProcedureAllStr" value="OP05OP10OP20OP30OP35OP40OP50OP60OP70OP80" />
      <add key="WorkPeiceIDPath" value="Y:\qualified" />
    <add key="WorkPeiceIDPath" value="Y:\qualified" />
    <!-- op30工序的工位质量信息 -->
    <add key="OP30QualityDataFor36Station" value="Z:\" />
    <add key="OP30QualityDataFor45Station" value="U:\" />
    <add key="OP60QualityData" value="V:\" />
    <add key="OP20QualityData" value="W:\" />
    <add key="OP80QualityData" value="X:\CA4GC20TD\" />
      <!--<add key="WorkPeiceIDPath" value="C:\Users\13650\Desktop\yiqi" />-->
    <add key="HeartBeatAlertInterval" value="2000" />
    <!--<add key="WorkPeiceIDPath" value="C:\Users\13650\Desktop\yiqi" />-->
    <add key="HeartBeatAlertInterval" value="2000" />
  </appSettings>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
@@ -35,8 +35,8 @@
  <connectionStrings>
    <!--<add name="SCADA_DF22001_CORE" connectionString="Server=.;Database=iWare.SCADA;User=sa;Password=123abc.com;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />-->
    <!--<add name="SCADA_DF22001_CORE" connectionString="Server=10.10.40.166;Database=iWare.SCADA;User=sa;Password=123abc.com;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />-->
    <add name="SCADA_DF22001_CORE" connectionString="Server=192.168.216.203;Database=iWare.SCADA;User=sa;Password=123abc.com;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />
    <add name="SCModel" connectionString="data source=192.168.216.203;initial catalog=SCTest_new;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
    <add name="SCADA_DF22001_CORE" connectionString="Server=.;Database=iWare.SCADA;User=sa;Password=123abc.com;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />
    <add name="SCModel" connectionString="data source=.;initial catalog=SCTest_new;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
  </connectionStrings>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_DataCaptureV3/FormMain.Designer.cs
@@ -271,10 +271,11 @@
            this.tabControl1.Controls.Add(this.tabPage2);
            this.tabControl1.Controls.Add(this.tabPage3);
            this.tabControl1.Controls.Add(this.tabPage4);
            this.tabControl1.Location = new System.Drawing.Point(10, 10);
            this.tabControl1.Location = new System.Drawing.Point(13, 12);
            this.tabControl1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.tabControl1.Name = "tabControl1";
            this.tabControl1.SelectedIndex = 0;
            this.tabControl1.Size = new System.Drawing.Size(1088, 583);
            this.tabControl1.Size = new System.Drawing.Size(1451, 729);
            this.tabControl1.TabIndex = 0;
            // 
            // tabPage5
@@ -282,10 +283,11 @@
            this.tabPage5.Controls.Add(this.groupBox11);
            this.tabPage5.Controls.Add(this.button23);
            this.tabPage5.Controls.Add(this.button24);
            this.tabPage5.Location = new System.Drawing.Point(4, 22);
            this.tabPage5.Location = new System.Drawing.Point(4, 25);
            this.tabPage5.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.tabPage5.Name = "tabPage5";
            this.tabPage5.Padding = new System.Windows.Forms.Padding(3);
            this.tabPage5.Size = new System.Drawing.Size(1080, 557);
            this.tabPage5.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.tabPage5.Size = new System.Drawing.Size(1443, 700);
            this.tabPage5.TabIndex = 4;
            this.tabPage5.Text = "线程监控";
            this.tabPage5.UseVisualStyleBackColor = true;
@@ -296,9 +298,11 @@
            | System.Windows.Forms.AnchorStyles.Left) 
            | System.Windows.Forms.AnchorStyles.Right)));
            this.groupBox11.Controls.Add(this.dataGridView2);
            this.groupBox11.Location = new System.Drawing.Point(3, 57);
            this.groupBox11.Location = new System.Drawing.Point(4, 71);
            this.groupBox11.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.groupBox11.Name = "groupBox11";
            this.groupBox11.Size = new System.Drawing.Size(1071, 478);
            this.groupBox11.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.groupBox11.Size = new System.Drawing.Size(1428, 598);
            this.groupBox11.TabIndex = 5;
            this.groupBox11.TabStop = false;
            this.groupBox11.Text = "线程信息";
@@ -316,23 +320,29 @@
            this.Column5,
            this.Column6});
            this.dataGridView2.Dock = System.Windows.Forms.DockStyle.Fill;
            this.dataGridView2.Location = new System.Drawing.Point(3, 17);
            this.dataGridView2.Location = new System.Drawing.Point(4, 22);
            this.dataGridView2.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.dataGridView2.Name = "dataGridView2";
            this.dataGridView2.RowHeadersWidth = 51;
            this.dataGridView2.RowTemplate.Height = 23;
            this.dataGridView2.Size = new System.Drawing.Size(1065, 458);
            this.dataGridView2.Size = new System.Drawing.Size(1420, 572);
            this.dataGridView2.TabIndex = 0;
            // 
            // Threadcode
            // 
            this.Threadcode.DataPropertyName = "Threadcode";
            this.Threadcode.HeaderText = "采集编号";
            this.Threadcode.MinimumWidth = 6;
            this.Threadcode.Name = "Threadcode";
            this.Threadcode.Width = 125;
            // 
            // Threadcname
            // 
            this.Threadcname.DataPropertyName = "Threadcname";
            this.Threadcname.HeaderText = "采集点描述";
            this.Threadcname.MinimumWidth = 6;
            this.Threadcname.Name = "Threadcname";
            this.Threadcname.Width = 125;
            // 
            // Column1
            // 
@@ -340,7 +350,9 @@
            dataGridViewCellStyle1.Format = "yyyy/MM/dd hh:mm:ss";
            this.Column1.DefaultCellStyle = dataGridViewCellStyle1;
            this.Column1.HeaderText = "最新执行时间";
            this.Column1.MinimumWidth = 6;
            this.Column1.Name = "Column1";
            this.Column1.Width = 125;
            // 
            // Column2
            // 
@@ -348,24 +360,31 @@
            dataGridViewCellStyle2.Format = "yyyy/MM/dd hh:mm:ss";
            this.Column2.DefaultCellStyle = dataGridViewCellStyle2;
            this.Column2.HeaderText = "最新跑逻辑时间";
            this.Column2.MinimumWidth = 6;
            this.Column2.Name = "Column2";
            this.Column2.Width = 125;
            // 
            // Column3
            // 
            this.Column3.DataPropertyName = "ThreadId";
            this.Column3.HeaderText = "线程ID";
            this.Column3.MinimumWidth = 6;
            this.Column3.Name = "Column3";
            this.Column3.Width = 125;
            // 
            // Column4
            // 
            this.Column4.DataPropertyName = "ThreadFrequency";
            this.Column4.HeaderText = "线程频率";
            this.Column4.MinimumWidth = 6;
            this.Column4.Name = "Column4";
            this.Column4.Width = 125;
            // 
            // Column5
            // 
            this.Column5.DataPropertyName = "Remarks";
            this.Column5.HeaderText = "备注";
            this.Column5.MinimumWidth = 6;
            this.Column5.Name = "Column5";
            this.Column5.Width = 150;
            // 
@@ -373,14 +392,16 @@
            // 
            this.Column6.DataPropertyName = "ErrorMsg";
            this.Column6.HeaderText = "异常信息";
            this.Column6.MinimumWidth = 6;
            this.Column6.Name = "Column6";
            this.Column6.Width = 200;
            // 
            // button23
            // 
            this.button23.Location = new System.Drawing.Point(285, 18);
            this.button23.Location = new System.Drawing.Point(380, 22);
            this.button23.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.button23.Name = "button23";
            this.button23.Size = new System.Drawing.Size(146, 33);
            this.button23.Size = new System.Drawing.Size(195, 41);
            this.button23.TabIndex = 4;
            this.button23.Text = "停止所有选中线程";
            this.button23.UseVisualStyleBackColor = true;
@@ -388,9 +409,10 @@
            // 
            // button24
            // 
            this.button24.Location = new System.Drawing.Point(52, 18);
            this.button24.Location = new System.Drawing.Point(69, 22);
            this.button24.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.button24.Name = "button24";
            this.button24.Size = new System.Drawing.Size(146, 33);
            this.button24.Size = new System.Drawing.Size(195, 41);
            this.button24.TabIndex = 3;
            this.button24.Text = "启动所有选中线程";
            this.button24.UseVisualStyleBackColor = true;
@@ -422,19 +444,21 @@
            this.tabPage1.Controls.Add(this.button16);
            this.tabPage1.Controls.Add(this.button26);
            this.tabPage1.Controls.Add(this.button1);
            this.tabPage1.Location = new System.Drawing.Point(4, 22);
            this.tabPage1.Location = new System.Drawing.Point(4, 25);
            this.tabPage1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.tabPage1.Name = "tabPage1";
            this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
            this.tabPage1.Size = new System.Drawing.Size(1080, 557);
            this.tabPage1.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.tabPage1.Size = new System.Drawing.Size(1443, 700);
            this.tabPage1.TabIndex = 0;
            this.tabPage1.Text = "首页";
            this.tabPage1.UseVisualStyleBackColor = true;
            // 
            // button27
            // 
            this.button27.Location = new System.Drawing.Point(502, 346);
            this.button27.Location = new System.Drawing.Point(669, 432);
            this.button27.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.button27.Name = "button27";
            this.button27.Size = new System.Drawing.Size(75, 23);
            this.button27.Size = new System.Drawing.Size(100, 29);
            this.button27.TabIndex = 18;
            this.button27.Text = "文件扫描";
            this.button27.UseVisualStyleBackColor = true;
@@ -442,17 +466,19 @@
            // 
            // textBox12
            // 
            this.textBox12.Location = new System.Drawing.Point(482, 44);
            this.textBox12.Location = new System.Drawing.Point(643, 55);
            this.textBox12.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.textBox12.Name = "textBox12";
            this.textBox12.Size = new System.Drawing.Size(178, 21);
            this.textBox12.Size = new System.Drawing.Size(236, 25);
            this.textBox12.TabIndex = 17;
            this.textBox12.Text = "DZ045L2104250100001A1A\n";
            // 
            // btnHMIWrite
            // 
            this.btnHMIWrite.Location = new System.Drawing.Point(267, 336);
            this.btnHMIWrite.Location = new System.Drawing.Point(356, 420);
            this.btnHMIWrite.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.btnHMIWrite.Name = "btnHMIWrite";
            this.btnHMIWrite.Size = new System.Drawing.Size(104, 23);
            this.btnHMIWrite.Size = new System.Drawing.Size(139, 29);
            this.btnHMIWrite.TabIndex = 16;
            this.btnHMIWrite.Text = "HMI04写入";
            this.btnHMIWrite.UseVisualStyleBackColor = true;
@@ -460,9 +486,10 @@
            // 
            // button17
            // 
            this.button17.Location = new System.Drawing.Point(302, 272);
            this.button17.Location = new System.Drawing.Point(403, 340);
            this.button17.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.button17.Name = "button17";
            this.button17.Size = new System.Drawing.Size(104, 23);
            this.button17.Size = new System.Drawing.Size(139, 29);
            this.button17.TabIndex = 16;
            this.button17.Text = "OP8007告警监控";
            this.button17.UseVisualStyleBackColor = true;
@@ -470,9 +497,10 @@
            // 
            // button18
            // 
            this.button18.Location = new System.Drawing.Point(302, 226);
            this.button18.Location = new System.Drawing.Point(403, 282);
            this.button18.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.button18.Name = "button18";
            this.button18.Size = new System.Drawing.Size(104, 23);
            this.button18.Size = new System.Drawing.Size(139, 29);
            this.button18.TabIndex = 15;
            this.button18.Text = "OP8005工序完成";
            this.button18.UseVisualStyleBackColor = true;
@@ -480,9 +508,10 @@
            // 
            // button19
            // 
            this.button19.Location = new System.Drawing.Point(302, 197);
            this.button19.Location = new System.Drawing.Point(403, 246);
            this.button19.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.button19.Name = "button19";
            this.button19.Size = new System.Drawing.Size(104, 23);
            this.button19.Size = new System.Drawing.Size(139, 29);
            this.button19.TabIndex = 14;
            this.button19.Text = "OP8004 buyong";
            this.button19.UseVisualStyleBackColor = true;
@@ -490,9 +519,10 @@
            // 
            // button20
            // 
            this.button20.Location = new System.Drawing.Point(302, 168);
            this.button20.Location = new System.Drawing.Point(403, 210);
            this.button20.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.button20.Name = "button20";
            this.button20.Size = new System.Drawing.Size(104, 23);
            this.button20.Size = new System.Drawing.Size(139, 29);
            this.button20.TabIndex = 13;
            this.button20.Text = "OP3003推出";
            this.button20.UseVisualStyleBackColor = true;
@@ -500,9 +530,10 @@
            // 
            // button21
            // 
            this.button21.Location = new System.Drawing.Point(302, 139);
            this.button21.Location = new System.Drawing.Point(403, 174);
            this.button21.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.button21.Name = "button21";
            this.button21.Size = new System.Drawing.Size(104, 23);
            this.button21.Size = new System.Drawing.Size(139, 29);
            this.button21.TabIndex = 12;
            this.button21.Text = "OP3002检测完成";
            this.button21.UseVisualStyleBackColor = true;
@@ -510,9 +541,10 @@
            // 
            // button22
            // 
            this.button22.Location = new System.Drawing.Point(302, 110);
            this.button22.Location = new System.Drawing.Point(403, 138);
            this.button22.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.button22.Name = "button22";
            this.button22.Size = new System.Drawing.Size(93, 23);
            this.button22.Size = new System.Drawing.Size(124, 29);
            this.button22.TabIndex = 11;
            this.button22.Text = "OP8001读码";
            this.button22.UseVisualStyleBackColor = true;
@@ -520,9 +552,10 @@
            // 
            // btnHMI04Reading
            // 
            this.btnHMI04Reading.Location = new System.Drawing.Point(144, 336);
            this.btnHMI04Reading.Location = new System.Drawing.Point(192, 420);
            this.btnHMI04Reading.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.btnHMI04Reading.Name = "btnHMI04Reading";
            this.btnHMI04Reading.Size = new System.Drawing.Size(104, 23);
            this.btnHMI04Reading.Size = new System.Drawing.Size(139, 29);
            this.btnHMI04Reading.TabIndex = 10;
            this.btnHMI04Reading.Text = "HMI04读取";
            this.btnHMI04Reading.UseVisualStyleBackColor = true;
@@ -530,9 +563,10 @@
            // 
            // button15
            // 
            this.button15.Location = new System.Drawing.Point(144, 272);
            this.button15.Location = new System.Drawing.Point(192, 340);
            this.button15.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.button15.Name = "button15";
            this.button15.Size = new System.Drawing.Size(104, 23);
            this.button15.Size = new System.Drawing.Size(139, 29);
            this.button15.TabIndex = 10;
            this.button15.Text = "OP3007告警监控";
            this.button15.UseVisualStyleBackColor = true;
@@ -540,9 +574,10 @@
            // 
            // button14
            // 
            this.button14.Location = new System.Drawing.Point(144, 226);
            this.button14.Location = new System.Drawing.Point(192, 282);
            this.button14.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.button14.Name = "button14";
            this.button14.Size = new System.Drawing.Size(104, 23);
            this.button14.Size = new System.Drawing.Size(139, 29);
            this.button14.TabIndex = 9;
            this.button14.Text = "OP3005工序完成";
            this.button14.UseVisualStyleBackColor = true;
@@ -550,9 +585,10 @@
            // 
            // button13
            // 
            this.button13.Location = new System.Drawing.Point(144, 197);
            this.button13.Location = new System.Drawing.Point(192, 246);
            this.button13.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.button13.Name = "button13";
            this.button13.Size = new System.Drawing.Size(104, 23);
            this.button13.Size = new System.Drawing.Size(139, 29);
            this.button13.TabIndex = 8;
            this.button13.Text = "OP3004SPC推出";
            this.button13.UseVisualStyleBackColor = true;
@@ -560,9 +596,10 @@
            // 
            // button12
            // 
            this.button12.Location = new System.Drawing.Point(144, 168);
            this.button12.Location = new System.Drawing.Point(192, 210);
            this.button12.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.button12.Name = "button12";
            this.button12.Size = new System.Drawing.Size(104, 23);
            this.button12.Size = new System.Drawing.Size(139, 29);
            this.button12.TabIndex = 7;
            this.button12.Text = "OP3003推出";
            this.button12.UseVisualStyleBackColor = true;
@@ -570,9 +607,10 @@
            // 
            // button11
            // 
            this.button11.Location = new System.Drawing.Point(144, 139);
            this.button11.Location = new System.Drawing.Point(192, 174);
            this.button11.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.button11.Name = "button11";
            this.button11.Size = new System.Drawing.Size(104, 23);
            this.button11.Size = new System.Drawing.Size(139, 29);
            this.button11.TabIndex = 6;
            this.button11.Text = "OP3002检测完成";
            this.button11.UseVisualStyleBackColor = true;
@@ -580,9 +618,10 @@
            // 
            // button10
            // 
            this.button10.Location = new System.Drawing.Point(144, 81);
            this.button10.Location = new System.Drawing.Point(192, 101);
            this.button10.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.button10.Name = "button10";
            this.button10.Size = new System.Drawing.Size(93, 23);
            this.button10.Size = new System.Drawing.Size(124, 29);
            this.button10.TabIndex = 5;
            this.button10.Text = "OP0501 è¯»ç ";
            this.button10.UseVisualStyleBackColor = true;
@@ -590,9 +629,10 @@
            // 
            // button9
            // 
            this.button9.Location = new System.Drawing.Point(144, 110);
            this.button9.Location = new System.Drawing.Point(192, 138);
            this.button9.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.button9.Name = "button9";
            this.button9.Size = new System.Drawing.Size(93, 23);
            this.button9.Size = new System.Drawing.Size(124, 29);
            this.button9.TabIndex = 4;
            this.button9.Text = "OP3001读码";
            this.button9.UseVisualStyleBackColor = true;
@@ -601,27 +641,30 @@
            // label34
            // 
            this.label34.AutoSize = true;
            this.label34.Location = new System.Drawing.Point(12, 44);
            this.label34.Location = new System.Drawing.Point(16, 55);
            this.label34.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label34.Name = "label34";
            this.label34.Size = new System.Drawing.Size(41, 12);
            this.label34.Size = new System.Drawing.Size(52, 15);
            this.label34.TabIndex = 3;
            this.label34.Text = "工件号";
            // 
            // textBox10
            // 
            this.textBox10.Location = new System.Drawing.Point(59, 19);
            this.textBox10.Location = new System.Drawing.Point(79, 24);
            this.textBox10.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.textBox10.Multiline = true;
            this.textBox10.Name = "textBox10";
            this.textBox10.Size = new System.Drawing.Size(356, 43);
            this.textBox10.Size = new System.Drawing.Size(473, 53);
            this.textBox10.TabIndex = 2;
            this.textBox10.Text = "DZ045L2104250100001A1A\n";
            // 
            // button8
            // 
            this.button8.BackColor = System.Drawing.Color.OrangeRed;
            this.button8.Location = new System.Drawing.Point(28, 81);
            this.button8.Location = new System.Drawing.Point(37, 101);
            this.button8.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.button8.Name = "button8";
            this.button8.Size = new System.Drawing.Size(75, 43);
            this.button8.Size = new System.Drawing.Size(100, 54);
            this.button8.TabIndex = 1;
            this.button8.Text = "启动模拟";
            this.button8.UseVisualStyleBackColor = false;
@@ -629,9 +672,10 @@
            // 
            // button25
            // 
            this.button25.Location = new System.Drawing.Point(502, 263);
            this.button25.Location = new System.Drawing.Point(669, 329);
            this.button25.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.button25.Name = "button25";
            this.button25.Size = new System.Drawing.Size(115, 23);
            this.button25.Size = new System.Drawing.Size(153, 29);
            this.button25.TabIndex = 0;
            this.button25.Text = "各线程单独测试";
            this.button25.UseVisualStyleBackColor = true;
@@ -639,9 +683,10 @@
            // 
            // button16
            // 
            this.button16.Location = new System.Drawing.Point(502, 197);
            this.button16.Location = new System.Drawing.Point(669, 246);
            this.button16.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.button16.Name = "button16";
            this.button16.Size = new System.Drawing.Size(75, 23);
            this.button16.Size = new System.Drawing.Size(100, 29);
            this.button16.TabIndex = 0;
            this.button16.Text = "button1";
            this.button16.UseVisualStyleBackColor = true;
@@ -649,9 +694,10 @@
            // 
            // button26
            // 
            this.button26.Location = new System.Drawing.Point(675, 263);
            this.button26.Location = new System.Drawing.Point(900, 329);
            this.button26.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.button26.Name = "button26";
            this.button26.Size = new System.Drawing.Size(75, 23);
            this.button26.Size = new System.Drawing.Size(100, 29);
            this.button26.TabIndex = 0;
            this.button26.Text = "个别线程调试";
            this.button26.UseVisualStyleBackColor = true;
@@ -659,9 +705,10 @@
            // 
            // button1
            // 
            this.button1.Location = new System.Drawing.Point(482, 121);
            this.button1.Location = new System.Drawing.Point(643, 151);
            this.button1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.button1.Name = "button1";
            this.button1.Size = new System.Drawing.Size(75, 23);
            this.button1.Size = new System.Drawing.Size(100, 29);
            this.button1.TabIndex = 0;
            this.button1.Text = "button1";
            this.button1.UseVisualStyleBackColor = true;
@@ -675,10 +722,11 @@
            this.tabPage2.Controls.Add(this.btn_StopAllThread);
            this.tabPage2.Controls.Add(this.btn_StartUpAllThread);
            this.tabPage2.Controls.Add(this.groupBox1);
            this.tabPage2.Location = new System.Drawing.Point(4, 22);
            this.tabPage2.Location = new System.Drawing.Point(4, 25);
            this.tabPage2.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.tabPage2.Name = "tabPage2";
            this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
            this.tabPage2.Size = new System.Drawing.Size(1080, 557);
            this.tabPage2.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.tabPage2.Size = new System.Drawing.Size(1443, 700);
            this.tabPage2.TabIndex = 1;
            this.tabPage2.Text = " çº¿ç¨‹æŽ§åˆ¶";
            this.tabPage2.UseVisualStyleBackColor = true;
@@ -686,9 +734,11 @@
            // groupBox10
            // 
            this.groupBox10.Controls.Add(this.panel4);
            this.groupBox10.Location = new System.Drawing.Point(385, 95);
            this.groupBox10.Location = new System.Drawing.Point(513, 119);
            this.groupBox10.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.groupBox10.Name = "groupBox10";
            this.groupBox10.Size = new System.Drawing.Size(675, 229);
            this.groupBox10.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.groupBox10.Size = new System.Drawing.Size(900, 286);
            this.groupBox10.TabIndex = 5;
            this.groupBox10.TabStop = false;
            this.groupBox10.Text = "HMI";
@@ -717,10 +767,10 @@
            this.panel4.Controls.Add(this.ckHMIOP1040Reading);
            this.panel4.Controls.Add(this.lbl_Alert_HMIOP104002);
            this.panel4.Dock = System.Windows.Forms.DockStyle.Fill;
            this.panel4.Location = new System.Drawing.Point(3, 17);
            this.panel4.Location = new System.Drawing.Point(4, 22);
            this.panel4.Margin = new System.Windows.Forms.Padding(0);
            this.panel4.Name = "panel4";
            this.panel4.Size = new System.Drawing.Size(669, 209);
            this.panel4.Size = new System.Drawing.Size(892, 260);
            this.panel4.TabIndex = 21;
            // 
            // HMIOP60Write
@@ -728,10 +778,10 @@
            this.HMIOP60Write.AutoSize = true;
            this.HMIOP60Write.Checked = true;
            this.HMIOP60Write.CheckState = System.Windows.Forms.CheckState.Checked;
            this.HMIOP60Write.Location = new System.Drawing.Point(12, 191);
            this.HMIOP60Write.Margin = new System.Windows.Forms.Padding(2);
            this.HMIOP60Write.Location = new System.Drawing.Point(16, 239);
            this.HMIOP60Write.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.HMIOP60Write.Name = "HMIOP60Write";
            this.HMIOP60Write.Size = new System.Drawing.Size(114, 16);
            this.HMIOP60Write.Size = new System.Drawing.Size(145, 19);
            this.HMIOP60Write.TabIndex = 13;
            this.HMIOP60Write.Text = "HMIOP60写入监控";
            this.HMIOP60Write.UseVisualStyleBackColor = true;
@@ -741,10 +791,10 @@
            this.HMIOP50Write.AutoSize = true;
            this.HMIOP50Write.Checked = true;
            this.HMIOP50Write.CheckState = System.Windows.Forms.CheckState.Checked;
            this.HMIOP50Write.Location = new System.Drawing.Point(12, 170);
            this.HMIOP50Write.Margin = new System.Windows.Forms.Padding(2);
            this.HMIOP50Write.Location = new System.Drawing.Point(16, 212);
            this.HMIOP50Write.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.HMIOP50Write.Name = "HMIOP50Write";
            this.HMIOP50Write.Size = new System.Drawing.Size(114, 16);
            this.HMIOP50Write.Size = new System.Drawing.Size(145, 19);
            this.HMIOP50Write.TabIndex = 13;
            this.HMIOP50Write.Text = "HMIOP50写入监控";
            this.HMIOP50Write.UseVisualStyleBackColor = true;
@@ -754,10 +804,10 @@
            this.HMIOP3035Write.AutoSize = true;
            this.HMIOP3035Write.Checked = true;
            this.HMIOP3035Write.CheckState = System.Windows.Forms.CheckState.Checked;
            this.HMIOP3035Write.Location = new System.Drawing.Point(12, 149);
            this.HMIOP3035Write.Margin = new System.Windows.Forms.Padding(2);
            this.HMIOP3035Write.Location = new System.Drawing.Point(16, 186);
            this.HMIOP3035Write.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.HMIOP3035Write.Name = "HMIOP3035Write";
            this.HMIOP3035Write.Size = new System.Drawing.Size(126, 16);
            this.HMIOP3035Write.Size = new System.Drawing.Size(161, 19);
            this.HMIOP3035Write.TabIndex = 13;
            this.HMIOP3035Write.Text = "HMIOP3035写入监控";
            this.HMIOP3035Write.UseVisualStyleBackColor = true;
@@ -767,10 +817,10 @@
            this.HMIOP20Write.AutoSize = true;
            this.HMIOP20Write.Checked = true;
            this.HMIOP20Write.CheckState = System.Windows.Forms.CheckState.Checked;
            this.HMIOP20Write.Location = new System.Drawing.Point(12, 128);
            this.HMIOP20Write.Margin = new System.Windows.Forms.Padding(2);
            this.HMIOP20Write.Location = new System.Drawing.Point(16, 160);
            this.HMIOP20Write.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.HMIOP20Write.Name = "HMIOP20Write";
            this.HMIOP20Write.Size = new System.Drawing.Size(114, 16);
            this.HMIOP20Write.Size = new System.Drawing.Size(145, 19);
            this.HMIOP20Write.TabIndex = 13;
            this.HMIOP20Write.Text = "HMIOP20写入监控";
            this.HMIOP20Write.UseVisualStyleBackColor = true;
@@ -780,10 +830,10 @@
            this.HMIOP1040Write.AutoSize = true;
            this.HMIOP1040Write.Checked = true;
            this.HMIOP1040Write.CheckState = System.Windows.Forms.CheckState.Checked;
            this.HMIOP1040Write.Location = new System.Drawing.Point(12, 107);
            this.HMIOP1040Write.Margin = new System.Windows.Forms.Padding(2);
            this.HMIOP1040Write.Location = new System.Drawing.Point(16, 134);
            this.HMIOP1040Write.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.HMIOP1040Write.Name = "HMIOP1040Write";
            this.HMIOP1040Write.Size = new System.Drawing.Size(126, 16);
            this.HMIOP1040Write.Size = new System.Drawing.Size(161, 19);
            this.HMIOP1040Write.TabIndex = 13;
            this.HMIOP1040Write.Text = "HMIOP1040写入监控";
            this.HMIOP1040Write.UseVisualStyleBackColor = true;
@@ -793,10 +843,9 @@
            this.lbl_Alert_HMIOP6001.AutoSize = true;
            this.lbl_Alert_HMIOP6001.BackColor = System.Drawing.Color.White;
            this.lbl_Alert_HMIOP6001.ForeColor = System.Drawing.Color.Red;
            this.lbl_Alert_HMIOP6001.Location = new System.Drawing.Point(275, 87);
            this.lbl_Alert_HMIOP6001.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
            this.lbl_Alert_HMIOP6001.Location = new System.Drawing.Point(367, 109);
            this.lbl_Alert_HMIOP6001.Name = "lbl_Alert_HMIOP6001";
            this.lbl_Alert_HMIOP6001.Size = new System.Drawing.Size(41, 12);
            this.lbl_Alert_HMIOP6001.Size = new System.Drawing.Size(52, 15);
            this.lbl_Alert_HMIOP6001.TabIndex = 14;
            this.lbl_Alert_HMIOP6001.Text = "未连接";
            // 
@@ -805,10 +854,10 @@
            this.ckHMIOP60Reading.AutoSize = true;
            this.ckHMIOP60Reading.Checked = true;
            this.ckHMIOP60Reading.CheckState = System.Windows.Forms.CheckState.Checked;
            this.ckHMIOP60Reading.Location = new System.Drawing.Point(12, 86);
            this.ckHMIOP60Reading.Margin = new System.Windows.Forms.Padding(2);
            this.ckHMIOP60Reading.Location = new System.Drawing.Point(16, 108);
            this.ckHMIOP60Reading.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.ckHMIOP60Reading.Name = "ckHMIOP60Reading";
            this.ckHMIOP60Reading.Size = new System.Drawing.Size(114, 16);
            this.ckHMIOP60Reading.Size = new System.Drawing.Size(145, 19);
            this.ckHMIOP60Reading.TabIndex = 15;
            this.ckHMIOP60Reading.Text = "HMIOP60读取监控";
            this.ckHMIOP60Reading.UseVisualStyleBackColor = true;
@@ -818,10 +867,9 @@
            this.lbl_Alert_HMIOP5001.AutoSize = true;
            this.lbl_Alert_HMIOP5001.BackColor = System.Drawing.Color.White;
            this.lbl_Alert_HMIOP5001.ForeColor = System.Drawing.Color.Red;
            this.lbl_Alert_HMIOP5001.Location = new System.Drawing.Point(275, 67);
            this.lbl_Alert_HMIOP5001.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
            this.lbl_Alert_HMIOP5001.Location = new System.Drawing.Point(367, 84);
            this.lbl_Alert_HMIOP5001.Name = "lbl_Alert_HMIOP5001";
            this.lbl_Alert_HMIOP5001.Size = new System.Drawing.Size(41, 12);
            this.lbl_Alert_HMIOP5001.Size = new System.Drawing.Size(52, 15);
            this.lbl_Alert_HMIOP5001.TabIndex = 14;
            this.lbl_Alert_HMIOP5001.Text = "未连接";
            // 
@@ -830,10 +878,10 @@
            this.ckHMIOP50Reading.AutoSize = true;
            this.ckHMIOP50Reading.Checked = true;
            this.ckHMIOP50Reading.CheckState = System.Windows.Forms.CheckState.Checked;
            this.ckHMIOP50Reading.Location = new System.Drawing.Point(12, 65);
            this.ckHMIOP50Reading.Margin = new System.Windows.Forms.Padding(2);
            this.ckHMIOP50Reading.Location = new System.Drawing.Point(16, 81);
            this.ckHMIOP50Reading.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.ckHMIOP50Reading.Name = "ckHMIOP50Reading";
            this.ckHMIOP50Reading.Size = new System.Drawing.Size(114, 16);
            this.ckHMIOP50Reading.Size = new System.Drawing.Size(145, 19);
            this.ckHMIOP50Reading.TabIndex = 15;
            this.ckHMIOP50Reading.Text = "HMIOP50读取监控";
            this.ckHMIOP50Reading.UseVisualStyleBackColor = true;
@@ -843,10 +891,9 @@
            this.lbl_Alert_HMIOP303501.AutoSize = true;
            this.lbl_Alert_HMIOP303501.BackColor = System.Drawing.Color.White;
            this.lbl_Alert_HMIOP303501.ForeColor = System.Drawing.Color.Red;
            this.lbl_Alert_HMIOP303501.Location = new System.Drawing.Point(275, 45);
            this.lbl_Alert_HMIOP303501.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
            this.lbl_Alert_HMIOP303501.Location = new System.Drawing.Point(367, 56);
            this.lbl_Alert_HMIOP303501.Name = "lbl_Alert_HMIOP303501";
            this.lbl_Alert_HMIOP303501.Size = new System.Drawing.Size(41, 12);
            this.lbl_Alert_HMIOP303501.Size = new System.Drawing.Size(52, 15);
            this.lbl_Alert_HMIOP303501.TabIndex = 14;
            this.lbl_Alert_HMIOP303501.Text = "未连接";
            // 
@@ -855,10 +902,10 @@
            this.ckHMIOP3035Reading.AutoSize = true;
            this.ckHMIOP3035Reading.Checked = true;
            this.ckHMIOP3035Reading.CheckState = System.Windows.Forms.CheckState.Checked;
            this.ckHMIOP3035Reading.Location = new System.Drawing.Point(12, 44);
            this.ckHMIOP3035Reading.Margin = new System.Windows.Forms.Padding(2);
            this.ckHMIOP3035Reading.Location = new System.Drawing.Point(16, 55);
            this.ckHMIOP3035Reading.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.ckHMIOP3035Reading.Name = "ckHMIOP3035Reading";
            this.ckHMIOP3035Reading.Size = new System.Drawing.Size(126, 16);
            this.ckHMIOP3035Reading.Size = new System.Drawing.Size(161, 19);
            this.ckHMIOP3035Reading.TabIndex = 15;
            this.ckHMIOP3035Reading.Text = "HMIOP3035读取监控";
            this.ckHMIOP3035Reading.UseVisualStyleBackColor = true;
@@ -868,10 +915,9 @@
            this.lbl_Alert_HMIOP6002.AutoSize = true;
            this.lbl_Alert_HMIOP6002.BackColor = System.Drawing.Color.White;
            this.lbl_Alert_HMIOP6002.ForeColor = System.Drawing.Color.Red;
            this.lbl_Alert_HMIOP6002.Location = new System.Drawing.Point(275, 193);
            this.lbl_Alert_HMIOP6002.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
            this.lbl_Alert_HMIOP6002.Location = new System.Drawing.Point(367, 241);
            this.lbl_Alert_HMIOP6002.Name = "lbl_Alert_HMIOP6002";
            this.lbl_Alert_HMIOP6002.Size = new System.Drawing.Size(41, 12);
            this.lbl_Alert_HMIOP6002.Size = new System.Drawing.Size(52, 15);
            this.lbl_Alert_HMIOP6002.TabIndex = 18;
            this.lbl_Alert_HMIOP6002.Text = "未连接";
            // 
@@ -880,10 +926,9 @@
            this.lbl_Alert_HMIOP2001.AutoSize = true;
            this.lbl_Alert_HMIOP2001.BackColor = System.Drawing.Color.White;
            this.lbl_Alert_HMIOP2001.ForeColor = System.Drawing.Color.Red;
            this.lbl_Alert_HMIOP2001.Location = new System.Drawing.Point(275, 24);
            this.lbl_Alert_HMIOP2001.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
            this.lbl_Alert_HMIOP2001.Location = new System.Drawing.Point(367, 30);
            this.lbl_Alert_HMIOP2001.Name = "lbl_Alert_HMIOP2001";
            this.lbl_Alert_HMIOP2001.Size = new System.Drawing.Size(41, 12);
            this.lbl_Alert_HMIOP2001.Size = new System.Drawing.Size(52, 15);
            this.lbl_Alert_HMIOP2001.TabIndex = 14;
            this.lbl_Alert_HMIOP2001.Text = "未连接";
            // 
@@ -892,10 +937,9 @@
            this.lbl_Alert_HMIOP5002.AutoSize = true;
            this.lbl_Alert_HMIOP5002.BackColor = System.Drawing.Color.White;
            this.lbl_Alert_HMIOP5002.ForeColor = System.Drawing.Color.Red;
            this.lbl_Alert_HMIOP5002.Location = new System.Drawing.Point(275, 172);
            this.lbl_Alert_HMIOP5002.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
            this.lbl_Alert_HMIOP5002.Location = new System.Drawing.Point(367, 215);
            this.lbl_Alert_HMIOP5002.Name = "lbl_Alert_HMIOP5002";
            this.lbl_Alert_HMIOP5002.Size = new System.Drawing.Size(41, 12);
            this.lbl_Alert_HMIOP5002.Size = new System.Drawing.Size(52, 15);
            this.lbl_Alert_HMIOP5002.TabIndex = 18;
            this.lbl_Alert_HMIOP5002.Text = "未连接";
            // 
@@ -904,10 +948,10 @@
            this.ckHMIOP20Reading.AutoSize = true;
            this.ckHMIOP20Reading.Checked = true;
            this.ckHMIOP20Reading.CheckState = System.Windows.Forms.CheckState.Checked;
            this.ckHMIOP20Reading.Location = new System.Drawing.Point(12, 23);
            this.ckHMIOP20Reading.Margin = new System.Windows.Forms.Padding(2);
            this.ckHMIOP20Reading.Location = new System.Drawing.Point(16, 29);
            this.ckHMIOP20Reading.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.ckHMIOP20Reading.Name = "ckHMIOP20Reading";
            this.ckHMIOP20Reading.Size = new System.Drawing.Size(114, 16);
            this.ckHMIOP20Reading.Size = new System.Drawing.Size(145, 19);
            this.ckHMIOP20Reading.TabIndex = 15;
            this.ckHMIOP20Reading.Text = "HMIOP20读取监控";
            this.ckHMIOP20Reading.UseVisualStyleBackColor = true;
@@ -917,10 +961,9 @@
            this.lbl_Alert_HMIOP303502.AutoSize = true;
            this.lbl_Alert_HMIOP303502.BackColor = System.Drawing.Color.White;
            this.lbl_Alert_HMIOP303502.ForeColor = System.Drawing.Color.Red;
            this.lbl_Alert_HMIOP303502.Location = new System.Drawing.Point(275, 151);
            this.lbl_Alert_HMIOP303502.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
            this.lbl_Alert_HMIOP303502.Location = new System.Drawing.Point(367, 189);
            this.lbl_Alert_HMIOP303502.Name = "lbl_Alert_HMIOP303502";
            this.lbl_Alert_HMIOP303502.Size = new System.Drawing.Size(41, 12);
            this.lbl_Alert_HMIOP303502.Size = new System.Drawing.Size(52, 15);
            this.lbl_Alert_HMIOP303502.TabIndex = 18;
            this.lbl_Alert_HMIOP303502.Text = "未连接";
            // 
@@ -929,10 +972,9 @@
            this.lbl_Alert_HMIOP104001.AutoSize = true;
            this.lbl_Alert_HMIOP104001.BackColor = System.Drawing.Color.White;
            this.lbl_Alert_HMIOP104001.ForeColor = System.Drawing.Color.Red;
            this.lbl_Alert_HMIOP104001.Location = new System.Drawing.Point(275, 3);
            this.lbl_Alert_HMIOP104001.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
            this.lbl_Alert_HMIOP104001.Location = new System.Drawing.Point(367, 4);
            this.lbl_Alert_HMIOP104001.Name = "lbl_Alert_HMIOP104001";
            this.lbl_Alert_HMIOP104001.Size = new System.Drawing.Size(41, 12);
            this.lbl_Alert_HMIOP104001.Size = new System.Drawing.Size(52, 15);
            this.lbl_Alert_HMIOP104001.TabIndex = 14;
            this.lbl_Alert_HMIOP104001.Text = "未连接";
            // 
@@ -941,10 +983,9 @@
            this.lbl_Alert_HMIOP2002.AutoSize = true;
            this.lbl_Alert_HMIOP2002.BackColor = System.Drawing.Color.White;
            this.lbl_Alert_HMIOP2002.ForeColor = System.Drawing.Color.Red;
            this.lbl_Alert_HMIOP2002.Location = new System.Drawing.Point(275, 130);
            this.lbl_Alert_HMIOP2002.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
            this.lbl_Alert_HMIOP2002.Location = new System.Drawing.Point(367, 162);
            this.lbl_Alert_HMIOP2002.Name = "lbl_Alert_HMIOP2002";
            this.lbl_Alert_HMIOP2002.Size = new System.Drawing.Size(41, 12);
            this.lbl_Alert_HMIOP2002.Size = new System.Drawing.Size(52, 15);
            this.lbl_Alert_HMIOP2002.TabIndex = 18;
            this.lbl_Alert_HMIOP2002.Text = "未连接";
            // 
@@ -953,10 +994,10 @@
            this.ckHMIOP1040Reading.AutoSize = true;
            this.ckHMIOP1040Reading.Checked = true;
            this.ckHMIOP1040Reading.CheckState = System.Windows.Forms.CheckState.Checked;
            this.ckHMIOP1040Reading.Location = new System.Drawing.Point(12, 2);
            this.ckHMIOP1040Reading.Margin = new System.Windows.Forms.Padding(2);
            this.ckHMIOP1040Reading.Location = new System.Drawing.Point(16, 2);
            this.ckHMIOP1040Reading.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.ckHMIOP1040Reading.Name = "ckHMIOP1040Reading";
            this.ckHMIOP1040Reading.Size = new System.Drawing.Size(126, 16);
            this.ckHMIOP1040Reading.Size = new System.Drawing.Size(161, 19);
            this.ckHMIOP1040Reading.TabIndex = 15;
            this.ckHMIOP1040Reading.Text = "HMIOP1040读取监控";
            this.ckHMIOP1040Reading.UseVisualStyleBackColor = true;
@@ -966,19 +1007,20 @@
            this.lbl_Alert_HMIOP104002.AutoSize = true;
            this.lbl_Alert_HMIOP104002.BackColor = System.Drawing.Color.White;
            this.lbl_Alert_HMIOP104002.ForeColor = System.Drawing.Color.Red;
            this.lbl_Alert_HMIOP104002.Location = new System.Drawing.Point(275, 109);
            this.lbl_Alert_HMIOP104002.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
            this.lbl_Alert_HMIOP104002.Location = new System.Drawing.Point(367, 136);
            this.lbl_Alert_HMIOP104002.Name = "lbl_Alert_HMIOP104002";
            this.lbl_Alert_HMIOP104002.Size = new System.Drawing.Size(41, 12);
            this.lbl_Alert_HMIOP104002.Size = new System.Drawing.Size(52, 15);
            this.lbl_Alert_HMIOP104002.TabIndex = 18;
            this.lbl_Alert_HMIOP104002.Text = "未连接";
            // 
            // groupBox3
            // 
            this.groupBox3.Controls.Add(this.panel3);
            this.groupBox3.Location = new System.Drawing.Point(6, 354);
            this.groupBox3.Location = new System.Drawing.Point(8, 442);
            this.groupBox3.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.groupBox3.Name = "groupBox3";
            this.groupBox3.Size = new System.Drawing.Size(335, 169);
            this.groupBox3.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.groupBox3.Size = new System.Drawing.Size(447, 211);
            this.groupBox3.TabIndex = 4;
            this.groupBox3.TabStop = false;
            this.groupBox3.Text = "OP30";
@@ -1001,9 +1043,10 @@
            this.panel3.Controls.Add(this.checkBox7);
            this.panel3.Controls.Add(this.label9);
            this.panel3.Dock = System.Windows.Forms.DockStyle.Fill;
            this.panel3.Location = new System.Drawing.Point(3, 17);
            this.panel3.Location = new System.Drawing.Point(4, 22);
            this.panel3.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.panel3.Name = "panel3";
            this.panel3.Size = new System.Drawing.Size(329, 149);
            this.panel3.Size = new System.Drawing.Size(439, 185);
            this.panel3.TabIndex = 23;
            // 
            // label35
@@ -1011,10 +1054,9 @@
            this.label35.AutoSize = true;
            this.label35.BackColor = System.Drawing.Color.White;
            this.label35.ForeColor = System.Drawing.Color.Red;
            this.label35.Location = new System.Drawing.Point(168, 126);
            this.label35.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
            this.label35.Location = new System.Drawing.Point(224, 158);
            this.label35.Name = "label35";
            this.label35.Size = new System.Drawing.Size(41, 12);
            this.label35.Size = new System.Drawing.Size(52, 15);
            this.label35.TabIndex = 30;
            this.label35.Text = "未连接";
            // 
@@ -1023,10 +1065,10 @@
            this.checkBox1.AutoSize = true;
            this.checkBox1.Checked = true;
            this.checkBox1.CheckState = System.Windows.Forms.CheckState.Checked;
            this.checkBox1.Location = new System.Drawing.Point(12, 125);
            this.checkBox1.Margin = new System.Windows.Forms.Padding(2);
            this.checkBox1.Location = new System.Drawing.Point(16, 156);
            this.checkBox1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.checkBox1.Name = "checkBox1";
            this.checkBox1.Size = new System.Drawing.Size(72, 16);
            this.checkBox1.Size = new System.Drawing.Size(89, 19);
            this.checkBox1.TabIndex = 29;
            this.checkBox1.Text = "心跳监控";
            this.checkBox1.UseVisualStyleBackColor = true;
@@ -1036,10 +1078,9 @@
            this.label36.AutoSize = true;
            this.label36.BackColor = System.Drawing.Color.White;
            this.label36.ForeColor = System.Drawing.Color.Red;
            this.label36.Location = new System.Drawing.Point(168, 106);
            this.label36.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
            this.label36.Location = new System.Drawing.Point(224, 132);
            this.label36.Name = "label36";
            this.label36.Size = new System.Drawing.Size(41, 12);
            this.label36.Size = new System.Drawing.Size(52, 15);
            this.label36.TabIndex = 28;
            this.label36.Text = "未连接";
            // 
@@ -1048,10 +1089,10 @@
            this.checkBox2.AutoSize = true;
            this.checkBox2.Checked = true;
            this.checkBox2.CheckState = System.Windows.Forms.CheckState.Checked;
            this.checkBox2.Location = new System.Drawing.Point(12, 105);
            this.checkBox2.Margin = new System.Windows.Forms.Padding(2);
            this.checkBox2.Location = new System.Drawing.Point(16, 131);
            this.checkBox2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.checkBox2.Name = "checkBox2";
            this.checkBox2.Size = new System.Drawing.Size(96, 16);
            this.checkBox2.Size = new System.Drawing.Size(119, 19);
            this.checkBox2.TabIndex = 27;
            this.checkBox2.Text = "报警信息监控";
            this.checkBox2.UseVisualStyleBackColor = true;
@@ -1061,10 +1102,10 @@
            this.checkBox10.AutoSize = true;
            this.checkBox10.Checked = true;
            this.checkBox10.CheckState = System.Windows.Forms.CheckState.Checked;
            this.checkBox10.Location = new System.Drawing.Point(13, 4);
            this.checkBox10.Margin = new System.Windows.Forms.Padding(2);
            this.checkBox10.Location = new System.Drawing.Point(17, 5);
            this.checkBox10.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.checkBox10.Name = "checkBox10";
            this.checkBox10.Size = new System.Drawing.Size(96, 16);
            this.checkBox10.Size = new System.Drawing.Size(119, 19);
            this.checkBox10.TabIndex = 13;
            this.checkBox10.Text = "读码完成监控";
            this.checkBox10.UseVisualStyleBackColor = true;
@@ -1074,10 +1115,9 @@
            this.label6.AutoSize = true;
            this.label6.BackColor = System.Drawing.Color.White;
            this.label6.ForeColor = System.Drawing.Color.Red;
            this.label6.Location = new System.Drawing.Point(169, 85);
            this.label6.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
            this.label6.Location = new System.Drawing.Point(225, 106);
            this.label6.Name = "label6";
            this.label6.Size = new System.Drawing.Size(41, 12);
            this.label6.Size = new System.Drawing.Size(52, 15);
            this.label6.TabIndex = 22;
            this.label6.Text = "未连接";
            // 
@@ -1086,10 +1126,9 @@
            this.label10.AutoSize = true;
            this.label10.BackColor = System.Drawing.Color.White;
            this.label10.ForeColor = System.Drawing.Color.Red;
            this.label10.Location = new System.Drawing.Point(169, 4);
            this.label10.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
            this.label10.Location = new System.Drawing.Point(225, 5);
            this.label10.Name = "label10";
            this.label10.Size = new System.Drawing.Size(41, 12);
            this.label10.Size = new System.Drawing.Size(52, 15);
            this.label10.TabIndex = 14;
            this.label10.Text = "未连接";
            // 
@@ -1098,10 +1137,10 @@
            this.checkBox6.AutoSize = true;
            this.checkBox6.Checked = true;
            this.checkBox6.CheckState = System.Windows.Forms.CheckState.Checked;
            this.checkBox6.Location = new System.Drawing.Point(13, 84);
            this.checkBox6.Margin = new System.Windows.Forms.Padding(2);
            this.checkBox6.Location = new System.Drawing.Point(17, 105);
            this.checkBox6.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.checkBox6.Name = "checkBox6";
            this.checkBox6.Size = new System.Drawing.Size(96, 16);
            this.checkBox6.Size = new System.Drawing.Size(119, 19);
            this.checkBox6.TabIndex = 21;
            this.checkBox6.Text = "工序完成监控";
            this.checkBox6.UseVisualStyleBackColor = true;
@@ -1111,10 +1150,10 @@
            this.checkBox9.AutoSize = true;
            this.checkBox9.Checked = true;
            this.checkBox9.CheckState = System.Windows.Forms.CheckState.Checked;
            this.checkBox9.Location = new System.Drawing.Point(13, 24);
            this.checkBox9.Margin = new System.Windows.Forms.Padding(2);
            this.checkBox9.Location = new System.Drawing.Point(17, 30);
            this.checkBox9.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.checkBox9.Name = "checkBox9";
            this.checkBox9.Size = new System.Drawing.Size(96, 16);
            this.checkBox9.Size = new System.Drawing.Size(119, 19);
            this.checkBox9.TabIndex = 15;
            this.checkBox9.Text = "测量完成监控";
            this.checkBox9.UseVisualStyleBackColor = true;
@@ -1124,10 +1163,9 @@
            this.label7.AutoSize = true;
            this.label7.BackColor = System.Drawing.Color.White;
            this.label7.ForeColor = System.Drawing.Color.Red;
            this.label7.Location = new System.Drawing.Point(169, 65);
            this.label7.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
            this.label7.Location = new System.Drawing.Point(225, 81);
            this.label7.Name = "label7";
            this.label7.Size = new System.Drawing.Size(41, 12);
            this.label7.Size = new System.Drawing.Size(52, 15);
            this.label7.TabIndex = 20;
            this.label7.Text = "未连接";
            // 
@@ -1136,10 +1174,10 @@
            this.checkBox8.AutoSize = true;
            this.checkBox8.Checked = true;
            this.checkBox8.CheckState = System.Windows.Forms.CheckState.Checked;
            this.checkBox8.Location = new System.Drawing.Point(13, 44);
            this.checkBox8.Margin = new System.Windows.Forms.Padding(2);
            this.checkBox8.Location = new System.Drawing.Point(17, 55);
            this.checkBox8.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.checkBox8.Name = "checkBox8";
            this.checkBox8.Size = new System.Drawing.Size(96, 16);
            this.checkBox8.Size = new System.Drawing.Size(119, 19);
            this.checkBox8.TabIndex = 16;
            this.checkBox8.Text = "工件推出监控";
            this.checkBox8.UseVisualStyleBackColor = true;
@@ -1149,10 +1187,9 @@
            this.label8.AutoSize = true;
            this.label8.BackColor = System.Drawing.Color.White;
            this.label8.ForeColor = System.Drawing.Color.Red;
            this.label8.Location = new System.Drawing.Point(169, 44);
            this.label8.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
            this.label8.Location = new System.Drawing.Point(225, 55);
            this.label8.Name = "label8";
            this.label8.Size = new System.Drawing.Size(41, 12);
            this.label8.Size = new System.Drawing.Size(52, 15);
            this.label8.TabIndex = 19;
            this.label8.Text = "未连接";
            // 
@@ -1161,10 +1198,10 @@
            this.checkBox7.AutoSize = true;
            this.checkBox7.Checked = true;
            this.checkBox7.CheckState = System.Windows.Forms.CheckState.Checked;
            this.checkBox7.Location = new System.Drawing.Point(13, 64);
            this.checkBox7.Margin = new System.Windows.Forms.Padding(2);
            this.checkBox7.Location = new System.Drawing.Point(17, 80);
            this.checkBox7.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.checkBox7.Name = "checkBox7";
            this.checkBox7.Size = new System.Drawing.Size(114, 16);
            this.checkBox7.Size = new System.Drawing.Size(143, 19);
            this.checkBox7.TabIndex = 17;
            this.checkBox7.Text = "工件SPC推出监控";
            this.checkBox7.UseVisualStyleBackColor = true;
@@ -1174,19 +1211,20 @@
            this.label9.AutoSize = true;
            this.label9.BackColor = System.Drawing.Color.White;
            this.label9.ForeColor = System.Drawing.Color.Red;
            this.label9.Location = new System.Drawing.Point(169, 25);
            this.label9.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
            this.label9.Location = new System.Drawing.Point(225, 31);
            this.label9.Name = "label9";
            this.label9.Size = new System.Drawing.Size(41, 12);
            this.label9.Size = new System.Drawing.Size(52, 15);
            this.label9.TabIndex = 18;
            this.label9.Text = "未连接";
            // 
            // groupBox2
            // 
            this.groupBox2.Controls.Add(this.panel2);
            this.groupBox2.Location = new System.Drawing.Point(6, 188);
            this.groupBox2.Location = new System.Drawing.Point(8, 235);
            this.groupBox2.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.groupBox2.Name = "groupBox2";
            this.groupBox2.Size = new System.Drawing.Size(335, 163);
            this.groupBox2.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.groupBox2.Size = new System.Drawing.Size(447, 204);
            this.groupBox2.TabIndex = 3;
            this.groupBox2.TabStop = false;
            this.groupBox2.Text = "OP20";
@@ -1209,9 +1247,10 @@
            this.panel2.Controls.Add(this.lbl_Alter_OP2002);
            this.panel2.Controls.Add(this.lbl_Alter_OP2003);
            this.panel2.Dock = System.Windows.Forms.DockStyle.Fill;
            this.panel2.Location = new System.Drawing.Point(3, 17);
            this.panel2.Location = new System.Drawing.Point(4, 22);
            this.panel2.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.panel2.Name = "panel2";
            this.panel2.Size = new System.Drawing.Size(329, 143);
            this.panel2.Size = new System.Drawing.Size(439, 178);
            this.panel2.TabIndex = 25;
            // 
            // lbl_Alter_OP2007
@@ -1219,10 +1258,9 @@
            this.lbl_Alter_OP2007.AutoSize = true;
            this.lbl_Alter_OP2007.BackColor = System.Drawing.Color.White;
            this.lbl_Alter_OP2007.ForeColor = System.Drawing.Color.Red;
            this.lbl_Alter_OP2007.Location = new System.Drawing.Point(170, 123);
            this.lbl_Alter_OP2007.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
            this.lbl_Alter_OP2007.Location = new System.Drawing.Point(227, 154);
            this.lbl_Alter_OP2007.Name = "lbl_Alter_OP2007";
            this.lbl_Alter_OP2007.Size = new System.Drawing.Size(41, 12);
            this.lbl_Alter_OP2007.Size = new System.Drawing.Size(52, 15);
            this.lbl_Alter_OP2007.TabIndex = 26;
            this.lbl_Alter_OP2007.Text = "未连接";
            // 
@@ -1231,10 +1269,10 @@
            this.ckBOP2007.AutoSize = true;
            this.ckBOP2007.Checked = true;
            this.ckBOP2007.CheckState = System.Windows.Forms.CheckState.Checked;
            this.ckBOP2007.Location = new System.Drawing.Point(14, 122);
            this.ckBOP2007.Margin = new System.Windows.Forms.Padding(2);
            this.ckBOP2007.Location = new System.Drawing.Point(19, 152);
            this.ckBOP2007.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.ckBOP2007.Name = "ckBOP2007";
            this.ckBOP2007.Size = new System.Drawing.Size(72, 16);
            this.ckBOP2007.Size = new System.Drawing.Size(89, 19);
            this.ckBOP2007.TabIndex = 25;
            this.ckBOP2007.Text = "心跳监控";
            this.ckBOP2007.UseVisualStyleBackColor = true;
@@ -1244,10 +1282,10 @@
            this.ckBOP2001.AutoSize = true;
            this.ckBOP2001.Checked = true;
            this.ckBOP2001.CheckState = System.Windows.Forms.CheckState.Checked;
            this.ckBOP2001.Location = new System.Drawing.Point(14, 2);
            this.ckBOP2001.Margin = new System.Windows.Forms.Padding(2);
            this.ckBOP2001.Location = new System.Drawing.Point(19, 2);
            this.ckBOP2001.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.ckBOP2001.Name = "ckBOP2001";
            this.ckBOP2001.Size = new System.Drawing.Size(96, 16);
            this.ckBOP2001.Size = new System.Drawing.Size(119, 19);
            this.ckBOP2001.TabIndex = 13;
            this.ckBOP2001.Text = "读码完成监控";
            this.ckBOP2001.UseVisualStyleBackColor = true;
@@ -1257,10 +1295,9 @@
            this.lbl_Alter_OP2006.AutoSize = true;
            this.lbl_Alter_OP2006.BackColor = System.Drawing.Color.White;
            this.lbl_Alter_OP2006.ForeColor = System.Drawing.Color.Red;
            this.lbl_Alter_OP2006.Location = new System.Drawing.Point(170, 103);
            this.lbl_Alter_OP2006.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
            this.lbl_Alter_OP2006.Location = new System.Drawing.Point(227, 129);
            this.lbl_Alter_OP2006.Name = "lbl_Alter_OP2006";
            this.lbl_Alter_OP2006.Size = new System.Drawing.Size(41, 12);
            this.lbl_Alter_OP2006.Size = new System.Drawing.Size(52, 15);
            this.lbl_Alter_OP2006.TabIndex = 24;
            this.lbl_Alter_OP2006.Text = "未连接";
            // 
@@ -1269,10 +1306,9 @@
            this.lbl_Alter_OP2001.AutoSize = true;
            this.lbl_Alter_OP2001.BackColor = System.Drawing.Color.White;
            this.lbl_Alter_OP2001.ForeColor = System.Drawing.Color.Red;
            this.lbl_Alter_OP2001.Location = new System.Drawing.Point(170, 2);
            this.lbl_Alter_OP2001.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
            this.lbl_Alter_OP2001.Location = new System.Drawing.Point(227, 2);
            this.lbl_Alter_OP2001.Name = "lbl_Alter_OP2001";
            this.lbl_Alter_OP2001.Size = new System.Drawing.Size(41, 12);
            this.lbl_Alter_OP2001.Size = new System.Drawing.Size(52, 15);
            this.lbl_Alter_OP2001.TabIndex = 14;
            this.lbl_Alter_OP2001.Text = "未连接";
            // 
@@ -1281,10 +1317,10 @@
            this.ckBOP2006.AutoSize = true;
            this.ckBOP2006.Checked = true;
            this.ckBOP2006.CheckState = System.Windows.Forms.CheckState.Checked;
            this.ckBOP2006.Location = new System.Drawing.Point(14, 102);
            this.ckBOP2006.Margin = new System.Windows.Forms.Padding(2);
            this.ckBOP2006.Location = new System.Drawing.Point(19, 128);
            this.ckBOP2006.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.ckBOP2006.Name = "ckBOP2006";
            this.ckBOP2006.Size = new System.Drawing.Size(96, 16);
            this.ckBOP2006.Size = new System.Drawing.Size(119, 19);
            this.ckBOP2006.TabIndex = 23;
            this.ckBOP2006.Text = "报警信息监控";
            this.ckBOP2006.UseVisualStyleBackColor = true;
@@ -1294,10 +1330,10 @@
            this.ckBOP2002.AutoSize = true;
            this.ckBOP2002.Checked = true;
            this.ckBOP2002.CheckState = System.Windows.Forms.CheckState.Checked;
            this.ckBOP2002.Location = new System.Drawing.Point(14, 22);
            this.ckBOP2002.Margin = new System.Windows.Forms.Padding(2);
            this.ckBOP2002.Location = new System.Drawing.Point(19, 28);
            this.ckBOP2002.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.ckBOP2002.Name = "ckBOP2002";
            this.ckBOP2002.Size = new System.Drawing.Size(96, 16);
            this.ckBOP2002.Size = new System.Drawing.Size(119, 19);
            this.ckBOP2002.TabIndex = 15;
            this.ckBOP2002.Text = "测量完成监控";
            this.ckBOP2002.UseVisualStyleBackColor = true;
@@ -1307,10 +1343,9 @@
            this.lbl_Alter_OP2005.AutoSize = true;
            this.lbl_Alter_OP2005.BackColor = System.Drawing.Color.White;
            this.lbl_Alter_OP2005.ForeColor = System.Drawing.Color.Red;
            this.lbl_Alter_OP2005.Location = new System.Drawing.Point(170, 83);
            this.lbl_Alter_OP2005.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
            this.lbl_Alter_OP2005.Location = new System.Drawing.Point(227, 104);
            this.lbl_Alter_OP2005.Name = "lbl_Alter_OP2005";
            this.lbl_Alter_OP2005.Size = new System.Drawing.Size(41, 12);
            this.lbl_Alter_OP2005.Size = new System.Drawing.Size(52, 15);
            this.lbl_Alter_OP2005.TabIndex = 22;
            this.lbl_Alter_OP2005.Text = "未连接";
            // 
@@ -1319,10 +1354,10 @@
            this.ckBOP2003.AutoSize = true;
            this.ckBOP2003.Checked = true;
            this.ckBOP2003.CheckState = System.Windows.Forms.CheckState.Checked;
            this.ckBOP2003.Location = new System.Drawing.Point(14, 42);
            this.ckBOP2003.Margin = new System.Windows.Forms.Padding(2);
            this.ckBOP2003.Location = new System.Drawing.Point(19, 52);
            this.ckBOP2003.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.ckBOP2003.Name = "ckBOP2003";
            this.ckBOP2003.Size = new System.Drawing.Size(96, 16);
            this.ckBOP2003.Size = new System.Drawing.Size(119, 19);
            this.ckBOP2003.TabIndex = 16;
            this.ckBOP2003.Text = "工件推出监控";
            this.ckBOP2003.UseVisualStyleBackColor = true;
@@ -1332,10 +1367,10 @@
            this.ckBOP2005.AutoSize = true;
            this.ckBOP2005.Checked = true;
            this.ckBOP2005.CheckState = System.Windows.Forms.CheckState.Checked;
            this.ckBOP2005.Location = new System.Drawing.Point(14, 82);
            this.ckBOP2005.Margin = new System.Windows.Forms.Padding(2);
            this.ckBOP2005.Location = new System.Drawing.Point(19, 102);
            this.ckBOP2005.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.ckBOP2005.Name = "ckBOP2005";
            this.ckBOP2005.Size = new System.Drawing.Size(96, 16);
            this.ckBOP2005.Size = new System.Drawing.Size(119, 19);
            this.ckBOP2005.TabIndex = 21;
            this.ckBOP2005.Text = "工序完成监控";
            this.ckBOP2005.UseVisualStyleBackColor = true;
@@ -1345,10 +1380,10 @@
            this.ckBOP2004.AutoSize = true;
            this.ckBOP2004.Checked = true;
            this.ckBOP2004.CheckState = System.Windows.Forms.CheckState.Checked;
            this.ckBOP2004.Location = new System.Drawing.Point(14, 62);
            this.ckBOP2004.Margin = new System.Windows.Forms.Padding(2);
            this.ckBOP2004.Location = new System.Drawing.Point(19, 78);
            this.ckBOP2004.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.ckBOP2004.Name = "ckBOP2004";
            this.ckBOP2004.Size = new System.Drawing.Size(114, 16);
            this.ckBOP2004.Size = new System.Drawing.Size(143, 19);
            this.ckBOP2004.TabIndex = 17;
            this.ckBOP2004.Text = "工件SPC推出监控";
            this.ckBOP2004.UseVisualStyleBackColor = true;
@@ -1358,10 +1393,9 @@
            this.lbl_Alter_OP2004.AutoSize = true;
            this.lbl_Alter_OP2004.BackColor = System.Drawing.Color.White;
            this.lbl_Alter_OP2004.ForeColor = System.Drawing.Color.Red;
            this.lbl_Alter_OP2004.Location = new System.Drawing.Point(170, 63);
            this.lbl_Alter_OP2004.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
            this.lbl_Alter_OP2004.Location = new System.Drawing.Point(227, 79);
            this.lbl_Alter_OP2004.Name = "lbl_Alter_OP2004";
            this.lbl_Alter_OP2004.Size = new System.Drawing.Size(41, 12);
            this.lbl_Alter_OP2004.Size = new System.Drawing.Size(52, 15);
            this.lbl_Alter_OP2004.TabIndex = 20;
            this.lbl_Alter_OP2004.Text = "未连接";
            // 
@@ -1370,10 +1404,9 @@
            this.lbl_Alter_OP2002.AutoSize = true;
            this.lbl_Alter_OP2002.BackColor = System.Drawing.Color.White;
            this.lbl_Alter_OP2002.ForeColor = System.Drawing.Color.Red;
            this.lbl_Alter_OP2002.Location = new System.Drawing.Point(170, 23);
            this.lbl_Alter_OP2002.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
            this.lbl_Alter_OP2002.Location = new System.Drawing.Point(227, 29);
            this.lbl_Alter_OP2002.Name = "lbl_Alter_OP2002";
            this.lbl_Alter_OP2002.Size = new System.Drawing.Size(41, 12);
            this.lbl_Alter_OP2002.Size = new System.Drawing.Size(52, 15);
            this.lbl_Alter_OP2002.TabIndex = 18;
            this.lbl_Alter_OP2002.Text = "未连接";
            // 
@@ -1382,27 +1415,28 @@
            this.lbl_Alter_OP2003.AutoSize = true;
            this.lbl_Alter_OP2003.BackColor = System.Drawing.Color.White;
            this.lbl_Alter_OP2003.ForeColor = System.Drawing.Color.Red;
            this.lbl_Alter_OP2003.Location = new System.Drawing.Point(170, 42);
            this.lbl_Alter_OP2003.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
            this.lbl_Alter_OP2003.Location = new System.Drawing.Point(227, 52);
            this.lbl_Alter_OP2003.Name = "lbl_Alter_OP2003";
            this.lbl_Alter_OP2003.Size = new System.Drawing.Size(41, 12);
            this.lbl_Alter_OP2003.Size = new System.Drawing.Size(52, 15);
            this.lbl_Alter_OP2003.TabIndex = 19;
            this.lbl_Alter_OP2003.Text = "未连接";
            // 
            // btn_StopAllThread
            // 
            this.btn_StopAllThread.Location = new System.Drawing.Point(281, 26);
            this.btn_StopAllThread.Location = new System.Drawing.Point(375, 32);
            this.btn_StopAllThread.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.btn_StopAllThread.Name = "btn_StopAllThread";
            this.btn_StopAllThread.Size = new System.Drawing.Size(146, 33);
            this.btn_StopAllThread.Size = new System.Drawing.Size(195, 41);
            this.btn_StopAllThread.TabIndex = 2;
            this.btn_StopAllThread.Text = "停止所有选中线程";
            this.btn_StopAllThread.UseVisualStyleBackColor = true;
            // 
            // btn_StartUpAllThread
            // 
            this.btn_StartUpAllThread.Location = new System.Drawing.Point(48, 26);
            this.btn_StartUpAllThread.Location = new System.Drawing.Point(64, 32);
            this.btn_StartUpAllThread.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.btn_StartUpAllThread.Name = "btn_StartUpAllThread";
            this.btn_StartUpAllThread.Size = new System.Drawing.Size(146, 33);
            this.btn_StartUpAllThread.Size = new System.Drawing.Size(195, 41);
            this.btn_StartUpAllThread.TabIndex = 1;
            this.btn_StartUpAllThread.Text = "启动所有选中线程";
            this.btn_StartUpAllThread.UseVisualStyleBackColor = true;
@@ -1411,9 +1445,11 @@
            // groupBox1
            // 
            this.groupBox1.Controls.Add(this.panel1);
            this.groupBox1.Location = new System.Drawing.Point(6, 88);
            this.groupBox1.Location = new System.Drawing.Point(8, 110);
            this.groupBox1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.groupBox1.Name = "groupBox1";
            this.groupBox1.Size = new System.Drawing.Size(335, 100);
            this.groupBox1.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.groupBox1.Size = new System.Drawing.Size(447, 125);
            this.groupBox1.TabIndex = 0;
            this.groupBox1.TabStop = false;
            this.groupBox1.Text = "OP05";
@@ -1430,10 +1466,10 @@
            this.panel1.Controls.Add(this.ckBOP0503);
            this.panel1.Controls.Add(this.ckBOP0504);
            this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
            this.panel1.Location = new System.Drawing.Point(3, 17);
            this.panel1.Location = new System.Drawing.Point(4, 22);
            this.panel1.Margin = new System.Windows.Forms.Padding(0);
            this.panel1.Name = "panel1";
            this.panel1.Size = new System.Drawing.Size(329, 80);
            this.panel1.Size = new System.Drawing.Size(439, 99);
            this.panel1.TabIndex = 21;
            // 
            // ckBOP0501
@@ -1441,10 +1477,10 @@
            this.ckBOP0501.AutoSize = true;
            this.ckBOP0501.Checked = true;
            this.ckBOP0501.CheckState = System.Windows.Forms.CheckState.Checked;
            this.ckBOP0501.Location = new System.Drawing.Point(12, 2);
            this.ckBOP0501.Margin = new System.Windows.Forms.Padding(2);
            this.ckBOP0501.Location = new System.Drawing.Point(16, 2);
            this.ckBOP0501.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.ckBOP0501.Name = "ckBOP0501";
            this.ckBOP0501.Size = new System.Drawing.Size(96, 16);
            this.ckBOP0501.Size = new System.Drawing.Size(119, 19);
            this.ckBOP0501.TabIndex = 13;
            this.ckBOP0501.Text = "打码完成监控";
            this.ckBOP0501.UseVisualStyleBackColor = true;
@@ -1455,10 +1491,9 @@
            this.lbl_Alter_OP0504.AutoSize = true;
            this.lbl_Alter_OP0504.BackColor = System.Drawing.Color.White;
            this.lbl_Alter_OP0504.ForeColor = System.Drawing.Color.Red;
            this.lbl_Alter_OP0504.Location = new System.Drawing.Point(168, 63);
            this.lbl_Alter_OP0504.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
            this.lbl_Alter_OP0504.Location = new System.Drawing.Point(224, 79);
            this.lbl_Alter_OP0504.Name = "lbl_Alter_OP0504";
            this.lbl_Alter_OP0504.Size = new System.Drawing.Size(41, 12);
            this.lbl_Alter_OP0504.Size = new System.Drawing.Size(52, 15);
            this.lbl_Alter_OP0504.TabIndex = 20;
            this.lbl_Alter_OP0504.Text = "未连接";
            // 
@@ -1467,10 +1502,9 @@
            this.lbl_Alter_OP0501.AutoSize = true;
            this.lbl_Alter_OP0501.BackColor = System.Drawing.Color.White;
            this.lbl_Alter_OP0501.ForeColor = System.Drawing.Color.Red;
            this.lbl_Alter_OP0501.Location = new System.Drawing.Point(168, 2);
            this.lbl_Alter_OP0501.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
            this.lbl_Alter_OP0501.Location = new System.Drawing.Point(224, 2);
            this.lbl_Alter_OP0501.Name = "lbl_Alter_OP0501";
            this.lbl_Alter_OP0501.Size = new System.Drawing.Size(41, 12);
            this.lbl_Alter_OP0501.Size = new System.Drawing.Size(52, 15);
            this.lbl_Alter_OP0501.TabIndex = 14;
            this.lbl_Alter_OP0501.Text = "未连接";
            // 
@@ -1479,10 +1513,9 @@
            this.lbl_Alter_OP0503.AutoSize = true;
            this.lbl_Alter_OP0503.BackColor = System.Drawing.Color.White;
            this.lbl_Alter_OP0503.ForeColor = System.Drawing.Color.Red;
            this.lbl_Alter_OP0503.Location = new System.Drawing.Point(168, 42);
            this.lbl_Alter_OP0503.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
            this.lbl_Alter_OP0503.Location = new System.Drawing.Point(224, 52);
            this.lbl_Alter_OP0503.Name = "lbl_Alter_OP0503";
            this.lbl_Alter_OP0503.Size = new System.Drawing.Size(41, 12);
            this.lbl_Alter_OP0503.Size = new System.Drawing.Size(52, 15);
            this.lbl_Alter_OP0503.TabIndex = 19;
            this.lbl_Alter_OP0503.Text = "未连接";
            // 
@@ -1491,10 +1524,10 @@
            this.ckBOP0502.AutoSize = true;
            this.ckBOP0502.Checked = true;
            this.ckBOP0502.CheckState = System.Windows.Forms.CheckState.Checked;
            this.ckBOP0502.Location = new System.Drawing.Point(12, 22);
            this.ckBOP0502.Margin = new System.Windows.Forms.Padding(2);
            this.ckBOP0502.Location = new System.Drawing.Point(16, 28);
            this.ckBOP0502.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.ckBOP0502.Name = "ckBOP0502";
            this.ckBOP0502.Size = new System.Drawing.Size(96, 16);
            this.ckBOP0502.Size = new System.Drawing.Size(119, 19);
            this.ckBOP0502.TabIndex = 15;
            this.ckBOP0502.Text = "读码完成监控";
            this.ckBOP0502.UseVisualStyleBackColor = true;
@@ -1505,10 +1538,9 @@
            this.lbl_Alter_OP0502.AutoSize = true;
            this.lbl_Alter_OP0502.BackColor = System.Drawing.Color.White;
            this.lbl_Alter_OP0502.ForeColor = System.Drawing.Color.Red;
            this.lbl_Alter_OP0502.Location = new System.Drawing.Point(168, 23);
            this.lbl_Alter_OP0502.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
            this.lbl_Alter_OP0502.Location = new System.Drawing.Point(224, 29);
            this.lbl_Alter_OP0502.Name = "lbl_Alter_OP0502";
            this.lbl_Alter_OP0502.Size = new System.Drawing.Size(41, 12);
            this.lbl_Alter_OP0502.Size = new System.Drawing.Size(52, 15);
            this.lbl_Alter_OP0502.TabIndex = 18;
            this.lbl_Alter_OP0502.Text = "未连接";
            // 
@@ -1517,10 +1549,10 @@
            this.ckBOP0503.AutoSize = true;
            this.ckBOP0503.Checked = true;
            this.ckBOP0503.CheckState = System.Windows.Forms.CheckState.Checked;
            this.ckBOP0503.Location = new System.Drawing.Point(12, 42);
            this.ckBOP0503.Margin = new System.Windows.Forms.Padding(2);
            this.ckBOP0503.Location = new System.Drawing.Point(16, 52);
            this.ckBOP0503.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.ckBOP0503.Name = "ckBOP0503";
            this.ckBOP0503.Size = new System.Drawing.Size(96, 16);
            this.ckBOP0503.Size = new System.Drawing.Size(119, 19);
            this.ckBOP0503.TabIndex = 16;
            this.ckBOP0503.Text = "工件推出监控";
            this.ckBOP0503.UseVisualStyleBackColor = true;
@@ -1531,10 +1563,10 @@
            this.ckBOP0504.AutoSize = true;
            this.ckBOP0504.Checked = true;
            this.ckBOP0504.CheckState = System.Windows.Forms.CheckState.Checked;
            this.ckBOP0504.Location = new System.Drawing.Point(12, 62);
            this.ckBOP0504.Margin = new System.Windows.Forms.Padding(2);
            this.ckBOP0504.Location = new System.Drawing.Point(16, 78);
            this.ckBOP0504.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
            this.ckBOP0504.Name = "ckBOP0504";
            this.ckBOP0504.Size = new System.Drawing.Size(96, 16);
            this.ckBOP0504.Size = new System.Drawing.Size(119, 19);
            this.ckBOP0504.TabIndex = 17;
            this.ckBOP0504.Text = "工序完成监控";
            this.ckBOP0504.UseVisualStyleBackColor = true;
@@ -1545,10 +1577,11 @@
            this.tabPage3.Controls.Add(this.groupBox7);
            this.tabPage3.Controls.Add(this.groupBox5);
            this.tabPage3.Controls.Add(this.groupBox4);
            this.tabPage3.Location = new System.Drawing.Point(4, 22);
            this.tabPage3.Location = new System.Drawing.Point(4, 25);
            this.tabPage3.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.tabPage3.Name = "tabPage3";
            this.tabPage3.Padding = new System.Windows.Forms.Padding(3);
            this.tabPage3.Size = new System.Drawing.Size(1080, 557);
            this.tabPage3.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.tabPage3.Size = new System.Drawing.Size(1443, 700);
            this.tabPage3.TabIndex = 2;
            this.tabPage3.Text = "数据收集点配置";
            this.tabPage3.UseVisualStyleBackColor = true;
@@ -1583,9 +1616,11 @@
            this.groupBox7.Controls.Add(this.label2);
            this.groupBox7.Controls.Add(this.txt_EquipmentID);
            this.groupBox7.Controls.Add(this.label1);
            this.groupBox7.Location = new System.Drawing.Point(3, 412);
            this.groupBox7.Location = new System.Drawing.Point(4, 515);
            this.groupBox7.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.groupBox7.Name = "groupBox7";
            this.groupBox7.Size = new System.Drawing.Size(1065, 134);
            this.groupBox7.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.groupBox7.Size = new System.Drawing.Size(1420, 168);
            this.groupBox7.TabIndex = 4;
            this.groupBox7.TabStop = false;
            this.groupBox7.Text = "编辑收集点信息";
@@ -1593,18 +1628,20 @@
            // 
            // txt_ID
            // 
            this.txt_ID.Location = new System.Drawing.Point(93, 81);
            this.txt_ID.Location = new System.Drawing.Point(124, 101);
            this.txt_ID.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.txt_ID.Name = "txt_ID";
            this.txt_ID.Size = new System.Drawing.Size(100, 21);
            this.txt_ID.Size = new System.Drawing.Size(132, 25);
            this.txt_ID.TabIndex = 27;
            this.txt_ID.Visible = false;
            // 
            // label19
            // 
            this.label19.AutoSize = true;
            this.label19.Location = new System.Drawing.Point(22, 84);
            this.label19.Location = new System.Drawing.Point(29, 105);
            this.label19.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label19.Name = "label19";
            this.label19.Size = new System.Drawing.Size(53, 12);
            this.label19.Size = new System.Drawing.Size(68, 15);
            this.label19.TabIndex = 26;
            this.label19.Text = "主键ID:";
            this.label19.Visible = false;
@@ -1612,25 +1649,28 @@
            // cbox_DataCapturePLCType
            // 
            this.cbox_DataCapturePLCType.FormattingEnabled = true;
            this.cbox_DataCapturePLCType.Location = new System.Drawing.Point(329, 21);
            this.cbox_DataCapturePLCType.Location = new System.Drawing.Point(439, 26);
            this.cbox_DataCapturePLCType.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.cbox_DataCapturePLCType.Name = "cbox_DataCapturePLCType";
            this.cbox_DataCapturePLCType.Size = new System.Drawing.Size(100, 20);
            this.cbox_DataCapturePLCType.Size = new System.Drawing.Size(132, 23);
            this.cbox_DataCapturePLCType.TabIndex = 25;
            // 
            // txt_PLCPort
            // 
            this.txt_PLCPort.Location = new System.Drawing.Point(329, 75);
            this.txt_PLCPort.Location = new System.Drawing.Point(439, 94);
            this.txt_PLCPort.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.txt_PLCPort.Name = "txt_PLCPort";
            this.txt_PLCPort.Size = new System.Drawing.Size(100, 21);
            this.txt_PLCPort.Size = new System.Drawing.Size(132, 25);
            this.txt_PLCPort.TabIndex = 24;
            this.txt_PLCPort.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.txt_PLCPort_KeyPress);
            // 
            // label18
            // 
            this.label18.AutoSize = true;
            this.label18.Location = new System.Drawing.Point(264, 78);
            this.label18.Location = new System.Drawing.Point(352, 98);
            this.label18.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label18.Name = "label18";
            this.label18.Size = new System.Drawing.Size(59, 12);
            this.label18.Size = new System.Drawing.Size(76, 15);
            this.label18.TabIndex = 23;
            this.label18.Text = "PLC端口:";
            // 
@@ -1644,17 +1684,19 @@
            "Real",
            "Bool",
            "String"});
            this.cbox_DataCaptureColumnType.Location = new System.Drawing.Point(772, 78);
            this.cbox_DataCaptureColumnType.Location = new System.Drawing.Point(1029, 98);
            this.cbox_DataCaptureColumnType.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.cbox_DataCaptureColumnType.Name = "cbox_DataCaptureColumnType";
            this.cbox_DataCaptureColumnType.Size = new System.Drawing.Size(100, 20);
            this.cbox_DataCaptureColumnType.Size = new System.Drawing.Size(132, 23);
            this.cbox_DataCaptureColumnType.TabIndex = 22;
            // 
            // cbox_DataCaptureType
            // 
            this.cbox_DataCaptureType.FormattingEnabled = true;
            this.cbox_DataCaptureType.Location = new System.Drawing.Point(540, 72);
            this.cbox_DataCaptureType.Location = new System.Drawing.Point(720, 90);
            this.cbox_DataCaptureType.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.cbox_DataCaptureType.Name = "cbox_DataCaptureType";
            this.cbox_DataCaptureType.Size = new System.Drawing.Size(100, 20);
            this.cbox_DataCaptureType.Size = new System.Drawing.Size(132, 23);
            this.cbox_DataCaptureType.TabIndex = 21;
            // 
            // cbox_WorkingProcedure
@@ -1671,23 +1713,26 @@
            "OP60",
            "OP70",
            "OP80"});
            this.cbox_WorkingProcedure.Location = new System.Drawing.Point(93, 49);
            this.cbox_WorkingProcedure.Location = new System.Drawing.Point(124, 61);
            this.cbox_WorkingProcedure.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.cbox_WorkingProcedure.Name = "cbox_WorkingProcedure";
            this.cbox_WorkingProcedure.Size = new System.Drawing.Size(100, 20);
            this.cbox_WorkingProcedure.Size = new System.Drawing.Size(132, 23);
            this.cbox_WorkingProcedure.TabIndex = 20;
            // 
            // txt_DbNumber
            // 
            this.txt_DbNumber.Location = new System.Drawing.Point(772, 21);
            this.txt_DbNumber.Location = new System.Drawing.Point(1029, 26);
            this.txt_DbNumber.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.txt_DbNumber.Name = "txt_DbNumber";
            this.txt_DbNumber.Size = new System.Drawing.Size(100, 21);
            this.txt_DbNumber.Size = new System.Drawing.Size(132, 25);
            this.txt_DbNumber.TabIndex = 19;
            // 
            // btn_Cancel
            // 
            this.btn_Cancel.Location = new System.Drawing.Point(495, 101);
            this.btn_Cancel.Location = new System.Drawing.Point(660, 126);
            this.btn_Cancel.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.btn_Cancel.Name = "btn_Cancel";
            this.btn_Cancel.Size = new System.Drawing.Size(75, 23);
            this.btn_Cancel.Size = new System.Drawing.Size(100, 29);
            this.btn_Cancel.TabIndex = 3;
            this.btn_Cancel.Text = "取消";
            this.btn_Cancel.UseVisualStyleBackColor = true;
@@ -1695,9 +1740,10 @@
            // 
            // btn_Save
            // 
            this.btn_Save.Location = new System.Drawing.Point(414, 101);
            this.btn_Save.Location = new System.Drawing.Point(552, 126);
            this.btn_Save.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.btn_Save.Name = "btn_Save";
            this.btn_Save.Size = new System.Drawing.Size(75, 23);
            this.btn_Save.Size = new System.Drawing.Size(100, 29);
            this.btn_Save.TabIndex = 2;
            this.btn_Save.Text = "保存";
            this.btn_Save.UseVisualStyleBackColor = true;
@@ -1706,126 +1752,141 @@
            // label15
            // 
            this.label15.AutoSize = true;
            this.label15.Location = new System.Drawing.Point(677, 24);
            this.label15.Location = new System.Drawing.Point(903, 30);
            this.label15.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label15.Name = "label15";
            this.label15.Size = new System.Drawing.Size(89, 12);
            this.label15.Size = new System.Drawing.Size(113, 15);
            this.label15.TabIndex = 18;
            this.label15.Text = "节点DB块地址:";
            // 
            // txt_Offset
            // 
            this.txt_Offset.Location = new System.Drawing.Point(772, 48);
            this.txt_Offset.Location = new System.Drawing.Point(1029, 60);
            this.txt_Offset.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.txt_Offset.Name = "txt_Offset";
            this.txt_Offset.Size = new System.Drawing.Size(100, 21);
            this.txt_Offset.Size = new System.Drawing.Size(132, 25);
            this.txt_Offset.TabIndex = 17;
            // 
            // label14
            // 
            this.label14.AutoSize = true;
            this.label14.Location = new System.Drawing.Point(689, 51);
            this.label14.Location = new System.Drawing.Point(919, 64);
            this.label14.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label14.Name = "label14";
            this.label14.Size = new System.Drawing.Size(77, 12);
            this.label14.Size = new System.Drawing.Size(97, 15);
            this.label14.TabIndex = 16;
            this.label14.Text = "节点偏移量:";
            // 
            // label13
            // 
            this.label13.AutoSize = true;
            this.label13.Location = new System.Drawing.Point(677, 81);
            this.label13.Location = new System.Drawing.Point(903, 101);
            this.label13.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label13.Name = "label13";
            this.label13.Size = new System.Drawing.Size(89, 12);
            this.label13.Size = new System.Drawing.Size(112, 15);
            this.label13.TabIndex = 14;
            this.label13.Text = "节点数据类型:";
            // 
            // txt_DataCapturePointCode
            // 
            this.txt_DataCapturePointCode.Location = new System.Drawing.Point(540, 21);
            this.txt_DataCapturePointCode.Location = new System.Drawing.Point(720, 26);
            this.txt_DataCapturePointCode.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.txt_DataCapturePointCode.Name = "txt_DataCapturePointCode";
            this.txt_DataCapturePointCode.Size = new System.Drawing.Size(100, 21);
            this.txt_DataCapturePointCode.Size = new System.Drawing.Size(132, 25);
            this.txt_DataCapturePointCode.TabIndex = 13;
            // 
            // label12
            // 
            this.label12.AutoSize = true;
            this.label12.Location = new System.Drawing.Point(457, 24);
            this.label12.Location = new System.Drawing.Point(609, 30);
            this.label12.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label12.Name = "label12";
            this.label12.Size = new System.Drawing.Size(77, 12);
            this.label12.Size = new System.Drawing.Size(97, 15);
            this.label12.TabIndex = 12;
            this.label12.Text = "收集点代码:";
            // 
            // txt_DataCapturePointCname
            // 
            this.txt_DataCapturePointCname.Location = new System.Drawing.Point(540, 48);
            this.txt_DataCapturePointCname.Location = new System.Drawing.Point(720, 60);
            this.txt_DataCapturePointCname.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.txt_DataCapturePointCname.Name = "txt_DataCapturePointCname";
            this.txt_DataCapturePointCname.Size = new System.Drawing.Size(100, 21);
            this.txt_DataCapturePointCname.Size = new System.Drawing.Size(132, 25);
            this.txt_DataCapturePointCname.TabIndex = 11;
            // 
            // label11
            // 
            this.label11.AutoSize = true;
            this.label11.Location = new System.Drawing.Point(457, 51);
            this.label11.Location = new System.Drawing.Point(609, 64);
            this.label11.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label11.Name = "label11";
            this.label11.Size = new System.Drawing.Size(77, 12);
            this.label11.Size = new System.Drawing.Size(97, 15);
            this.label11.TabIndex = 10;
            this.label11.Text = "收集点描述:";
            // 
            // label5
            // 
            this.label5.AutoSize = true;
            this.label5.Location = new System.Drawing.Point(469, 78);
            this.label5.Location = new System.Drawing.Point(625, 98);
            this.label5.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label5.Name = "label5";
            this.label5.Size = new System.Drawing.Size(65, 12);
            this.label5.Size = new System.Drawing.Size(82, 15);
            this.label5.TabIndex = 8;
            this.label5.Text = "收集方式:";
            // 
            // label4
            // 
            this.label4.AutoSize = true;
            this.label4.Location = new System.Drawing.Point(264, 24);
            this.label4.Location = new System.Drawing.Point(352, 30);
            this.label4.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label4.Name = "label4";
            this.label4.Size = new System.Drawing.Size(59, 12);
            this.label4.Size = new System.Drawing.Size(76, 15);
            this.label4.TabIndex = 6;
            this.label4.Text = "PLC型号:";
            // 
            // txt_PLCIP
            // 
            this.txt_PLCIP.Location = new System.Drawing.Point(329, 48);
            this.txt_PLCIP.Location = new System.Drawing.Point(439, 60);
            this.txt_PLCIP.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.txt_PLCIP.Name = "txt_PLCIP";
            this.txt_PLCIP.Size = new System.Drawing.Size(100, 21);
            this.txt_PLCIP.Size = new System.Drawing.Size(132, 25);
            this.txt_PLCIP.TabIndex = 5;
            this.txt_PLCIP.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.txt_PLCIP_KeyPress);
            // 
            // label3
            // 
            this.label3.AutoSize = true;
            this.label3.Location = new System.Drawing.Point(246, 51);
            this.label3.Location = new System.Drawing.Point(328, 64);
            this.label3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label3.Name = "label3";
            this.label3.Size = new System.Drawing.Size(77, 12);
            this.label3.Size = new System.Drawing.Size(100, 15);
            this.label3.TabIndex = 4;
            this.label3.Text = "PLC IP地址:";
            // 
            // label2
            // 
            this.label2.AutoSize = true;
            this.label2.Location = new System.Drawing.Point(34, 51);
            this.label2.Location = new System.Drawing.Point(45, 64);
            this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label2.Name = "label2";
            this.label2.Size = new System.Drawing.Size(53, 12);
            this.label2.Size = new System.Drawing.Size(67, 15);
            this.label2.TabIndex = 2;
            this.label2.Text = "工序号:";
            // 
            // txt_EquipmentID
            // 
            this.txt_EquipmentID.Location = new System.Drawing.Point(93, 21);
            this.txt_EquipmentID.Location = new System.Drawing.Point(124, 26);
            this.txt_EquipmentID.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.txt_EquipmentID.Name = "txt_EquipmentID";
            this.txt_EquipmentID.Size = new System.Drawing.Size(100, 21);
            this.txt_EquipmentID.Size = new System.Drawing.Size(132, 25);
            this.txt_EquipmentID.TabIndex = 1;
            // 
            // label1
            // 
            this.label1.AutoSize = true;
            this.label1.Location = new System.Drawing.Point(22, 24);
            this.label1.Location = new System.Drawing.Point(29, 30);
            this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(65, 12);
            this.label1.Size = new System.Drawing.Size(82, 15);
            this.label1.TabIndex = 0;
            this.label1.Text = "设备编号:";
            // 
@@ -1835,18 +1896,21 @@
            this.groupBox5.Controls.Add(this.dgv_DataCaptureConfig);
            this.groupBox5.Controls.Add(this.btn_Update);
            this.groupBox5.Controls.Add(this.btn_Insert);
            this.groupBox5.Location = new System.Drawing.Point(3, 71);
            this.groupBox5.Location = new System.Drawing.Point(4, 89);
            this.groupBox5.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.groupBox5.Name = "groupBox5";
            this.groupBox5.Size = new System.Drawing.Size(1071, 335);
            this.groupBox5.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.groupBox5.Size = new System.Drawing.Size(1428, 419);
            this.groupBox5.TabIndex = 1;
            this.groupBox5.TabStop = false;
            this.groupBox5.Text = "收集点信息";
            // 
            // btn_Delete
            // 
            this.btn_Delete.Location = new System.Drawing.Point(540, 306);
            this.btn_Delete.Location = new System.Drawing.Point(720, 382);
            this.btn_Delete.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.btn_Delete.Name = "btn_Delete";
            this.btn_Delete.Size = new System.Drawing.Size(75, 23);
            this.btn_Delete.Size = new System.Drawing.Size(100, 29);
            this.btn_Delete.TabIndex = 7;
            this.btn_Delete.Text = "删除";
            this.btn_Delete.UseVisualStyleBackColor = true;
@@ -1868,14 +1932,15 @@
            this.PLCPort,
            this.DataCaptureColumn,
            this.DataCaptureColumnType});
            this.dgv_DataCaptureConfig.Location = new System.Drawing.Point(3, 17);
            this.dgv_DataCaptureConfig.Location = new System.Drawing.Point(4, 21);
            this.dgv_DataCaptureConfig.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.dgv_DataCaptureConfig.MultiSelect = false;
            this.dgv_DataCaptureConfig.Name = "dgv_DataCaptureConfig";
            this.dgv_DataCaptureConfig.ReadOnly = true;
            this.dgv_DataCaptureConfig.RowHeadersWidth = 51;
            this.dgv_DataCaptureConfig.RowTemplate.Height = 23;
            this.dgv_DataCaptureConfig.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
            this.dgv_DataCaptureConfig.Size = new System.Drawing.Size(1065, 283);
            this.dgv_DataCaptureConfig.Size = new System.Drawing.Size(1420, 354);
            this.dgv_DataCaptureConfig.TabIndex = 3;
            // 
            // EquipmentID
@@ -1970,9 +2035,10 @@
            // 
            // btn_Update
            // 
            this.btn_Update.Location = new System.Drawing.Point(427, 306);
            this.btn_Update.Location = new System.Drawing.Point(569, 382);
            this.btn_Update.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.btn_Update.Name = "btn_Update";
            this.btn_Update.Size = new System.Drawing.Size(75, 23);
            this.btn_Update.Size = new System.Drawing.Size(100, 29);
            this.btn_Update.TabIndex = 6;
            this.btn_Update.Text = "修改";
            this.btn_Update.UseVisualStyleBackColor = true;
@@ -1980,9 +2046,10 @@
            // 
            // btn_Insert
            // 
            this.btn_Insert.Location = new System.Drawing.Point(317, 306);
            this.btn_Insert.Location = new System.Drawing.Point(423, 382);
            this.btn_Insert.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.btn_Insert.Name = "btn_Insert";
            this.btn_Insert.Size = new System.Drawing.Size(75, 23);
            this.btn_Insert.Size = new System.Drawing.Size(100, 29);
            this.btn_Insert.TabIndex = 5;
            this.btn_Insert.Text = "新增";
            this.btn_Insert.UseVisualStyleBackColor = true;
@@ -1995,9 +2062,11 @@
            this.groupBox4.Controls.Add(this.textBox11);
            this.groupBox4.Controls.Add(this.label16);
            this.groupBox4.Controls.Add(this.btn_Query);
            this.groupBox4.Location = new System.Drawing.Point(3, 7);
            this.groupBox4.Location = new System.Drawing.Point(4, 9);
            this.groupBox4.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.groupBox4.Name = "groupBox4";
            this.groupBox4.Size = new System.Drawing.Size(1070, 58);
            this.groupBox4.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.groupBox4.Size = new System.Drawing.Size(1427, 72);
            this.groupBox4.TabIndex = 0;
            this.groupBox4.TabStop = false;
            this.groupBox4.Text = "查询条件";
@@ -2016,41 +2085,46 @@
            "OP60",
            "OP70",
            "OP80"});
            this.cbox_WorkingProcedure_Query.Location = new System.Drawing.Point(297, 25);
            this.cbox_WorkingProcedure_Query.Location = new System.Drawing.Point(396, 31);
            this.cbox_WorkingProcedure_Query.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.cbox_WorkingProcedure_Query.Name = "cbox_WorkingProcedure_Query";
            this.cbox_WorkingProcedure_Query.Size = new System.Drawing.Size(100, 20);
            this.cbox_WorkingProcedure_Query.Size = new System.Drawing.Size(132, 23);
            this.cbox_WorkingProcedure_Query.TabIndex = 22;
            // 
            // label17
            // 
            this.label17.AutoSize = true;
            this.label17.Location = new System.Drawing.Point(238, 27);
            this.label17.Location = new System.Drawing.Point(317, 34);
            this.label17.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label17.Name = "label17";
            this.label17.Size = new System.Drawing.Size(53, 12);
            this.label17.Size = new System.Drawing.Size(67, 15);
            this.label17.TabIndex = 21;
            this.label17.Text = "工序号:";
            // 
            // textBox11
            // 
            this.textBox11.Location = new System.Drawing.Point(107, 22);
            this.textBox11.Location = new System.Drawing.Point(143, 28);
            this.textBox11.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.textBox11.Name = "textBox11";
            this.textBox11.Size = new System.Drawing.Size(100, 21);
            this.textBox11.Size = new System.Drawing.Size(132, 25);
            this.textBox11.TabIndex = 15;
            // 
            // label16
            // 
            this.label16.AutoSize = true;
            this.label16.Location = new System.Drawing.Point(24, 25);
            this.label16.Location = new System.Drawing.Point(32, 31);
            this.label16.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label16.Name = "label16";
            this.label16.Size = new System.Drawing.Size(77, 12);
            this.label16.Size = new System.Drawing.Size(97, 15);
            this.label16.TabIndex = 14;
            this.label16.Text = "收集点代码:";
            // 
            // btn_Query
            // 
            this.btn_Query.Location = new System.Drawing.Point(905, 20);
            this.btn_Query.Location = new System.Drawing.Point(1207, 25);
            this.btn_Query.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.btn_Query.Name = "btn_Query";
            this.btn_Query.Size = new System.Drawing.Size(75, 23);
            this.btn_Query.Size = new System.Drawing.Size(100, 29);
            this.btn_Query.TabIndex = 1;
            this.btn_Query.Text = "查询";
            this.btn_Query.UseVisualStyleBackColor = true;
@@ -2061,10 +2135,11 @@
            this.tabPage4.Controls.Add(this.groupBox9);
            this.tabPage4.Controls.Add(this.groupBox8);
            this.tabPage4.Controls.Add(this.groupBox6);
            this.tabPage4.Location = new System.Drawing.Point(4, 22);
            this.tabPage4.Location = new System.Drawing.Point(4, 25);
            this.tabPage4.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.tabPage4.Name = "tabPage4";
            this.tabPage4.Padding = new System.Windows.Forms.Padding(3);
            this.tabPage4.Size = new System.Drawing.Size(1080, 557);
            this.tabPage4.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.tabPage4.Size = new System.Drawing.Size(1443, 700);
            this.tabPage4.TabIndex = 3;
            this.tabPage4.Text = "数据收集字段配置";
            this.tabPage4.UseVisualStyleBackColor = true;
@@ -2076,9 +2151,11 @@
            this.groupBox9.Controls.Add(this.textBox9);
            this.groupBox9.Controls.Add(this.label33);
            this.groupBox9.Controls.Add(this.button7);
            this.groupBox9.Location = new System.Drawing.Point(7, 7);
            this.groupBox9.Location = new System.Drawing.Point(9, 9);
            this.groupBox9.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.groupBox9.Name = "groupBox9";
            this.groupBox9.Size = new System.Drawing.Size(1070, 58);
            this.groupBox9.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.groupBox9.Size = new System.Drawing.Size(1427, 72);
            this.groupBox9.TabIndex = 7;
            this.groupBox9.TabStop = false;
            this.groupBox9.Text = "查询条件";
@@ -2097,41 +2174,46 @@
            "OP60",
            "OP70",
            "OP80"});
            this.comboBox5.Location = new System.Drawing.Point(297, 25);
            this.comboBox5.Location = new System.Drawing.Point(396, 31);
            this.comboBox5.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.comboBox5.Name = "comboBox5";
            this.comboBox5.Size = new System.Drawing.Size(100, 20);
            this.comboBox5.Size = new System.Drawing.Size(132, 23);
            this.comboBox5.TabIndex = 22;
            // 
            // label32
            // 
            this.label32.AutoSize = true;
            this.label32.Location = new System.Drawing.Point(238, 27);
            this.label32.Location = new System.Drawing.Point(317, 34);
            this.label32.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label32.Name = "label32";
            this.label32.Size = new System.Drawing.Size(53, 12);
            this.label32.Size = new System.Drawing.Size(67, 15);
            this.label32.TabIndex = 21;
            this.label32.Text = "工序号:";
            // 
            // textBox9
            // 
            this.textBox9.Location = new System.Drawing.Point(107, 22);
            this.textBox9.Location = new System.Drawing.Point(143, 28);
            this.textBox9.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.textBox9.Name = "textBox9";
            this.textBox9.Size = new System.Drawing.Size(100, 21);
            this.textBox9.Size = new System.Drawing.Size(132, 25);
            this.textBox9.TabIndex = 15;
            // 
            // label33
            // 
            this.label33.AutoSize = true;
            this.label33.Location = new System.Drawing.Point(24, 25);
            this.label33.Location = new System.Drawing.Point(32, 31);
            this.label33.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label33.Name = "label33";
            this.label33.Size = new System.Drawing.Size(77, 12);
            this.label33.Size = new System.Drawing.Size(97, 15);
            this.label33.TabIndex = 14;
            this.label33.Text = "收集点代码:";
            // 
            // button7
            // 
            this.button7.Location = new System.Drawing.Point(905, 20);
            this.button7.Location = new System.Drawing.Point(1207, 25);
            this.button7.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.button7.Name = "button7";
            this.button7.Size = new System.Drawing.Size(75, 23);
            this.button7.Size = new System.Drawing.Size(100, 29);
            this.button7.TabIndex = 1;
            this.button7.Text = "查询";
            this.button7.UseVisualStyleBackColor = true;
@@ -2142,18 +2224,21 @@
            this.groupBox8.Controls.Add(this.dataGridView1);
            this.groupBox8.Controls.Add(this.button5);
            this.groupBox8.Controls.Add(this.button6);
            this.groupBox8.Location = new System.Drawing.Point(6, 71);
            this.groupBox8.Location = new System.Drawing.Point(8, 89);
            this.groupBox8.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.groupBox8.Name = "groupBox8";
            this.groupBox8.Size = new System.Drawing.Size(1071, 335);
            this.groupBox8.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.groupBox8.Size = new System.Drawing.Size(1428, 419);
            this.groupBox8.TabIndex = 6;
            this.groupBox8.TabStop = false;
            this.groupBox8.Text = "收集点信息";
            // 
            // button4
            // 
            this.button4.Location = new System.Drawing.Point(540, 306);
            this.button4.Location = new System.Drawing.Point(720, 382);
            this.button4.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.button4.Name = "button4";
            this.button4.Size = new System.Drawing.Size(75, 23);
            this.button4.Size = new System.Drawing.Size(100, 29);
            this.button4.TabIndex = 7;
            this.button4.Text = "删除";
            this.button4.UseVisualStyleBackColor = true;
@@ -2174,14 +2259,15 @@
            this.dataGridViewTextBoxColumn8,
            this.dataGridViewTextBoxColumn9,
            this.dataGridViewTextBoxColumn10});
            this.dataGridView1.Location = new System.Drawing.Point(3, 17);
            this.dataGridView1.Location = new System.Drawing.Point(4, 21);
            this.dataGridView1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.dataGridView1.MultiSelect = false;
            this.dataGridView1.Name = "dataGridView1";
            this.dataGridView1.ReadOnly = true;
            this.dataGridView1.RowHeadersWidth = 51;
            this.dataGridView1.RowTemplate.Height = 23;
            this.dataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
            this.dataGridView1.Size = new System.Drawing.Size(1065, 283);
            this.dataGridView1.Size = new System.Drawing.Size(1420, 354);
            this.dataGridView1.TabIndex = 3;
            // 
            // dataGridViewTextBoxColumn1
@@ -2276,18 +2362,20 @@
            // 
            // button5
            // 
            this.button5.Location = new System.Drawing.Point(427, 306);
            this.button5.Location = new System.Drawing.Point(569, 382);
            this.button5.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.button5.Name = "button5";
            this.button5.Size = new System.Drawing.Size(75, 23);
            this.button5.Size = new System.Drawing.Size(100, 29);
            this.button5.TabIndex = 6;
            this.button5.Text = "修改";
            this.button5.UseVisualStyleBackColor = true;
            // 
            // button6
            // 
            this.button6.Location = new System.Drawing.Point(317, 306);
            this.button6.Location = new System.Drawing.Point(423, 382);
            this.button6.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.button6.Name = "button6";
            this.button6.Size = new System.Drawing.Size(75, 23);
            this.button6.Size = new System.Drawing.Size(100, 29);
            this.button6.TabIndex = 5;
            this.button6.Text = "新增";
            this.button6.UseVisualStyleBackColor = true;
@@ -2322,9 +2410,11 @@
            this.groupBox6.Controls.Add(this.label30);
            this.groupBox6.Controls.Add(this.textBox8);
            this.groupBox6.Controls.Add(this.label31);
            this.groupBox6.Location = new System.Drawing.Point(6, 412);
            this.groupBox6.Location = new System.Drawing.Point(8, 515);
            this.groupBox6.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.groupBox6.Name = "groupBox6";
            this.groupBox6.Size = new System.Drawing.Size(1065, 134);
            this.groupBox6.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.groupBox6.Size = new System.Drawing.Size(1420, 168);
            this.groupBox6.TabIndex = 5;
            this.groupBox6.TabStop = false;
            this.groupBox6.Text = "编辑收集点信息";
@@ -2332,18 +2422,20 @@
            // 
            // textBox1
            // 
            this.textBox1.Location = new System.Drawing.Point(93, 81);
            this.textBox1.Location = new System.Drawing.Point(124, 101);
            this.textBox1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.textBox1.Name = "textBox1";
            this.textBox1.Size = new System.Drawing.Size(100, 21);
            this.textBox1.Size = new System.Drawing.Size(132, 25);
            this.textBox1.TabIndex = 27;
            this.textBox1.Visible = false;
            // 
            // label20
            // 
            this.label20.AutoSize = true;
            this.label20.Location = new System.Drawing.Point(22, 84);
            this.label20.Location = new System.Drawing.Point(29, 105);
            this.label20.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label20.Name = "label20";
            this.label20.Size = new System.Drawing.Size(53, 12);
            this.label20.Size = new System.Drawing.Size(68, 15);
            this.label20.TabIndex = 26;
            this.label20.Text = "主键ID:";
            this.label20.Visible = false;
@@ -2351,24 +2443,27 @@
            // comboBox1
            // 
            this.comboBox1.FormattingEnabled = true;
            this.comboBox1.Location = new System.Drawing.Point(329, 21);
            this.comboBox1.Location = new System.Drawing.Point(439, 26);
            this.comboBox1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.comboBox1.Name = "comboBox1";
            this.comboBox1.Size = new System.Drawing.Size(100, 20);
            this.comboBox1.Size = new System.Drawing.Size(132, 23);
            this.comboBox1.TabIndex = 25;
            // 
            // textBox2
            // 
            this.textBox2.Location = new System.Drawing.Point(329, 75);
            this.textBox2.Location = new System.Drawing.Point(439, 94);
            this.textBox2.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.textBox2.Name = "textBox2";
            this.textBox2.Size = new System.Drawing.Size(100, 21);
            this.textBox2.Size = new System.Drawing.Size(132, 25);
            this.textBox2.TabIndex = 24;
            // 
            // label21
            // 
            this.label21.AutoSize = true;
            this.label21.Location = new System.Drawing.Point(264, 78);
            this.label21.Location = new System.Drawing.Point(352, 98);
            this.label21.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label21.Name = "label21";
            this.label21.Size = new System.Drawing.Size(59, 12);
            this.label21.Size = new System.Drawing.Size(76, 15);
            this.label21.TabIndex = 23;
            this.label21.Text = "PLC端口:";
            // 
@@ -2383,17 +2478,19 @@
            "Bool",
            "String",
            ""});
            this.comboBox2.Location = new System.Drawing.Point(772, 78);
            this.comboBox2.Location = new System.Drawing.Point(1029, 98);
            this.comboBox2.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.comboBox2.Name = "comboBox2";
            this.comboBox2.Size = new System.Drawing.Size(100, 20);
            this.comboBox2.Size = new System.Drawing.Size(132, 23);
            this.comboBox2.TabIndex = 22;
            // 
            // comboBox3
            // 
            this.comboBox3.FormattingEnabled = true;
            this.comboBox3.Location = new System.Drawing.Point(540, 72);
            this.comboBox3.Location = new System.Drawing.Point(720, 90);
            this.comboBox3.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.comboBox3.Name = "comboBox3";
            this.comboBox3.Size = new System.Drawing.Size(100, 20);
            this.comboBox3.Size = new System.Drawing.Size(132, 23);
            this.comboBox3.TabIndex = 21;
            // 
            // comboBox4
@@ -2410,32 +2507,36 @@
            "OP60",
            "OP70",
            "OP80"});
            this.comboBox4.Location = new System.Drawing.Point(93, 49);
            this.comboBox4.Location = new System.Drawing.Point(124, 61);
            this.comboBox4.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.comboBox4.Name = "comboBox4";
            this.comboBox4.Size = new System.Drawing.Size(100, 20);
            this.comboBox4.Size = new System.Drawing.Size(132, 23);
            this.comboBox4.TabIndex = 20;
            // 
            // textBox3
            // 
            this.textBox3.Location = new System.Drawing.Point(772, 21);
            this.textBox3.Location = new System.Drawing.Point(1029, 26);
            this.textBox3.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.textBox3.Name = "textBox3";
            this.textBox3.Size = new System.Drawing.Size(100, 21);
            this.textBox3.Size = new System.Drawing.Size(132, 25);
            this.textBox3.TabIndex = 19;
            // 
            // button2
            // 
            this.button2.Location = new System.Drawing.Point(495, 101);
            this.button2.Location = new System.Drawing.Point(660, 126);
            this.button2.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.button2.Name = "button2";
            this.button2.Size = new System.Drawing.Size(75, 23);
            this.button2.Size = new System.Drawing.Size(100, 29);
            this.button2.TabIndex = 3;
            this.button2.Text = "取消";
            this.button2.UseVisualStyleBackColor = true;
            // 
            // button3
            // 
            this.button3.Location = new System.Drawing.Point(414, 101);
            this.button3.Location = new System.Drawing.Point(552, 126);
            this.button3.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.button3.Name = "button3";
            this.button3.Size = new System.Drawing.Size(75, 23);
            this.button3.Size = new System.Drawing.Size(100, 29);
            this.button3.TabIndex = 2;
            this.button3.Text = "保存";
            this.button3.UseVisualStyleBackColor = true;
@@ -2443,134 +2544,150 @@
            // label22
            // 
            this.label22.AutoSize = true;
            this.label22.Location = new System.Drawing.Point(677, 24);
            this.label22.Location = new System.Drawing.Point(903, 30);
            this.label22.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label22.Name = "label22";
            this.label22.Size = new System.Drawing.Size(89, 12);
            this.label22.Size = new System.Drawing.Size(113, 15);
            this.label22.TabIndex = 18;
            this.label22.Text = "节点DB块地址:";
            // 
            // textBox4
            // 
            this.textBox4.Location = new System.Drawing.Point(772, 48);
            this.textBox4.Location = new System.Drawing.Point(1029, 60);
            this.textBox4.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.textBox4.Name = "textBox4";
            this.textBox4.Size = new System.Drawing.Size(100, 21);
            this.textBox4.Size = new System.Drawing.Size(132, 25);
            this.textBox4.TabIndex = 17;
            // 
            // label23
            // 
            this.label23.AutoSize = true;
            this.label23.Location = new System.Drawing.Point(689, 51);
            this.label23.Location = new System.Drawing.Point(919, 64);
            this.label23.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label23.Name = "label23";
            this.label23.Size = new System.Drawing.Size(77, 12);
            this.label23.Size = new System.Drawing.Size(97, 15);
            this.label23.TabIndex = 16;
            this.label23.Text = "节点偏移量:";
            // 
            // label24
            // 
            this.label24.AutoSize = true;
            this.label24.Location = new System.Drawing.Point(677, 81);
            this.label24.Location = new System.Drawing.Point(903, 101);
            this.label24.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label24.Name = "label24";
            this.label24.Size = new System.Drawing.Size(89, 12);
            this.label24.Size = new System.Drawing.Size(112, 15);
            this.label24.TabIndex = 14;
            this.label24.Text = "节点数据类型:";
            // 
            // textBox5
            // 
            this.textBox5.Location = new System.Drawing.Point(540, 21);
            this.textBox5.Location = new System.Drawing.Point(720, 26);
            this.textBox5.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.textBox5.Name = "textBox5";
            this.textBox5.Size = new System.Drawing.Size(100, 21);
            this.textBox5.Size = new System.Drawing.Size(132, 25);
            this.textBox5.TabIndex = 13;
            // 
            // label25
            // 
            this.label25.AutoSize = true;
            this.label25.Location = new System.Drawing.Point(457, 24);
            this.label25.Location = new System.Drawing.Point(609, 30);
            this.label25.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label25.Name = "label25";
            this.label25.Size = new System.Drawing.Size(77, 12);
            this.label25.Size = new System.Drawing.Size(97, 15);
            this.label25.TabIndex = 12;
            this.label25.Text = "收集点代码:";
            // 
            // textBox6
            // 
            this.textBox6.Location = new System.Drawing.Point(540, 48);
            this.textBox6.Location = new System.Drawing.Point(720, 60);
            this.textBox6.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.textBox6.Name = "textBox6";
            this.textBox6.Size = new System.Drawing.Size(100, 21);
            this.textBox6.Size = new System.Drawing.Size(132, 25);
            this.textBox6.TabIndex = 11;
            // 
            // label26
            // 
            this.label26.AutoSize = true;
            this.label26.Location = new System.Drawing.Point(457, 51);
            this.label26.Location = new System.Drawing.Point(609, 64);
            this.label26.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label26.Name = "label26";
            this.label26.Size = new System.Drawing.Size(77, 12);
            this.label26.Size = new System.Drawing.Size(97, 15);
            this.label26.TabIndex = 10;
            this.label26.Text = "收集点描述:";
            // 
            // label27
            // 
            this.label27.AutoSize = true;
            this.label27.Location = new System.Drawing.Point(469, 78);
            this.label27.Location = new System.Drawing.Point(625, 98);
            this.label27.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label27.Name = "label27";
            this.label27.Size = new System.Drawing.Size(65, 12);
            this.label27.Size = new System.Drawing.Size(82, 15);
            this.label27.TabIndex = 8;
            this.label27.Text = "收集方式:";
            // 
            // label28
            // 
            this.label28.AutoSize = true;
            this.label28.Location = new System.Drawing.Point(264, 24);
            this.label28.Location = new System.Drawing.Point(352, 30);
            this.label28.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label28.Name = "label28";
            this.label28.Size = new System.Drawing.Size(59, 12);
            this.label28.Size = new System.Drawing.Size(76, 15);
            this.label28.TabIndex = 6;
            this.label28.Text = "PLC型号:";
            // 
            // textBox7
            // 
            this.textBox7.Location = new System.Drawing.Point(329, 48);
            this.textBox7.Location = new System.Drawing.Point(439, 60);
            this.textBox7.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.textBox7.Name = "textBox7";
            this.textBox7.Size = new System.Drawing.Size(100, 21);
            this.textBox7.Size = new System.Drawing.Size(132, 25);
            this.textBox7.TabIndex = 5;
            // 
            // label29
            // 
            this.label29.AutoSize = true;
            this.label29.Location = new System.Drawing.Point(246, 51);
            this.label29.Location = new System.Drawing.Point(328, 64);
            this.label29.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label29.Name = "label29";
            this.label29.Size = new System.Drawing.Size(77, 12);
            this.label29.Size = new System.Drawing.Size(100, 15);
            this.label29.TabIndex = 4;
            this.label29.Text = "PLC IP地址:";
            // 
            // label30
            // 
            this.label30.AutoSize = true;
            this.label30.Location = new System.Drawing.Point(34, 51);
            this.label30.Location = new System.Drawing.Point(45, 64);
            this.label30.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label30.Name = "label30";
            this.label30.Size = new System.Drawing.Size(53, 12);
            this.label30.Size = new System.Drawing.Size(67, 15);
            this.label30.TabIndex = 2;
            this.label30.Text = "工序号:";
            // 
            // textBox8
            // 
            this.textBox8.Location = new System.Drawing.Point(93, 21);
            this.textBox8.Location = new System.Drawing.Point(124, 26);
            this.textBox8.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.textBox8.Name = "textBox8";
            this.textBox8.Size = new System.Drawing.Size(100, 21);
            this.textBox8.Size = new System.Drawing.Size(132, 25);
            this.textBox8.TabIndex = 1;
            // 
            // label31
            // 
            this.label31.AutoSize = true;
            this.label31.Location = new System.Drawing.Point(22, 24);
            this.label31.Location = new System.Drawing.Point(29, 30);
            this.label31.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
            this.label31.Name = "label31";
            this.label31.Size = new System.Drawing.Size(65, 12);
            this.label31.Size = new System.Drawing.Size(82, 15);
            this.label31.TabIndex = 0;
            this.label31.Text = "设备编号:";
            // 
            // FormMain
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(1086, 579);
            this.ClientSize = new System.Drawing.Size(1448, 724);
            this.Controls.Add(this.tabControl1);
            this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
            this.Name = "FormMain";
            this.Text = "一汽连杆数据采集系统采集后台";
            this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FormMain_FormClosed);
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_DataCaptureV3/FormMain.cs
@@ -26,6 +26,7 @@
{
    public partial class FormMain : Form
    {
        #region ä¿¡æ¯èŽ·å–çº¿ç¨‹
        Thread tskSetLableText;//各种lable动态显示
        Thread tskSetGridSource;//各种lable动态显示
@@ -172,7 +173,7 @@
                    DataCaptureHandler.RefreshDataCommonStatic();
                    foreach (var dataCapturehandler in this._dataCaptureHandler)
                    {
                        Thread tskdataCapture=new Thread(dataCapturehandler.DataCaptureStart);
                        Thread tskdataCapture = new Thread(dataCapturehandler.DataCaptureStart);
                        tskdataCapture.Start();
                    }
                }
@@ -199,7 +200,7 @@
                dgv_DataCaptureConfig.AutoGenerateColumns = false;
                LoadItemType();
                var ip = Dns.GetHostAddresses(Dns.GetHostName());
                if(ip.Select(o=>o.ToString()).Contains("192.168.216.203")|| ip.Select(o => o.ToString()).Contains("10.135.75.70"))
                if (ip.Select(o => o.ToString()).Contains("192.168.216.203") || ip.Select(o => o.ToString()).Contains("10.135.75.70"))
                {
                    button24_Click(sender, e);
                }
@@ -261,28 +262,28 @@
        {
            //while (true)
            //{
                try
            try
            {
                Action action = () =>
                {
                    Action action = () =>
                    using (DbModel db = new DbModel())
                    {
                        using (DbModel db = new DbModel())
                        {
                            sourcelist = db.ThreadStatusMonitor.Where(o => o.IsDeleted == false).ToList();
                            dataGridView2.DataSource = sourcelist.OrderBy(o=>o.Threadcode);
                            dataGridView2.Refresh();
                        }
                        //dataGridView2.DataSource = null;
                        //dataGridView2.DataSource = SystemValue.MainList;
                    };
                    Invoke(action);
                        sourcelist = db.ThreadStatusMonitor.Where(o => o.IsDeleted == false).ToList();
                        dataGridView2.DataSource = sourcelist.OrderBy(o => o.Threadcode);
                        dataGridView2.Refresh();
                    }
                    //dataGridView2.DataSource = null;
                    //dataGridView2.DataSource = SystemValue.MainList;
                };
                Invoke(action);
                }
                catch (Exception ex)
                {
                    Log4NetHelper.WriteErrorLog(LogType.FormMain, "方法GridRefresh出现异常:" + ex.Message, ex);
                    //continue;
                }
                //Thread.Sleep(10000);
            }
            catch (Exception ex)
            {
                Log4NetHelper.WriteErrorLog(LogType.FormMain, "方法GridRefresh出现异常:" + ex.Message, ex);
                //continue;
            }
            //Thread.Sleep(10000);
            //}
        }
        /// <summary>
@@ -412,7 +413,7 @@
                var endTime = DateTimeHelper.GetDateTime();
                var newFiles = FileHelper.DetectNewFilesCSV(textBox10.Text, 100000000, Convert.ToDateTime(startTime), endTime);
                var list=newFiles.GetEnumerator();
                var list = newFiles.GetEnumerator();
                foreach (System.IO.FileInfo file in newFiles)
                {
@@ -457,7 +458,7 @@
        private void txt_PLCPort_KeyPress(object sender, KeyPressEventArgs e)
        {
            if(((int)e.KeyChar < 48 || (int)e.KeyChar > 57)&& (int)e.KeyChar !=8)
            if (((int)e.KeyChar < 48 || (int)e.KeyChar > 57) && (int)e.KeyChar != 8)
            {
                e.Handled = true;
            }
@@ -501,10 +502,10 @@
            txt_EquipmentID.Text = "";
            txt_EquipmentID.Focus();
            cbox_WorkingProcedure.SelectedIndex = -1 ;
            cbox_WorkingProcedure.SelectedIndex = -1;
            cbox_DataCaptureColumnType.SelectedIndex = -1;
            cbox_DataCapturePLCType.SelectedIndex = 0;
            cbox_DataCaptureType.SelectedIndex = 0;
            cbox_DataCaptureType.SelectedIndex = 0;
        }
@@ -522,7 +523,7 @@
            try
            {
                if (dgv_DataCaptureConfig.CurrentRow==null||dgv_DataCaptureConfig.CurrentRow.Index < 0)
                if (dgv_DataCaptureConfig.CurrentRow == null || dgv_DataCaptureConfig.CurrentRow.Index < 0)
                {
                    MessageBox.Show("请选择一条需修改的数据!");
                    return;
@@ -549,7 +550,7 @@
                cbox_DataCaptureColumnType.Text = model.DataCaptureColumnType;
            }
            catch(Exception ex)
            catch (Exception ex)
            {
                MessageBox.Show($"修改收集点信息失败! {ex.Message}");
                btn_Update.Enabled = true;
@@ -574,8 +575,8 @@
                }
                var model = dgv_DataCaptureConfig.SelectedRows[0].DataBoundItem as DataCaptureConfig;
                var num=DataCaptureConfigManager.DeleteDataCaptureConfig(model);
                if(num>0)
                var num = DataCaptureConfigManager.DeleteDataCaptureConfig(model);
                if (num > 0)
                {
                    MessageBox.Show($"删除成功{num}条");
@@ -601,7 +602,7 @@
                //}
            }
            catch(Exception ex)
            catch (Exception ex)
            {
                MessageBox.Show($"删除收集点信息异常!{ex.Message}");
            }
@@ -615,7 +616,7 @@
            var itemType2 = ComboBoxHelper.GetComboxSelectValue(cbox_DataCapturePLCType, ref DataCapturePLCTypeFlag);
            DataCaptureConfig model = new DataCaptureConfig();
            model.Id= string.IsNullOrEmpty(txt_ID.Text.Trim())?0:Convert.ToInt32(txt_ID.Text.Trim());
            model.Id = string.IsNullOrEmpty(txt_ID.Text.Trim()) ? 0 : Convert.ToInt32(txt_ID.Text.Trim());
            model.EquipmentID = txt_EquipmentID.Text.Trim();
            model.WorkingProcedure = cbox_WorkingProcedure.Text.Trim();
            model.DataCapturePointCode = txt_DataCapturePointCode.Text.Trim();
@@ -677,7 +678,7 @@
                    MessageBox.Show($"请选择节点数据类型");
                    return;
                }
                if(cbox_DataCaptureType.SelectedIndex<1)
                if (cbox_DataCaptureType.SelectedIndex < 1)
                {
                    MessageBox.Show($"请选择收集方式");
                    return;
@@ -691,7 +692,7 @@
                {//修改
                    string message = "";
                    DataCaptureConfigManager.UpdateDataCaptureConfig(data, out message);
                    if(message.Length==0)
                    if (message.Length == 0)
                    {
                        setControlsVisible(false);
                        btn_Update.Enabled = true;
@@ -707,7 +708,7 @@
                    }
                }
                else if(btn_Save.Tag.Equals("create"))
                else if (btn_Save.Tag.Equals("create"))
                {//新增
                    DataCaptureConfigManager.InsertDataCaptureConfig(data);
                    setControlsVisible(false);
@@ -736,7 +737,7 @@
                DataCaptureHandler.RefreshDataCommonStatic();
                button8.Text = "模拟已启动";
                button8.BackColor = Color.Green;
                SystemValue.isStartedModel=true;
                SystemValue.isStartedModel = true;
                #region æ•°æ®é‡‡é›†é¡¹ç¡®å®š
                var dataCaptureConfigslist = DataCaptureConfigManager.GetDataCaptureConfigs();
                var columnList = DataCaptureConfigManager.GetDataCaptureColumnConfig();
@@ -881,7 +882,7 @@
        {
            try
            {
                if(!SystemValue.isStartedModel)
                if (!SystemValue.isStartedModel)
                {
                    MessageBox.Show("请点击调试模式按钮");
                    return;
@@ -1031,7 +1032,7 @@
                textBox10.Text = EnumberHelper.GetEnumName<WorkingProcedureForHMI>(int.Parse(textBox12.Text)).ToString();
                var bb = EnumberHelper.GetEnumForString<WorkingProcedureForHMI>(textBox12.Text);
                var A =EnumberHelper.GetEnumName<WorkingProcedureForHMI>(1);
                var A = EnumberHelper.GetEnumName<WorkingProcedureForHMI>(1);
                WorkingProcedureForHMI t = default(WorkingProcedureForHMI);
                bool isRight = EnumberHelper.GetEnumObject<WorkingProcedureForHMI>("OP10", out t);
@@ -1057,7 +1058,7 @@
                //wplog.GetType().GetProperty("workpieceid").SetValue(wplog, "WorkPieceIDGONGJIANMA");//给动态字段赋值
            }
            catch(Exception ex)
            catch (Exception ex)
            {
            }
@@ -1270,10 +1271,10 @@
                        default:
                            break;
                    }
                }
            }
            catch (Exception ex)
@@ -1315,7 +1316,7 @@
                }
               // DataCaptureHandler.WorkPieceID = textBox10.Text.Trim();
                // DataCaptureHandler.WorkPieceID = textBox10.Text.Trim();
            }
            catch (Exception ex)
@@ -1815,7 +1816,7 @@
            {
                MessageBox.Show(ex.Message);
            }
        }
        private void button26_Click(object sender, EventArgs e)
@@ -1836,18 +1837,17 @@
                {
                    switch (config.DataCapturePointCode)
                    {
                        case "OP3002CH3":
                        case "OP3002CH4":
                        case "OP3002CH5":
                        case "OP3002CH6":
                        case "OP2002A":
                        //case "OP2002B":
                        //case "OP2002C":
                            DataCaptureHandler_02 dc02 = new DataCaptureHandler_02();
                            dc02._dataCaptureConfig = config;
                            _dataCaptureHandler.Add(dc02);
                            break;
                        //case "OP6002":
                        //    DataCaptureHandler_OP6002.Instance._dataCaptureConfig = config;
                        //    _dataCaptureHandler.Add(DataCaptureHandler_OP6002.Instance);
                        //    break;
                            //case "OP6002":
                            //    DataCaptureHandler_OP6002.Instance._dataCaptureConfig = config;
                            //    _dataCaptureHandler.Add(DataCaptureHandler_OP6002.Instance);
                            //    break;
                    }
@@ -2174,123 +2174,123 @@
                #endregion
            #region OP30
                #region OP30
            //////var QualityStateStr = FileHelper.ReadPdfFileForSpire(textBox10.Text, "Result");
            //////var QualityOP30To6 = FileHelper.ReadPdfFileForSpire(textBox10.Text, "Y-Maximum");//衬套压装力矩
            //////var QualityOP30To7 = FileHelper.ReadPdfFileForSpire(textBox10.Text, "Block X");//衬套压装位移
                //////var QualityStateStr = FileHelper.ReadPdfFileForSpire(textBox10.Text, "Result");
                //////var QualityOP30To6 = FileHelper.ReadPdfFileForSpire(textBox10.Text, "Y-Maximum");//衬套压装力矩
                //////var QualityOP30To7 = FileHelper.ReadPdfFileForSpire(textBox10.Text, "Block X");//衬套压装位移
            ////var dt = CSVHelper.ReadCSV(textBox10.Text);
            //////var datatable = CSVHelper.ReadCSVList(textBox10.Text);
                ////var dt = CSVHelper.ReadCSV(textBox10.Text);
                //////var datatable = CSVHelper.ReadCSVList(textBox10.Text);
            //////List<string> rowFirst = new List<string>();
            //////List<string> rowSecond = new List<string>();
            //////if(datatable.Count==2)
            //////{
            //////    rowFirst = datatable[0].Split(',').ToList();
            //////    rowSecond = datatable[1].Split(',').ToList();
                //////List<string> rowFirst = new List<string>();
                //////List<string> rowSecond = new List<string>();
                //////if(datatable.Count==2)
                //////{
                //////    rowFirst = datatable[0].Split(',').ToList();
                //////    rowSecond = datatable[1].Split(',').ToList();
            //////}
                //////}
            //string d = DateTime.Now.AddHours(-10).ToString("yyyy-MM-dd_HH");
            ////扫描共享目录并将新的文件扫描返回  ä¸€èˆ¬èŠ‚æ‹åœ¨15秒左右(可以确认一下)
            ////扫描修改时间在上次扫描时间之前10秒到当前时间的之间的文件
            //var startTime = DateTimeHelper.GetDateTime().AddYears(-1);
            //var endTime = DateTimeHelper.GetDateTime();
            ////var newFiles = FileHelper.DetectNewFilesCSV(textBox10.Text+@"\"+d, 10, Convert.ToDateTime(startTime), endTime);
            ////List<FileInfo> files = new List<FileInfo>();
            ////foreach (var file in newFiles)
            ////{
            ////    files.Add((FileInfo)file);
            ////}
            ////files = files.OrderByDescending(o => o.LastAccessTime).ToList();
            ////foreach (var file in files)
            ////{
            ////    //var datatable = CSVHelper.ReadCSV(file.FullName);
            ////}
            //var newFiles = FileHelper.DetectNewFiles(textBox10.Text, "*.txt", 10, Convert.ToDateTime(startTime), endTime);
                //string d = DateTime.Now.AddHours(-10).ToString("yyyy-MM-dd_HH");
                ////扫描共享目录并将新的文件扫描返回  ä¸€èˆ¬èŠ‚æ‹åœ¨15秒左右(可以确认一下)
                ////扫描修改时间在上次扫描时间之前10秒到当前时间的之间的文件
                //var startTime = DateTimeHelper.GetDateTime().AddYears(-1);
                //var endTime = DateTimeHelper.GetDateTime();
                ////var newFiles = FileHelper.DetectNewFilesCSV(textBox10.Text+@"\"+d, 10, Convert.ToDateTime(startTime), endTime);
                ////List<FileInfo> files = new List<FileInfo>();
                ////foreach (var file in newFiles)
                ////{
                ////    files.Add((FileInfo)file);
                ////}
                ////files = files.OrderByDescending(o => o.LastAccessTime).ToList();
                ////foreach (var file in files)
                ////{
                ////    //var datatable = CSVHelper.ReadCSV(file.FullName);
                ////}
                //var newFiles = FileHelper.DetectNewFiles(textBox10.Text, "*.txt", 10, Convert.ToDateTime(startTime), endTime);
            //List<FileInfo> files = new List<FileInfo>();
            //foreach (var file in newFiles)
            //{
            //    files.Add((FileInfo)file);
            //}
            //files = files.OrderByDescending(o => o.LastAccessTime).ToList();
            //foreach (var file in files)
            //{
            //    //string[] lines = File.ReadAllLines(file.FullName);
            //    //foreach (string line in lines)
            //    //{
            //    //    // å¤„理每一行的逻辑
            //    //}
            //    ////var datatable = CSVHelper.ReadCSV(file.FullName);
            //    //using (StreamReader reader = new StreamReader(file.FullName))
            //    //{
            //    //    string line;
            //    //    while ((line = reader.ReadLine()) != null)
            //    //    {
            //    //        // å¤„理每一行的逻辑
            //    //    }
            //    //}
                //List<FileInfo> files = new List<FileInfo>();
                //foreach (var file in newFiles)
                //{
                //    files.Add((FileInfo)file);
                //}
                //files = files.OrderByDescending(o => o.LastAccessTime).ToList();
                //foreach (var file in files)
                //{
                //    //string[] lines = File.ReadAllLines(file.FullName);
                //    //foreach (string line in lines)
                //    //{
                //    //    // å¤„理每一行的逻辑
                //    //}
                //    ////var datatable = CSVHelper.ReadCSV(file.FullName);
                //    //using (StreamReader reader = new StreamReader(file.FullName))
                //    //{
                //    //    string line;
                //    //    while ((line = reader.ReadLine()) != null)
                //    //    {
                //    //        // å¤„理每一行的逻辑
                //    //    }
                //    //}
            //    string fileContent = File.ReadAllText(file.FullName);
            //    string[] lines2 = fileContent.Split('\n');
            //    bool IDCodeIndex = false;
            //    int Mcount = 0;
            //    foreach (string line in lines2)
            //    {
            //        // å¤„理每一行的逻辑
            //        if (line.Contains("ID-Code"))//两个拧紧,每个前面都有ID-Code
            //        {
            //            IDCodeIndex = true;
            //            Mcount = 0;
            //        }
            //        if(IDCodeIndex)
            //        {
            //            if (line.Contains(" M "))//第三个M行是拧紧数据
            //            {
            //                Mcount++;
            //                if(Mcount==3)
            //                {
            //                    var str=line.Replace("+", "").Replace("-", "");
            //                    var list = str.Split('M');
            //                    if(list.Count()==4)
            //                    {
                //    string fileContent = File.ReadAllText(file.FullName);
                //    string[] lines2 = fileContent.Split('\n');
                //    bool IDCodeIndex = false;
                //    int Mcount = 0;
                //    foreach (string line in lines2)
                //    {
                //        // å¤„理每一行的逻辑
                //        if (line.Contains("ID-Code"))//两个拧紧,每个前面都有ID-Code
                //        {
                //            IDCodeIndex = true;
                //            Mcount = 0;
                //        }
                //        if(IDCodeIndex)
                //        {
                //            if (line.Contains(" M "))//第三个M行是拧紧数据
                //            {
                //                Mcount++;
                //                if(Mcount==3)
                //                {
                //                    var str=line.Replace("+", "").Replace("-", "");
                //                    var list = str.Split('M');
                //                    if(list.Count()==4)
                //                    {
            //                    }
            //                    IDCodeIndex = false;
            //                }
            //            }
            //        }
            //    }
            //}
            #endregion
                //                    }
                //                    IDCodeIndex = false;
                //                }
                //            }
                //        }
                //    }
                //}
                #endregion
            #region OP60
            WorkPieceLogMiddle wplog = new WorkPieceLogMiddle();
            string path = "C:\\Users\\SY-PC\\Desktop\\FO";//OP80的地址
            var time = DateTimeHelper.GetDateTime();
            DateTime? fileFindTime = null;
            if (fileFindTime == null)
            {
                fileFindTime = time.AddMinutes(-100);
            }
            //OP60 éœ€è¦æ‰«ææ–‡ä»¶è¯»å–质量信息
            //扫描修改时间在上次扫描时间之前30秒到当前时间的之间的文件
            List<FileInfo> files = new List<FileInfo>();
            var newFiles = FileHelper.DetectNewFiles(path, "*.dfq", 300000, fileFindTime.Value, time.AddHours(2));
            foreach (var file in newFiles)
            {
                files.Add((FileInfo)file);
            }
            files = files.OrderByDescending(o => o.LastWriteTime).ToList();
                #region OP60
                WorkPieceLogMiddle wplog = new WorkPieceLogMiddle();
                string path = "C:\\Users\\SY-PC\\Desktop\\FO";//OP80的地址
                var time = DateTimeHelper.GetDateTime();
                DateTime? fileFindTime = null;
                if (fileFindTime == null)
                {
                    fileFindTime = time.AddMinutes(-100);
                }
                //OP60 éœ€è¦æ‰«ææ–‡ä»¶è¯»å–质量信息
                //扫描修改时间在上次扫描时间之前30秒到当前时间的之间的文件
                List<FileInfo> files = new List<FileInfo>();
                var newFiles = FileHelper.DetectNewFiles(path, "*.dfq", 300000, fileFindTime.Value, time.AddHours(2));
                foreach (var file in newFiles)
                {
                    files.Add((FileInfo)file);
                }
                files = files.OrderByDescending(o => o.LastWriteTime).ToList();
                List<OP60Info> op60Infos = new List<OP60Info>();
            foreach (var file in files)
            {//取倒序匹配的文件名为工件号的文件
                foreach (var file in files)
                {//取倒序匹配的文件名为工件号的文件
                    string DataCapturePointCode = "OP6002A";
                    if (file.Name.Contains("SP-" + DataCapturePointCode.Substring(DataCapturePointCode.Length - 1, 1)))
@@ -2298,7 +2298,7 @@
                    }
                    var datatable = CSVHelper.ReadCSVList(file.FullName);
                    if(datatable.Count<106)
                    if (datatable.Count < 106)
                    {//质量数据从106行开始
                    }
@@ -2312,7 +2312,7 @@
                    foreach (var item in list)
                    {
                        var listitem = item.Split(new String[] { strCharacter2 }, StringSplitOptions.None);
                        if(listitem.Count()==3)
                        if (listitem.Count() == 3)
                        {
                            OP60Info info = new OP60Info();
                            info.datetime = listitem[2];
@@ -2336,62 +2336,62 @@
                        break;
                    }
                }
            #endregion
                #endregion
            #region QITA
                #region QITA
            //var WorkingProcedure = "OP20";
            //var EquipmentID = "EOP20";
            //var DataCapturePointCode = "OP2002A";
            ////var DataCapturePointCode = "OP3002CH3";
            //WorkPieceLogMiddle wplog = new WorkPieceLogMiddle();
            //wplog.Id = Yitter.IdGenerator.YitIdHelper.NextId();
            //wplog.WorkingProcedure = WorkingProcedure;
            //wplog.EquipmentID = EquipmentID;
            //wplog.Remarks = WorkingProcedure;
            //wplog.MonitoringPoint = DataCapturePointCode;
            //wplog.WorkPieceID = "DZ045L2312150101041CAO";
            //wplog.CreatedTime = DateTimeHelper.GetDateTime();
            //wplog.CreatedUserName = DataCapturePointCode;
            //wplog.UpdatedUserName = Environment.MachineName + "自动" + Thread.CurrentThread.ManagedThreadId.ToString();
            //wplog.UpdatedTime = DateTimeHelper.GetDateTime();
            //wplog.IsDeleted = false;
            //wplog.QualityStateStr = "OK";
            ////try
            ////{
            ////    using (DbModel db = new DbModel())
            ////    {
            ////        var info = db.KnifeToolEquipmentInfo.Where(o => o.EquipmentID.Equals(wplog.EquipmentID)).ToList();
            ////        foreach (var item in info)
            ////        {
            ////            item.CurrentLife++;
            ////            item.UpdatedTime = DateTime.Now;
            ////        }
            ////        //db.SaveChanges();
            ////    }
                //var WorkingProcedure = "OP20";
                //var EquipmentID = "EOP20";
                //var DataCapturePointCode = "OP2002A";
                ////var DataCapturePointCode = "OP3002CH3";
                //WorkPieceLogMiddle wplog = new WorkPieceLogMiddle();
                //wplog.Id = Yitter.IdGenerator.YitIdHelper.NextId();
                //wplog.WorkingProcedure = WorkingProcedure;
                //wplog.EquipmentID = EquipmentID;
                //wplog.Remarks = WorkingProcedure;
                //wplog.MonitoringPoint = DataCapturePointCode;
                //wplog.WorkPieceID = "DZ045L2312150101041CAO";
                //wplog.CreatedTime = DateTimeHelper.GetDateTime();
                //wplog.CreatedUserName = DataCapturePointCode;
                //wplog.UpdatedUserName = Environment.MachineName + "自动" + Thread.CurrentThread.ManagedThreadId.ToString();
                //wplog.UpdatedTime = DateTimeHelper.GetDateTime();
                //wplog.IsDeleted = false;
                //wplog.QualityStateStr = "OK";
                ////try
                ////{
                ////    using (DbModel db = new DbModel())
                ////    {
                ////        var info = db.KnifeToolEquipmentInfo.Where(o => o.EquipmentID.Equals(wplog.EquipmentID)).ToList();
                ////        foreach (var item in info)
                ////        {
                ////            item.CurrentLife++;
                ////            item.UpdatedTime = DateTime.Now;
                ////        }
                ////        //db.SaveChanges();
                ////    }
            ////}
            ////catch (Exception ex)
            ////{
                ////}
                ////catch (Exception ex)
                ////{
            ////}
            ////wplog.Remarks = "";
            ////wplog.Remarks = (wplog.Remarks ?? "") + $"质量:{wplog.Remarks ?? "空"}";
            ////wplog.Remarks = null;
            ////wplog.Remarks = (wplog.Remarks ?? "") + $"质量:{wplog.Remarks ?? "空"}";
            ////wplog.Remarks = "111";
            ////wplog.Remarks = (wplog.Remarks ?? "") + $"质量:{wplog.Remarks ?? "空"}";
            ////wplog = GetCH4Info(textBox10.Text, wplog);
            //WorkPieceInfoManager.QualityInfoComplete(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure));
                ////}
                ////wplog.Remarks = "";
                ////wplog.Remarks = (wplog.Remarks ?? "") + $"质量:{wplog.Remarks ?? "空"}";
                ////wplog.Remarks = null;
                ////wplog.Remarks = (wplog.Remarks ?? "") + $"质量:{wplog.Remarks ?? "空"}";
                ////wplog.Remarks = "111";
                ////wplog.Remarks = (wplog.Remarks ?? "") + $"质量:{wplog.Remarks ?? "空"}";
                ////wplog = GetCH4Info(textBox10.Text, wplog);
                //WorkPieceInfoManager.QualityInfoComplete(wplog, PLCManger.GetLogTypeForWorkingProcedure(WorkingProcedure));
            ////WorkPieceLogMiddle log = new WorkPieceLogMiddle();
            ////log = GetCH5Info(textBox10.Text, log);
            #endregion
                ////WorkPieceLogMiddle log = new WorkPieceLogMiddle();
                ////log = GetCH5Info(textBox10.Text, log);
                #endregion
        }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
@@ -2402,7 +2402,7 @@
    public enum test
    {
        test1,
        test2=3,
        test3=4
        test2 = 3,
        test3 = 4
    }
}
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_DataCaptureV3/iWare_SCADA_DataCaptureV3.csproj
@@ -124,6 +124,12 @@
      <AutoGen>True</AutoGen>
      <DependentUpon>Resources.resx</DependentUpon>
    </Compile>
    <None Include="App - ç”Ÿäº§çŽ¯å¢ƒ.config">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Include="App - æœ¬æœºçŽ¯å¢ƒ.config">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Include="iWare_SCADA_DataCaptureV3_TemporaryKey.pfx" />
    <None Include="packages.config" />
    <None Include="Properties\Settings.settings">
DataCapture/iWare_SCADA_DataCapture/iWare_SCADA_Model/MiddleModel/WorkPieceLogMiddle.cs
@@ -166,17 +166,26 @@
        public bool OP35NOOK { get; set; }
        #endregion
        #region OP60哪个工位标记(A、B、C、D)【Editby shaocx,2024-06-07】
        /// <summary>
        /// OP60哪个工位标记(A、B、C、D)
        /// </summary>
        public bool Op60_Place_Flag { get; set; }
        #endregion
        public bool IsConnect { get; set; }
        /// <summary>
        /// PLC传值是string型的
        /// </summary>
        public string QualityStateStr{get;set;}
        public string QualityStateStr { get; set; }
        public string QualityType { get; set; }
        public string QualityStateUpdateMode { get; set; }
        public string QualityStateUpdateUser { get; set; }
        public Dictionary<string,string> GetWorkPieceInfoDict()
        public Dictionary<string, string> GetWorkPieceInfoDict()
        {
            Dictionary<string, string> dict = new Dictionary<string, string>();
            dict.Add("WorkPieceID", "WorkPieceID");
@@ -189,29 +198,29 @@
        public string OP10Flag { get; set; }
        public DateTime AlertTime { get; set; }
        public string QualityOP10To1 { get; set; }
        public string QualityOP40To1 { get; set; }
        public string QualityOP20To1 { get; set; }
        public string QualityOP30To1 { get; set; }
        public string QualityOP30To2 { get; set; }
        public string QualityOP30To3 { get; set; }
        public string QualityOP30To4 { get; set; }
        public string QualityOP30To5 { get; set; }
        public string QualityOP30To6 { get; set; }
@@ -224,46 +233,46 @@
        public string QualityOP35To1 { get; set; }
        public string QualityOP35To2 { get; set; }
        public string QualityOP60To1 { get; set; }
        public string QualityOP60To2 { get; set; }
        public string QualityOP70To1 { get; set; }
        public string QualityOP70To2 { get; set; }
        public string QualityOP70To3 { get; set; }
        public string QualityOP80To1 { get; set; }
        public string QualityOP80To2 { get; set; }
        public string QualityOP80To3 { get; set; }
        public string QualityOP80To4 { get; set; }
        public string QualityOP80To5 { get; set; }
        public string QualityOP80To6 { get; set; }
        public string QualityOP80To7 { get; set; }
        public string QualityOP80To8 { get; set; }
@@ -300,7 +309,7 @@
        public string è¿‡ç¨‹å‚数值 { get; set; }
        public string åºåˆ—号 { get; set; }
        public string é›¶ä»¶è¯†åˆ«å· { get; set; }
        public List<OP80ItemInfo> OP80ItemInfolist=new List<OP80ItemInfo>();
        public List<OP80ItemInfo> OP80ItemInfolist = new List<OP80ItemInfo>();
        public List<OP80ItemInfo> OP80ItemStatusInfolist = new List<OP80ItemInfo>();
    }