using DynStatDisk.App.Com; using DynStatDisk.App.Model; using HslCommunication; using HslCommunication.BasicFramework; using HslCommunication.Profinet.Melsec; using NLog; using NPOI.OpenXmlFormats.Wordprocessing; using NPOI.SS.Formula.Functions; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Net; using System.Net.NetworkInformation; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using static HslCommunication.Profinet.Knx.KnxCode; using static System.Windows.Forms.VisualStyles.VisualStyleElement; namespace DynStatDisk.App { public partial class Main : Form { public Main() { InitializeComponent(); this.ControlBox = false; } //日志的实例化 private static Logger logger { get; set; } = LogManager.GetCurrentClassLogger(); //FSqlContext.FDb实例 /// /// 位置信息 /// public MachineLocation LocationInfo { get; set; } //通信组件 private MelsecMcNet _MelsecMcNet { get; set; } = null; /// /// 照片集合数据 /// public List ListPhotoImage { get; set; } = new List(); /// /// 集合数据 /// public List ListDynStatDiskModel { get; set; } //服务器参数 public String ServerIP; public IPAddress ServerIPAddress; public bool ServerLinkState = false; public string HandScanPort = string.Empty; public string HandScanPortRate = string.Empty; public bool PLCLinkState = false; public string CurrentMachineNameStr = "动静盘-KP"; //pictureBox1 Image pbImageOK = Image.FromFile(@"Images\ok.png"); Image pbImageNG = Image.FromFile(@"Images\no.png"); Image pbImageWait = Image.FromFile(@"Images\Wait.png"); Image pbImageQuestion = Image.FromFile(@"Images\Question.png"); Image pbImageProofOK = Image.FromFile(@"Images\圆On.png"); Image pbImageProofNG = Image.FromFile(@"Images\圆Off.png"); Image pbImageProofWait = Image.FromFile(@"Images\Wait.png"); /// /// PLC信号模型 /// private PLCSglModel pLCSglModel { get; set; } /// /// 当前工件的间隙数据 /// private GapData CurGapData { get; set; } = new GapData(); /// /// 运行过程状态,比如条码好了后,是判断的状态,为On,托盘过后为Off的状态 /// private bool RunProcessState = false; ///// ///// 特殊机种 ///// //private bool SpecialModels { get; set; } ///////////////////////////////////////////////////// /// /// 线程定义 /// //////////////////////////////////////////////////// /// /// 通信监听 /// public Thread ListenNetThread; /// /// PLC通信监听 /// public Thread PLCScanThread; /// /// 实时更新UI线程 /// public Thread RtUpdateThread; /// /// 仪表数据 /// private string MeterSourceData { get; set; } = string.Empty; public string MeterSeriaScanPort { get; set; } = string.Empty; public string MeterSeriaScanPortRate { get; set; } = string.Empty; public bool MeterSeriaPortLinkState { get; set; } = false; /// /// 当前用户名 /// public string CurrentOperationNo = string.Empty; public string CurrentOperationNoUserLevel = string.Empty; //更新UI控件的委托,委托变量的类型的定义-方法的类型的定义 public delegate void UpdateUIDelegate(); UpdateUIDelegate _UpdateUIDelegate;//更新界面控件的委托 public delegate void ReceiveMeterDataDelegate(string data); ReceiveMeterDataDelegate _ReceiveMeterDataDelegate; #region "字段信息" ///////////////////////////////////////////////////////////////////////// /// /// 数据字段 /// ///////////////////////////////////////////////////////////////////////// public OperateResult OperateResultCylinderNo; public OperateResult OperateResultBit; public OperateResult OperateResultInt; /// /// 当前选择的机种信息数据 /// public DynStatDiskModel SelectedDynStatDiskModelInfo; /// /// 当前的筒体号 /// private string CurrentReadCylinderNo { get; set; } = string.Empty; /// /// 筒体号 /// private string CurrentCylinderNo { get; set; } = string.Empty; /// /// 筒体号前8位 /// private string CurrentCylinderNoFirst8 { get; set; } = string.Empty; /// /// 筒体号后5位 /// private string CurrentCylinderNoLast5 { get; set; } = string.Empty; /// /// 当前的序列号 /// private string CurrentSerialNo { get; set; } = string.Empty; /// /// 当前的机番号 /// private string CurrentModelNo { get; set; } = string.Empty; /// /// 当前的防错信息使能 /// private bool CurrentProofState { get; set; } /// /// 端子连接器 /// private string CurrentTerminalConnect { get; set; } = string.Empty; /// /// 绝缘垫片 /// private string CurrentInsulatPad { get; set; } = string.Empty; /// /// 电器盒盖 /// private string CurrentDynStatDiskConver { get; set; } = string.Empty; #endregion /// /// 信号集合状态 /// public List ListStateModel { get; set; } /// /// 操作集合结果数据 ListStateModel的结果赋值给这个的总结果数据 /// public List ListOpActionState { get; set; } /// /// 防呆的实时启用状态,在工件过来时开始判断防呆,工件流走后不做防呆判断 跟防呆使能不一样,那个是全局的使能 /// private bool ProofRtEnableState { get; set; } = true; ///// ///// 防呆防错使能状态 ///// //private bool ProofEnable { get; set; } = true; //界面相关参数 public int UIScan = 400; private int CurrentPallet = 0; private int TotalPalletCount = 0; public bool ThreadEnable = true; /// /// 欧式机构编号前缀 /// private string ConfigEuroNoFirst { get; set; } = "欧式机构编号前缀"; /// /// 欧式机构编号后缀 /// private string ConfigEuroNoLast { get; set; } = "欧式机构编号后缀"; /// /// 静盘编号前缀 /// private string ConfigStaticDiskFirst { get; set; } = "静盘编号前缀"; /// /// 静盘编号后缀 /// private string ConfigStaticDiskLast { get; set; } = "静盘编号后缀"; /// /// PLCIp /// private string PLCIP { get; set; } /// /// PLC Port /// private int PLCPort { get; set; } #region 功能界面按钮事件 /// /// 关闭按钮 /// /// /// private void btnClose_Click(object sender, EventArgs e) { if (DialogResult.OK == MessageBox.Show("你确定要关闭程序系统吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning)) { ThreadEnable = false; // 断开连接 _MelsecMcNet?.ConnectClose(); if (LocationInfo == MachineLocation.KP) { MeterSeria?.Close(); } // 断开连接 //busRtuClient.Close(); //if (busRtuClient.IsOpen() == true) //{ // busRtuClient.Close(); //} //if (MeterSeria.IsOpen == true) //{ // MeterSeria.Close(); //} //if (HandSerialPort.IsOpen == true) //{ // HandSerialPort.Close(); //} //axActUtlTypeE71.Close(); //WeighSerialPortThread.Abort(); //HearPulseThread.Abort(); //初始化状态 上一次的值和配置 switch (LocationInfo) { case MachineLocation.KP: UpdateOrInsert(LocationInfo.ToString(), ConfigEuroNoFirst, txtEuroNoFirst.Text.Trim()); UpdateOrInsert(LocationInfo.ToString(), ConfigEuroNoLast, txtEuroNoLast.Text.Trim()); UpdateOrInsert(LocationInfo.ToString(), ConfigStaticDiskFirst, txtStaticDiskFirst.Text.Trim()); UpdateOrInsert(LocationInfo.ToString(), ConfigStaticDiskLast, txtStaticDiskLast.Text.Trim()); break; case MachineLocation.G: UpdateOrInsert(LocationInfo.ToString(), ConfigEuroNoFirst, txtEuroNoFirst.Text.Trim()); UpdateOrInsert(LocationInfo.ToString(), ConfigEuroNoLast, txtEuroNoLast.Text.Trim()); UpdateOrInsert(LocationInfo.ToString(), ConfigStaticDiskFirst, txtStaticDiskFirst.Text.Trim()); UpdateOrInsert(LocationInfo.ToString(), ConfigStaticDiskLast, txtStaticDiskLast.Text.Trim()); break; default: break; } this.Close(); System.Environment.Exit(System.Environment.ExitCode); } } private void btnHistory_Click(object sender, EventArgs e) { if (CurrentOperationNo != "") { //frmHistoryData.CreateInstrance().ShowDialog(); } else { MessageBox.Show("请先登录!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } private void btnLog_Click(object sender, EventArgs e) { //frmMessageBox.CreateInstrance("流水号和机种型号不匹配,请检查!").ShowDialog(); //frmLogin.CreateInstrance(CurrentMachineName).ShowDialog(); this.TabControlMain.SelectedIndex = 1; } private void btnLogout_Click(object sender, EventArgs e) { if (DialogResult.OK == MessageBox.Show("你确定注销当前用户吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning)) { //_MelsecMcNet.Write("D1000", (short)3); CurrentOperationNo = ""; CurrentOperationNoUserLevel = ""; tslCurrentUser.Text = "当前用户:未登录"; tslCurrentUser.BackColor = Color.Red; tslCurrentUser.ForeColor = Color.White; this.TabControlMain.SelectedIndex = 1; } } private void btnUserManage_Click(object sender, EventArgs e) { if (CurrentOperationNo != "") { if (CurrentOperationNoUserLevel == "管理员") { FrmUserManage.CreateInstrance(CurrentOperationNoUserLevel).ShowDialog(); } else { MessageBox.Show("你不是管理员,无法操作用户管理!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } else { MessageBox.Show("请先登录!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } private void btnSystemSet_Click(object sender, EventArgs e) { if (CurrentOperationNo != "") { TabControlMain.SelectedIndex = 2; } else { MessageBox.Show("请先登录!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } private void btnModelMatch_Click(object sender, EventArgs e) { if (CurrentOperationNo != "") { frmMachineModelConfig.CreateInstrance().ShowDialog(); } else { MessageBox.Show("请先登录!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } #endregion private void Main_Load(object sender, EventArgs e) { try { if (ConfigHelper.GetValue("Location") == "KP") { LocationInfo = MachineLocation.KP; PLCIP = ConfigHelper.GetValue("KPPLCIp"); PLCPort = int.Parse(ConfigHelper.GetValue("KPPLCPort")); PanelGap.Visible = true; PanelRight.Visible = true; PanelOther.Visible = true; //串口初始化 SerialPortLinkInitial(LocationInfo); CurrentMachineNameStr = "动静盘安装-KP"; LoginTitle.Text = CurrentMachineNameStr; } else { LocationInfo = MachineLocation.G; PLCIP = ConfigHelper.GetValue("GPLCIp"); PLCPort = int.Parse(ConfigHelper.GetValue("GPLCPort")); CurrentMachineNameStr = "动静盘安装-G"; LoginTitle.Text = CurrentMachineNameStr; PanelGap.Visible = false; PanelRight.Visible = false; PanelOther.Visible = false; label33.Visible = false; txtExhCoveBatch.Visible = false; } ServerIP = ConfigHelper.GetValue("ServerIP"); //RtMeterRatio = int.Parse(ConfigHelper.GetValue("MeterRatio")); frmMachineModelConfig.CreateInstrance().MachineModelConfigChanged += Main_MachineModelConfigChanged; //ProofEnable = bool.Parse(ConfigHelper.GetValue("ProofEnable")); //获取程序的配置信息 var SqlCon = ConfigHelper.GetValue("connecting"); //FSqlContext.FDb.Select().ToList(); ListDynStatDiskModel = FSqlContext.FDb.Select().ToList(); //foreach (var item in ListDynStatDiskModel) //{ // ListPhotoImage.Add(new PhotoImage() // { // MachineModel = item.ModelNo, // }); //} //初始化状态 上一次的值和配置 switch (LocationInfo) { case MachineLocation.KP: var lastInfo1 = FSqlContext.FDb.Select().Where(a => a.MachineName == "KP" && a.AttributeName == ConfigEuroNoFirst).OrderByDescending(a => a.CreateTime).ToList(); if (lastInfo1 != null && lastInfo1.Count > 0) { txtEuroNoFirst.Text = lastInfo1.FirstOrDefault().AttributeValue; } var lastInfo2 = FSqlContext.FDb.Select().Where(a => a.MachineName == "KP" && a.AttributeName == ConfigEuroNoLast).OrderByDescending(a => a.CreateTime).ToList(); if (lastInfo2 != null && lastInfo2.Count > 0) { txtEuroNoLast.Text = lastInfo2.FirstOrDefault().AttributeValue; } var lastInfo3 = FSqlContext.FDb.Select().Where(a => a.MachineName == "KP" && a.AttributeName == ConfigStaticDiskFirst).OrderByDescending(a => a.CreateTime).ToList(); if (lastInfo3 != null && lastInfo3.Count > 0) { txtStaticDiskFirst.Text = lastInfo3.FirstOrDefault().AttributeValue; } var lastInfo4 = FSqlContext.FDb.Select().Where(a => a.MachineName == "KP" && a.AttributeName == ConfigStaticDiskLast).OrderByDescending(a => a.CreateTime).ToList(); if (lastInfo4 != null && lastInfo4.Count > 0) { txtStaticDiskLast.Text = lastInfo4.FirstOrDefault().AttributeValue; } break; case MachineLocation.G: var lastInfo21 = FSqlContext.FDb.Select().Where(a => a.MachineName == "G" && a.AttributeName == ConfigEuroNoFirst).OrderByDescending(a => a.CreateTime).ToList(); if (lastInfo21 != null && lastInfo21.Count > 0) { txtEuroNoFirst.Text = lastInfo21.FirstOrDefault().AttributeValue; } var lastInfo22 = FSqlContext.FDb.Select().Where(a => a.MachineName == "G" && a.AttributeName == ConfigEuroNoLast).OrderByDescending(a => a.CreateTime).ToList(); if (lastInfo22 != null && lastInfo22.Count > 0) { txtEuroNoLast.Text = lastInfo22.FirstOrDefault().AttributeValue; } var lastInfo23 = FSqlContext.FDb.Select().Where(a => a.MachineName == "G" && a.AttributeName == ConfigStaticDiskFirst).OrderByDescending(a => a.CreateTime).ToList(); if (lastInfo23 != null && lastInfo23.Count > 0) { txtStaticDiskFirst.Text = lastInfo23.FirstOrDefault().AttributeValue; } var lastInfo24 = FSqlContext.FDb.Select().Where(a => a.MachineName == "G" && a.AttributeName == ConfigStaticDiskLast).OrderByDescending(a => a.CreateTime).ToList(); if (lastInfo24 != null && lastInfo24.Count > 0) { txtStaticDiskLast.Text = lastInfo24.FirstOrDefault().AttributeValue; } break; default: break; } LoadLvGapColumn(); //PLC通信的连接 _MelsecMcNet = new MelsecMcNet(); _MelsecMcNet.IpAddress = PLCIP; _MelsecMcNet.Port = 6000; _MelsecMcNet.ConnectClose(); _MelsecMcNet.ConnectTimeOut = 3000; // 连接3秒超时 OperateResult connect = _MelsecMcNet.ConnectServer(); if (connect.IsSuccess)//初始连接状态的显示判断 { //MessageBox.Show(HslCommunication.StringResources.Language.ConnectedSuccess); //_MelsecMcNet.Write("M504", true); } else { MessageBox.Show(connect.Message + Environment.NewLine + "ErrorCode: " + connect.ErrorCode); } pLCSglModel = new PLCSglModel(); pLCSglModel.CylinderNoSglEvent += PLCSglModel_CylinderNoSglEvent; pLCSglModel.PalletPassSglEvent += PLCSglModel_PalletPassSglEvent; pLCSglModel.TongZhiGuiSglEvent += PLCSglModel_TongZhiGuiSglEvent; //委托实例化 _UpdateUIDelegate = new UpdateUIDelegate(UpdateUIMethod); _ReceiveMeterDataDelegate = new ReceiveMeterDataDelegate(ReceiveMeterDataMethod); ListStateModel = new List() { new StateModel("端子连接器","A",new List(){ new BitStateSgl("接近开关1",false), new BitStateSgl("接近开关2",false), new BitStateSgl("接近开关3",false), }), new StateModel("端子连接器","B",new List(){ new BitStateSgl("接近开关4",false), new BitStateSgl("接近开关5",false), new BitStateSgl("接近开关6",false), new BitStateSgl("光纤传感器",false), }), new StateModel("端子连接器","C",new List(){ new BitStateSgl("接近开关4",false), new BitStateSgl("接近开关5",false), new BitStateSgl("接近开关6",false) }), new StateModel("端子连接器","无",new List(){ //new BitStateSgl("虚拟开关-无",false) }), new StateModel("绝缘垫片","A",new List(){ new BitStateSgl("安全光栅1",false) }), new StateModel("绝缘垫片","B",new List(){ new BitStateSgl("安全光栅1",false) }), new StateModel("绝缘垫片","C",new List(){ new BitStateSgl("安全光栅1",false) }), new StateModel("绝缘垫片","D",new List(){ new BitStateSgl("安全光栅2",false) }), new StateModel("绝缘垫片","E",new List(){ new BitStateSgl("安全光栅2",false) }), new StateModel("绝缘垫片","F",new List(){ new BitStateSgl("安全光栅2",false) }), new StateModel("绝缘垫片","无",new List(){ //new BitStateSgl("虚拟开关-无",false) }), new StateModel("电器盒","A",new List(){ new IntStateSgl("扭矩枪信号",0,4) }), new StateModel("电器盒","B",new List(){ new IntStateSgl("扭矩枪信号",0,4) }), new StateModel("电器盒","C",new List(){ new IntStateSgl("扭矩枪信号",0,4) }), new StateModel("电器盒","无",new List(){ //new IntStateSgl("虚拟开关-无",0,4) }) }; foreach (var item in ListStateModel) { item.StateSglSglEvent += Item_StateSglSglEvent; } ListOpActionState = new List() { new OpActionState("端子连接器","A"), new OpActionState("绝缘垫片","A"), new OpActionState("电器盒","A"), }; //ListPhotoImage //网络状态扫描 ListenNetThread = new Thread(new ThreadStart(ListenNetMethod)); ListenNetThread.Start(); // 启动PLC更新数据的线程; PLCScanThread = new Thread(new ThreadStart(PLCScanThreadMethod)); PLCScanThread.Start(); RtUpdateThread = new Thread(new ThreadStart(RtUpdateThreadMethod)); RtUpdateThread.Start(); } catch (Exception ex) { logger.Error(String.Format("ErrSource : {0} ErrMsg : {1}", ex.StackTrace.ToString(), ex.Message.ToString())); } } /// /// 机种模型更改 /// /// /// private void Main_MachineModelConfigChanged(object sender, EventArgs e) { ListDynStatDiskModel = FSqlContext.FDb.Select().ToList(); } /// /// 通止规的信号模型 /// /// /// private void PLCSglModel_TongZhiGuiSglEvent(bool UpdateValue, string UpdateName) { BeginInvoke(new Action(() => { if (UpdateValue) { lblTongZhiGui.BackColor = Color.LimeGreen; } else { lblTongZhiGui.BackColor = Color.DarkGray; } })); } /// /// 托盘流走信号,清除一些HMI显示状态 /// /// /// /// private void PLCSglModel_PalletPassSglEvent(bool UpdateValue, string UpdateName) { //FSqlContext.FDb.Insert(new DynStatDiskInstall() //{ //}).ExecuteAffrows(); BeginInvoke(new Action(() => { //lblTerminalConnect.Text = "无"; //lblInsulatPad.Text = "无"; //lblDynStatDiskConver.Text = "无"; //pbTerminalConnect.Image = pbImageWait; //pbInsulatPad.Image = pbImageWait; //pbDynStatDiskConver.Image = pbImageWait; //pbESHOP.Image = null; //txtSerialNo.Text = ""; //txtModelNo.Text = ""; //btnTruePass.BackColor = Color.Transparent; //btnHandPass.BackColor = Color.Coral; txtEuroNo.Text = ""; txtDynStaticDiskNo.Text = ""; RunProcessState = false; txtCylinderNo.Text = ""; txtEuroSeriesNo.Text = ""; txtStaticDiskNoW.Text = ""; lblSubmitMsg.Visible = false; lblCylinderNoAlarmMsg.Visible = false; //间隙数据删除 txtOtherGapGroup.Text = ""; txtOtherGapValue.Text = ""; CurGapData.Group = ""; CurGapData.Gap = ""; CurGapData.Result = ""; if (cbxDefaultOK.Checked) { rbPartCountOK.Checked = true; rbBracketOilOK.Checked = true; rbSpiralScrewOK.Checked = true; rbDynStaticNoSameOK.Checked = true; rbDynStaticNoBreakOK.Checked = true; rbLiquidInjeMachOK.Checked = true; } })); } /// /// 每个产品达到要求注册的方法 /// /// /// /// private void Item_StateSglSglEvent(bool UpdateValue, string Name, string Category) { switch (Name) { //case "端子连接器": // ListOpActionState.Find(a => a.Name == Name).CurrentResult = true; // BeginInvoke(new Action(() => // { // pbTerminalConnect.Image = pbImageOK; // })); // break; //case "绝缘垫片": // ListOpActionState.Find(a => a.Name == Name).CurrentResult = true; // BeginInvoke(new Action(() => // { // pbInsulatPad.Image = pbImageOK; // })); // break; //case "电器盒": // ListOpActionState.Find(a => a.Name == Name).CurrentResult = true; // BeginInvoke(new Action(() => // { // pbDynStatDiskConver.Image = pbImageOK; // })); // break; //default: // break; } //综合判断一下是否三个都为OK了 if (ListOpActionState.Find(a => a.Name == "端子连接器").CurrentResult && ListOpActionState.Find(a => a.Name == "绝缘垫片").CurrentResult && ListOpActionState.Find(a => a.Name == "电器盒").CurrentResult) { _MelsecMcNet.Write("M10", true); BeginInvoke(new Action(() => { //btnTruePass.BackColor = Color.LimeGreen; })); } } /// /// PLC信号模型中条码准备完毕信号 /// /// /// /// private void PLCSglModel_CylinderNoSglEvent(bool UpdateValue, string UpdateName) { //获取机种番号 if (!string.IsNullOrEmpty(CurrentReadCylinderNo) && CurrentReadCylinderNo.Length > 4) { CurrentModelNo = CurrentReadCylinderNo.Substring(0, 4); CurrentCylinderNoFirst8 = CurrentReadCylinderNo.Substring(0, 8); CurrentCylinderNoLast5 = CurrentReadCylinderNo.Substring(CurrentReadCylinderNo.Length - 5); BeginInvoke(new Action(() => { txtCylinderNo.Text = CurrentReadCylinderNo; txtCylinderNoFirst8.Text = CurrentCylinderNoFirst8; txtCylinderNoLast5.Text = CurrentCylinderNoLast5; //数据读取成功后,控制焦点,等待让操作人员输入数据 txtEuroSeriesNo.Focus(); })); } RunProcessState = true; // //var ModelInfo = ListDynStatDiskModel.Where(a => a.ModelNo == CurrentModelNo).OrderByDescending(a => a.CreateTime).ToList(); //if (ModelInfo != null && ModelInfo.Count > 0) //{ // SelectedDynStatDiskModelInfo = ModelInfo.FirstOrDefault(); // ListOpActionState.Find(a => a.Name == "端子连接器").CurrentCategory = SelectedDynStatDiskModelInfo.TerminalConnect; // ListOpActionState.Find(a => a.Name == "端子连接器").CurrentResult = false; // ListOpActionState.Find(a => a.Name == "绝缘垫片").CurrentCategory = SelectedDynStatDiskModelInfo.InsulatPad; // ListOpActionState.Find(a => a.Name == "绝缘垫片").CurrentResult = false; // ListOpActionState.Find(a => a.Name == "电器盒").CurrentCategory = SelectedDynStatDiskModelInfo.DynStatDiskConver; // ListOpActionState.Find(a => a.Name == "电器盒").CurrentResult = false; // //为无的话,则直接判断未OK // //if (SelectedDynStatDiskModelInfo.TerminalConnect == "无") // //{ // // //ListOpActionState.Find(a => a.Name == "端子连接器").CurrentResult = true; // // ListStateModel.Find(a => a.Name == "端子连接器" && a.Category == "无").Result = false; // // ListStateModel.Find(a => a.Name == "端子连接器" && a.Category == "无").Result = true; // //} // //if (SelectedDynStatDiskModelInfo.InsulatPad == "无") // //{ // // //ListOpActionState.Find(a => a.Name == "绝缘垫片").CurrentResult = true; // // ListStateModel.Find(a => a.Name == "绝缘垫片" && a.Category == "无").Result = false; // // ListStateModel.Find(a => a.Name == "绝缘垫片" && a.Category == "无").Result = true; // //} // //if (SelectedDynStatDiskModelInfo.DynStatDiskConver == "无") // //{ // // //ListOpActionState.Find(a => a.Name == "电器盒").CurrentResult = true; // // ListStateModel.Find(a => a.Name == "电器盒" && a.Category == "无").Result = false; // // ListStateModel.Find(a => a.Name == "电器盒" && a.Category == "无").Result = true; // //} // //if (!ProofEnable) // //{ // // ListStateModel.Find(a => a.Name == "端子连接器" && a.Category == "无").Result = false; // // ListStateModel.Find(a => a.Name == "端子连接器" && a.Category == "无").Result = true; // // ListStateModel.Find(a => a.Name == "绝缘垫片" && a.Category == "无").Result = false; // // ListStateModel.Find(a => a.Name == "绝缘垫片" && a.Category == "无").Result = true; // // ListStateModel.Find(a => a.Name == "电器盒" && a.Category == "无").Result = false; // // ListStateModel.Find(a => a.Name == "电器盒" && a.Category == "无").Result = true; // //} // BeginInvoke(new Action(() => // { // //lblTerminalConnect.Text = SelectedDynStatDiskModelInfo.TerminalConnect; // //lblInsulatPad.Text = SelectedDynStatDiskModelInfo.InsulatPad; // //lblDynStatDiskConver.Text = SelectedDynStatDiskModelInfo.DynStatDiskConver; // //pbESHOP.Image = ListPhotoImage.Find(a => a.MachineModel == SelectedDynStatDiskModelInfo.ModelNo).ImageInfo; // })); //} //else //{ // MessageBox.Show("当前模板中没有找到对应的机种番号,请添加后再使用", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); //} } /// /// 更新界面数据 /// private void UpdateUIMethod() { } /// /// 网络监控线程 /// private void ListenNetMethod() { while (ThreadEnable) { Thread.Sleep(20000); try { // 判断是否读取成功 var result = _MelsecMcNet.Read("D0", 1); if (result.IsSuccess) { PLCLinkState = true; } else { PLCLinkState = false; } using (Ping ping = new Ping()) { PingReply pingReply = ping.Send(ServerIP); if (pingReply.Status == IPStatus.Success) { ServerLinkState = true; } else { ServerLinkState = false; } } //Ping ping = new Ping(); //仪表状态 if (LocationInfo == MachineLocation.KP) { if (MeterSeria.IsOpen) { MeterSeriaPortLinkState = true; } else { MeterSeriaPortLinkState = false; MeterSeria.Open(); } } this.BeginInvoke(new Action(() => { if (PLCLinkState) { tslPLC.Text = "PLC连接:正常"; tslPLC.BackColor = Color.Green; } else { tslPLC.Text = "PLC连接:失败"; tslPLC.BackColor = Color.Red; } if (ServerLinkState) { tslServer.Text = "服务器线路:正常"; tslServer.BackColor = Color.Green; } else { tslServer.Text = "服务器线路:失败"; tslServer.BackColor = Color.Red; } if (LocationInfo == MachineLocation.KP) { if (MeterSeriaPortLinkState) { tslMeterSeria.Text = "西马量仪端口:打开"; tslMeterSeria.BackColor = Color.Green; } else { tslMeterSeria.Text = "西马量仪端口:关闭"; tslMeterSeria.BackColor = Color.Red; } } else { tslMeterSeria.Text = "--"; tslMeterSeria.BackColor = Color.Green; } })); } catch (Exception ex) { logger.Error(String.Format("ErrSource : {0} ErrMsg : {1}", ex.StackTrace.ToString(), ex.Message.ToString())); //insertLogToDBDelegate.BeginInvoke(1, "UpdateUIMethod异常", ex.Message.ToString() + ex.StackTrace.Substring(ex.StackTrace.Length - 40, 40), null, null); } } } /// /// PLC扫描数据 /// private void PLCScanThreadMethod() { try { while (ThreadEnable) { Thread.Sleep(UIScan); if (LocationInfo == MachineLocation.G) { OperateResultBit = _MelsecMcNet.ReadBool("M6000", 30); if (OperateResultBit != null && OperateResultBit.IsSuccess == true) { //条码准备完毕信号 //pLCSglModel.CodeEnable = OperateResultBit.Content[20]; pLCSglModel.PalletPassEnable = OperateResultBit.Content[2]; pLCSglModel.TongZhiGuiEnable = OperateResultBit.Content[0]; } } else { //Todo //OperateResultCylinderNo = _MelsecMcNet.ReadString("D10", 7); //if (OperateResultCylinderNo != null && OperateResultCylinderNo.IsSuccess == true) //{ // //当前的实时数据 // CurrentReadCylinderNo = OperateResultCylinderNo.Content.Trim(); //} OperateResultBit = _MelsecMcNet.ReadBool("M6000", 30); if (OperateResultBit != null && OperateResultBit.IsSuccess == true) { //条码准备完毕信号 //pLCSglModel.CodeEnable = OperateResultBit.Content[20]; pLCSglModel.PalletPassEnable = OperateResultBit.Content[2]; pLCSglModel.TongZhiGuiEnable = OperateResultBit.Content[0]; } } //OperateResultInt = _MelsecMcNet.ReadInt16("D0", 2); //if (OperateResultInt != null && OperateResultInt.IsSuccess == true) //{ //} ////赋值给模型 //if (ProofRtEnableState) //{ // foreach (var item in ListOpActionState) // { // if (item.Name != "电器盒") // { // //先赋值一个初始的On的值,后面循环给这个结果赋值 // ListStateModel.Find(a => a.Name == item.Name && a.Category == item.CurrentCategory).TempBitValue = true; // foreach (var itemCell in ListStateModel.Find(a => a.Name == item.Name && a.Category == item.CurrentCategory).ListBitStateSgl) // { // ListStateModel.Find(a => a.Name == item.Name && a.Category == item.CurrentCategory).TempBitValue = ListStateModel.Find(a => a.Name == item.Name && a.Category == item.CurrentCategory).TempBitValue && itemCell.State; // } // //如果 端子连接器 C 并且光纤传感器为On的话,则不判断结果,此时结果不对的。 // if (ListStateModel.Find(a => a.Name == "端子连接器" && a.Category == "B").ListBitStateSgl.Find(a => a.SglName == "光纤传感器").State && // item.Name == "端子连接器" && item.CurrentCategory == "C" // ) // { // } // else // { // ListStateModel.Find(a => a.Name == item.Name && a.Category == item.CurrentCategory).Result = ListStateModel.Find(a => a.Name == item.Name && a.Category == item.CurrentCategory).TempBitValue; // } // } // else // { // ListStateModel.Find(a => a.Name == item.Name && a.Category == item.CurrentCategory).TempBitValue = true; // foreach (var itemCell in ListStateModel.Find(a => a.Name == item.Name && a.Category == item.CurrentCategory).ListIntStateSgl) // { // ListStateModel.Find(a => a.Name == item.Name && a.Category == item.CurrentCategory).TempBitValue = ListStateModel.Find(a => a.Name == item.Name && a.Category == item.CurrentCategory).TempBitValue && (itemCell.State >= 4); // } // ListStateModel.Find(a => a.Name == item.Name && a.Category == item.CurrentCategory).Result = ListStateModel.Find(a => a.Name == item.Name && a.Category == item.CurrentCategory).TempBitValue; // } // } //} } } catch (Exception ex) { logger.Error(String.Format("ErrSource : {0} ErrMsg : {1}", ex.StackTrace.ToString(), ex.Message.ToString())); //insertLogToDBDelegate.BeginInvoke(1, "UpdateUIMethod异常", ex.Message.ToString() + ex.StackTrace.Substring(ex.StackTrace.Length - 40, 40), null, null); } } private void RtUpdateThreadMethod() { try { while (ThreadEnable) { Thread.Sleep(UIScan); this.BeginInvoke(_UpdateUIDelegate); } } catch (Exception ex) { logger.Error(String.Format("ErrSource : {0} ErrMsg : {1}", ex.StackTrace.ToString(), ex.Message.ToString())); //insertLogToDBDelegate.BeginInvoke(1, "UpdateUIMethod异常", ex.Message.ToString() + ex.StackTrace.Substring(ex.StackTrace.Length - 40, 40), null, null); } } /// /// 用户登录 /// /// /// private void btnLogin_Click(object sender, EventArgs e) { try { if (string.IsNullOrEmpty(txtUserName.Text)) { MessageBox.Show("请输入用户名称", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if (string.IsNullOrEmpty(txtPassword.Text)) { MessageBox.Show("请输入密码", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } var ListUser = FSqlContext.FDb.Select().Where(a => a.UserName == txtUserName.Text.Trim() && a.MachineName == CurrentMachineNameStr).ToList(); if (ListUser != null && ListUser.Count() > 0) { if (ListUser.FirstOrDefault().Password == txtPassword.Text.Trim()) { MessageBox.Show("登录成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); Main_PopUserNameEvent(txtPassword.Text.Trim(), ListUser.FirstOrDefault().AccessLevel); this.TabControlMain.SelectedIndex = 0; txtUserName.Text = ""; txtPassword.Text = ""; //PopUserNameEvent(txtUserName.Text.Trim()); //this.Close(); } else { MessageBox.Show("密码错误!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } else { MessageBox.Show("当前用户不存在!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } catch (Exception ex) { logger.Error(String.Format("ErrSource : {0} ErrMsg : {1}", ex.StackTrace.ToString(), ex.Message.ToString())); //insertLogToDBDelegate.BeginInvoke(1, "UpdateUIMethod异常", ex.Message.ToString() + ex.StackTrace.Substring(ex.StackTrace.Length - 40, 40), null, null); } } /// /// 用户登录的事件发布方法 /// /// private void Main_PopUserNameEvent(string UserName, string UserLevel) { try { CurrentOperationNo = UserName; CurrentOperationNoUserLevel = UserLevel; Invoke(new Action(() => { tslCurrentUser.Text = "当前用户:" + CurrentOperationNo; tslCurrentUser.BackColor = Color.Green; tslCurrentUser.ForeColor = Color.White; })); } catch (Exception ex) { logger.Error(String.Format("ErrSource : {0} ErrMsg : {1}", ex.StackTrace.ToString(), ex.Message.ToString())); //insertLogToDBDelegate.BeginInvoke(1, "UpdateUIMethod异常", ex.Message.ToString() + ex.StackTrace.Substring(ex.StackTrace.Length - 40, 40), null, null); } } /// /// 确认放行 /// /// /// private void btnTruePass_Click(object sender, EventArgs e) { } /// /// 手动放行-空托盘放行 /// /// /// private void btnHandPass_Click(object sender, EventArgs e) { _MelsecMcNet.Write("M11", true); //btnHandPass.BackColor = Color.LimeGreen; } private void cbxProof_CheckStateChanged(object sender, EventArgs e) { //if (cbxProof.CheckState == CheckState.Checked) //{ // ProofEnable = true; // ConfigHelper.SetValue("ProofEnable", "True"); // //CurrentMeterEnableState = true; // //txtUpperSdUpperDiff_Rt.ReadOnly = false; // //btnUpperSdSaveCurrent.Enabled = true; // //btnUpperSdSaveCurrent.Focus(); //} //else //{ // ProofEnable = false; // ConfigHelper.SetValue("ProofEnable", "false"); // //CurrentMeterEnableState = false; // //txtUpperSdUpperDiff_Rt.ReadOnly = true; // //btnUpperSdSaveCurrent.Enabled = false; // //txtUpperSdUpperDiffSave.Focus(); //} } private void btnBack_Click(object sender, EventArgs e) { TabControlMain.SelectedIndex = 0; } //private void cbxSystemProof_CheckStateChanged(object sender, EventArgs e) //{ // if (cbxSystemProof.CheckState == CheckState.Checked) // { // //cbxProof.CheckState = CheckState.Checked; // ProofEnable = true; // ConfigHelper.SetValue("ProofEnable", "True"); // //CurrentMeterEnableState = true; // //txtUpperSdUpperDiff_Rt.ReadOnly = false; // //btnUpperSdSaveCurrent.Enabled = true; // //btnUpperSdSaveCurrent.Focus(); // } // else // { // //cbxProof.CheckState = CheckState.Unchecked; // ProofEnable = false; // ConfigHelper.SetValue("ProofEnable", "false"); // //CurrentMeterEnableState = false; // //txtUpperSdUpperDiff_Rt.ReadOnly = true; // //btnUpperSdSaveCurrent.Enabled = false; // //txtUpperSdUpperDiffSave.Focus(); // } //} #region 按键的触发 private void txtEuroSeriesNo_KeyDown(object sender, KeyEventArgs e) { try { //if条件检测按下的是不是Enter键 if (e.KeyCode == Keys.Enter) { //通过需要调取欧式机构编号信息 if (!string.IsNullOrEmpty(txtEuroSeriesNo.Text.Trim())) { txtEuroNo.Text = txtEuroNoFirst.Text + txtEuroSeriesNo.Text.Trim() + txtEuroNoLast.Text; } txtStaticDiskNoW.Focus(); //MessageBox.Show("您在textBox1里按下了回车键"); } } catch (Exception ex) { logger.Error(String.Format("ErrSource : {0} ErrMsg : {1}", ex.StackTrace.ToString(), ex.Message.ToString())); //insertLogToDBDelegate.BeginInvoke(1, "UpdateUIMethod异常", ex.Message.ToString() + ex.StackTrace.Substring(ex.StackTrace.Length - 40, 40), null, null); } } #endregion #region 仪表通信 /// /// 仪表串口通信初始化MeterSeria /// private void SerialPortLinkInitial(MachineLocation Location) { try { string SerialPort = "COM2"; int SerialRate = 9600; switch (Location) { case MachineLocation.KP: SerialPort = ConfigHelper.GetValue("KPSerialPort"); SerialRate = int.Parse(ConfigHelper.GetValue("KPSerialRate")); //设置通讯端口号及波特率、数据位、停止位和校验位。N-8-1 MeterSeria.PortName = SerialPort; MeterSeria.BaudRate = SerialRate; MeterSeria.Parity = System.IO.Ports.Parity.None; MeterSeria.DataBits = 8; MeterSeria.StopBits = System.IO.Ports.StopBits.One; //打开端口 MeterSeria.Open(); break; case MachineLocation.G: //SerialPort = ConfigHelper.GetValue("LowerSdPort"); //SerialRate = int.Parse(ConfigHelper.GetValue("LowerSdRate")); //SerialPort = "Port3"; //SerialRate = 9600; break; default: break; } } catch (Exception ex) { logger.Error(String.Format("ErrSource : {0} ErrMsg : {1}", ex.StackTrace.ToString(), ex.Message.ToString())); //insertLogToDBDelegate.BeginInvoke(1, "UpdateUIMethod异常", ex.Message.ToString() + ex.StackTrace.Substring(ex.StackTrace.Length - 40, 40), null, null); } } /// /// 仪表接口数据 /// 触发时发送数据 /// /// /// private void MeterSeria_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { try { // 接收数据 List buffer = new List(); byte[] data = new byte[1024]; while (true) { Thread.Sleep(20); if (MeterSeria.BytesToRead < 1) { break; } int recCount = MeterSeria.Read(data, 0, Math.Min(MeterSeria.BytesToRead, data.Length)); byte[] buffer2 = new byte[recCount]; Array.Copy(data, 0, buffer2, 0, recCount); buffer.AddRange(buffer2); } if (buffer.Count == 0) return; MeterSourceData = SoftBasic.GetAsciiStringRender(buffer.ToArray()); _ReceiveMeterDataDelegate.BeginInvoke(MeterSourceData, null, null);//接收和处理数据程序 //if (MeterSeria.BytesToRead > 0) //{ // Thread.Sleep(20); // //RuntimeWeightValue = ""; // MeterSourceData = MeterSeria.ReadExisting().ToString(); // Console.WriteLine($"时间:{DateTime.Now.ToString()}-消息:{MeterSourceData}"); // //u = AllRuntimeWeightValue.Length; // if (MeterSourceData.Length > 1) // { // _ReceiveMeterDataDelegate.BeginInvoke(MeterSourceData, null, null);//接收和处理数据程序 // //checkBoxCodeDataDelegate.BeginInvoke(BoxUseData, null, null); // } // MeterSeria.DiscardInBuffer();//丢弃缓冲区的数据 // //lblRuntimeCalcuResult.BeginInvoke(updateCalcuResultData, new object[] { 3 }); //} } catch (Exception ex) { logger.Error(String.Format("ErrSource : {0} ErrMsg : {1}", ex.StackTrace.ToString(), ex.Message.ToString())); //insertLogToDBDelegate.BeginInvoke(1, "UpdateUIMethod异常", ex.Message.ToString() + ex.StackTrace.Substring(ex.StackTrace.Length - 40, 40), null, null); } } /// /// 当前生成的Gap值 /// private GapData CurGenGapData { get; set; } /// /// 仪表消息流数据 /// private StringBuilder MeterMsgStream { get; set; } = new StringBuilder(); /// /// 仪表数据接收信息状态 /// 每个产品有要做两次,第一次是标准的产品的,获取分组信息 /// 第二次是获取测量信息 /// private string MeterDataState { get; set; } = "L1"; /// /// 测量标准件的分组信息 /// private string MeterDataStandardGroup { get; set; } /// /// 是否进行间隙的检测 /// private bool IsCheckMeterGap { get; set; } = false; /// /// 接受仪表发动的数据 /// /// private void ReceiveMeterDataMethod(string data) { if (!string.IsNullOrEmpty(data)) { //logger.Error(data); //string result = Encoding.Default.GetString(data.ToHexBytes()); //TODO解析数据-解析方法-分类 //截取两个头和尾部字符串 //if (data.StartsWith("CC")) //{ //} if (MeterDataState == "L1") { //当前是获取标准件的分组信息 var ArrData = data.Split(','); if (ArrData.Length > 16) { //获取分组信息 MeterDataStandardGroup = ArrData[13].Trim(); MeterDataState = "L2"; BeginInvoke(new Action(() => { lblMeterDataState.Text = "等待测量件"; })); } } else if (MeterDataState == "L2") { //当前是获取标准件的分组信息 var ArrData = data.Split(','); if (ArrData.Length > 16) { CurGenGapData = new GapData() { Gap = ArrData[4].Trim(), Group = MeterDataStandardGroup,// ArrData[13].Trim(), //Result = ArrData[12].Trim(), Result = ArrData[8].Trim(), Time = DateTime.Now, TimeId = DateTime.Now.ToString("yyyyMMddHHmmssfff") }; ListGapData.Add(CurGenGapData); MeterDataState = "L1"; BeginInvoke(new Action(() => { InsertLvGapResult(CurGenGapData.Gap, CurGenGapData.Result, CurGenGapData.Group, CurGenGapData.TimeId); lblMeterDataState.Text = "等待标准件"; })); } } } else { } } #endregion private void txtStaticDiskNoW_KeyDown(object sender, KeyEventArgs e) { try { //if条件检测按下的是不是Enter键 if (e.KeyCode == Keys.Enter) { if (!string.IsNullOrEmpty(txtStaticDiskNoW.Text.Trim())) { txtDynStaticDiskNo.Text = txtStaticDiskFirst.Text + txtStaticDiskNoW.Text.Trim() + txtStaticDiskLast.Text; } txtEuroCastNo.Focus(); //MessageBox.Show("您在textBox1里按下了回车键"); } } catch (Exception ex) { logger.Error(String.Format("ErrSource : {0} ErrMsg : {1}", ex.StackTrace.ToString(), ex.Message.ToString())); //insertLogToDBDelegate.BeginInvoke(1, "UpdateUIMethod异常", ex.Message.ToString() + ex.StackTrace.Substring(ex.StackTrace.Length - 40, 40), null, null); } } private void txtEuroCastNo_KeyDown(object sender, KeyEventArgs e) { try { //if条件检测按下的是不是Enter键 if (e.KeyCode == Keys.Enter) { //if (!CurrentMeterEnableState)//不启用仪表需要检查手动输入的数据 //{ //} txtStaticDiskCastNo.Focus(); //MessageBox.Show("您在textBox1里按下了回车键"); } } catch (Exception ex) { logger.Error(String.Format("ErrSource : {0} ErrMsg : {1}", ex.StackTrace.ToString(), ex.Message.ToString())); //insertLogToDBDelegate.BeginInvoke(1, "UpdateUIMethod异常", ex.Message.ToString() + ex.StackTrace.Substring(ex.StackTrace.Length - 40, 40), null, null); } } private void txtStaticDiskCastNo_KeyDown(object sender, KeyEventArgs e) { try { //if条件检测按下的是不是Enter键 if (e.KeyCode == Keys.Enter) { //if (!CurrentMeterEnableState)//不启用仪表需要检查手动输入的数据 //{ //} if (LocationInfo == MachineLocation.KP) { txtExhCoveBatch.Focus(); } else { btnTrue.Focus(); } //MessageBox.Show("您在textBox1里按下了回车键"); } } catch (Exception ex) { logger.Error(String.Format("ErrSource : {0} ErrMsg : {1}", ex.StackTrace.ToString(), ex.Message.ToString())); //insertLogToDBDelegate.BeginInvoke(1, "UpdateUIMethod异常", ex.Message.ToString() + ex.StackTrace.Substring(ex.StackTrace.Length - 40, 40), null, null); } } /// /// CylinderNoLast5 操作的话,则证明扫码枪异常,是人工手动输入的信息 /// 此时输入完成后,代表条码准备完毕 /// /// /// private void txtCylinderNoLast5_KeyDown(object sender, KeyEventArgs e) { try { //if条件检测按下的是不是Enter键 if (e.KeyCode == Keys.Enter) { //条码人工输入完毕,进行操作 //获取机种番号 if (string.IsNullOrEmpty(txtCylinderNoFirst8.Text.Trim())) { MessageBox.Show("【筒体号前8位】未发现输入数据,请确认!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (txtCylinderNoFirst8.Text.Trim().Length != 8) { MessageBox.Show("【筒体号前8位】未满足8位数据,请确认!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (string.IsNullOrEmpty(txtCylinderNoLast5.Text.Trim())) { MessageBox.Show("【筒体号后5位】未发现输入数据,请确认!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (txtCylinderNoLast5.Text.Trim().Length != 5) { MessageBox.Show("【筒体号后5位】未满足5位数据,请确认!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } CurrentReadCylinderNo = txtCylinderNoFirst8.Text.Trim() + txtCylinderNoLast5.Text.Trim(); //赋值数据 txtCylinderNo.Text = CurrentReadCylinderNo; CurrentModelNo = CurrentReadCylinderNo.Substring(0, 4); //数据读取成功后,控制焦点,等待让操作人员输入数据 txtEuroSeriesNo.Focus(); } } catch (Exception ex) { logger.Error(String.Format("ErrSource : {0} ErrMsg : {1}", ex.StackTrace.ToString(), ex.Message.ToString())); //insertLogToDBDelegate.BeginInvoke(1, "UpdateUIMethod异常", ex.Message.ToString() + ex.StackTrace.Substring(ex.StackTrace.Length - 40, 40), null, null); } } #region 特殊处理 /// /// 间隙数据集合 /// private List ListGapData { get; set; } = new List(); /// /// 选中的Gap /// private GapData SelectedGapData { get; set; } /// /// 加载数据 /// private void LoadLvGapColumn() { ColumnHeader h0 = new ColumnHeader(); ColumnHeader h1 = new ColumnHeader(); ColumnHeader h2 = new ColumnHeader(); ColumnHeader h3 = new ColumnHeader(); ColumnHeader h4 = new ColumnHeader(); ColumnHeader h5 = new ColumnHeader(); ColumnHeader h6 = new ColumnHeader(); ColumnHeader h7 = new ColumnHeader(); ColumnHeader h8 = new ColumnHeader(); ColumnHeader h9 = new ColumnHeader(); ColumnHeader h10 = new ColumnHeader(); ColumnHeader h11 = new ColumnHeader(); ColumnHeader h12 = new ColumnHeader(); ColumnHeader h13 = new ColumnHeader(); h1.TextAlign = HorizontalAlignment.Center; h2.TextAlign = HorizontalAlignment.Center; h3.TextAlign = HorizontalAlignment.Center; h4.TextAlign = HorizontalAlignment.Center; h5.TextAlign = HorizontalAlignment.Center; h6.TextAlign = HorizontalAlignment.Center; h7.TextAlign = HorizontalAlignment.Center; h8.TextAlign = HorizontalAlignment.Center; h9.TextAlign = HorizontalAlignment.Center; h10.TextAlign = HorizontalAlignment.Center; h11.TextAlign = HorizontalAlignment.Center; h12.TextAlign = HorizontalAlignment.Center; h13.TextAlign = HorizontalAlignment.Center; h0.Width = 20; h1.Width = 100; h2.Width = 90; h3.Width = 90; h4.Width = 0; h5.Width = 420; h6.Width = 150; h7.Width = 0; h8.Width = 0; h9.Width = 40; h10.Width = 100; h11.Width = 100; h12.Width = 100; h13.Width = 0; h0.Text = ""; h1.Text = "间隙"; h2.Text = "结论"; h3.Text = "分组"; h4.Text = ""; h5.Text = ""; h6.Text = ""; h7.Text = ""; h8.Text = ""; h9.Text = ""; h10.Text = ""; h11.Text = ""; h12.Text = ""; h13.Text = ""; //h14.Text = ""; LvGap.Columns.AddRange(new ColumnHeader[] { h0, h1, h2, h3, h4 }); LvGap.View = View.Details; } /// /// 插入数据 /// /// /// /// private void InsertLvGapResult(string Gap, string Result, string Gorup, string TimeId) { ListViewItem lvi = new ListViewItem(); lvi.ImageIndex = 0; lvi.Text = ""; lvi.SubItems.Add(Gap.ToString()); lvi.SubItems.Add(Result.ToString()); lvi.SubItems.Add(Gorup.ToString()); lvi.SubItems.Add(TimeId.ToString()); this.LvGap.Items.Add(lvi); } /// /// 加载数据 /// private void LoadLvGapData() { LvGap.Items.Clear(); //InitialLoadList.Clear(); //加载数据 if (ListGapData.Count > 0) { var data = ListGapData.OrderBy(a => a.Time).ToList(); foreach (var item in data) { InsertLvGapResult(item.Gap, item.Result, item.Result, item.TimeId ); } } } /// /// 选中LvGap 改变 /// /// /// private void LvGap_SelectedIndexChanged(object sender, EventArgs e) { if (LvGap.SelectedIndices.Count > 0 && LvGap.SelectedIndices != null && LvGap.FocusedItem != null) { SelectedGapData = new GapData(); SelectedGapData.Gap = LvGap.FocusedItem.SubItems[1].Text; SelectedGapData.Result = LvGap.FocusedItem.SubItems[2].Text; SelectedGapData.Group = LvGap.FocusedItem.SubItems[3].Text; SelectedGapData.TimeId = LvGap.FocusedItem.SubItems[4].Text; } } #endregion /// /// 提交数据 /// /// /// private void btnTrue_Click(object sender, EventArgs e) { if (lblTongZhiGui.BackColor != Color.LimeGreen) { MessageBox.Show("请检查通止规信息!", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); return; } //返回的数据 int ReturnData = 0; if (LocationInfo == MachineLocation.KP) { if (string.IsNullOrEmpty(txtCylinderNo.Text.Trim())) { MessageBox.Show("请检查筒体号是否有空的数据!", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); return; } if (string.IsNullOrEmpty(txtDynStaticDiskNo.Text.Trim())) { MessageBox.Show("请检查动盘号是否有空的数据!", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); return; } if (string.IsNullOrEmpty(txtEuroNo.Text.Trim())) { MessageBox.Show("请检查欧式机构编号是否有空的数据!", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); return; } if (string.IsNullOrEmpty(txtStaticDiskCastNo.Text.Trim())) { MessageBox.Show("请检查欧式机构铸件号是否有空的数据!", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); return; } if (IsCheckMeterGap) { if (string.IsNullOrEmpty(CurGapData.Gap.Trim())) { MessageBox.Show("请检查工件间隙值是否有空的数据!", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); return; } if (string.IsNullOrEmpty(CurGapData.Group.Trim())) { MessageBox.Show("请检查工件分组是否有空的数据!", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); return; } if (string.IsNullOrEmpty(CurGapData.Result.Trim())) { MessageBox.Show("请检查工件结果是否有空的数据!", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); return; } } ReturnData = FSqlContext.FDb.Insert(new KPDynStaticMach() { CylinderNo = txtCylinderNo.Text.Trim(), DynaDiskNo = txtDynStaticDiskNo.Text.Trim(), EuropMacine = txtEuroNo.Text.Trim(), OpNo = CurrentOperationNo, StaDskCastNo = txtStaticDiskCastNo.Text.Trim(), StaticDiskNo = txtDynStaticDiskNo.Text.Trim(), EuopMaDifValue = txtOtherGapValue.Text, CreateTime = DateTime.Now, MeterGap = CurGapData.Gap, MeterGroup = CurGapData.Group, MeterResult = CurGapData.Result //BracketOil = GetRbValue(rbPartCountOK, rbPartCountNG), //DynStaticNoBreak = GetRbValue(rbDynStaticNoBreakOK, rbDynStaticNoBreakNG), //DynStaticNoSame = GetRbValue(rbDynStaticNoSameOK, rbDynStaticNoSameNG), //PartCount = GetRbValue(rbPartCountOK, rbPartCountNG), //SpiralScrew = GetRbValue(rbSpiralScrewOK, rbSpiralScrewNG), //LiquidInjeMach = GetRbValue(rbLiquidInjeMachOK, rbLiquidInjeMachNG), //CylinderNo = txtCylinderNo.Text.Trim(), //DynStaticDiskNo = txtDynStaticDiskNo.Text.Trim(), //EuroCastNo = txtEuroCastNo.Text.Trim(), //EuroNo = txtEuroNo.Text.Trim(), //EuroSeriesNo = txtEuroSeriesNo.Text.Trim(), //OtherBracket = txtOtherBracket.Text.Trim(), //OtherDynDisk = txtOtherDynDisk.Text.Trim(), //OtherEuro = txtOtherEuro.Text.Trim(), //OtherGapGroup = txtOtherGapGroup.Text.Trim(), //OtherGapResult = "", //OtherGapValue = "", //StaticDiskCastNo = txtStaticDiskCastNo.Text.Trim(), //StaticDiskNoW = txtStaticDiskNoW.Text.Trim(), }).ExecuteAffrows(); if (ReturnData > 0) { lblSubmitMsg.Visible = true; txtCylinderNo.Text = ""; //提交数据成功,发送托盘放行 _MelsecMcNet.Write("M6001", true); } } else { if (string.IsNullOrEmpty(txtCylinderNo.Text.Trim())) { MessageBox.Show("请检查筒体号是否有空的数据!", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); return; } if (string.IsNullOrEmpty(txtDynStaticDiskNo.Text.Trim())) { MessageBox.Show("请检查动盘号是否有空的数据!", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); return; } if (string.IsNullOrEmpty(txtEuroNo.Text.Trim())) { MessageBox.Show("请检查欧式机构编号是否有空的数据!", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); return; } if (string.IsNullOrEmpty(txtStaticDiskCastNo.Text.Trim())) { MessageBox.Show("请检查欧式机构铸件号是否有空的数据!", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); return; } //GDynStaticMach ReturnData = FSqlContext.FDb.Insert(new GDynStaticMach() { CylinderNo = txtCylinderNo.Text.Trim(), DynaDiskNo = txtDynStaticDiskNo.Text.Trim(), EuropMacine = txtEuroNo.Text.Trim(), OpNo = CurrentOperationNo, StaDskCastNo = txtStaticDiskCastNo.Text.Trim(), StaticDiskNo = txtStaticDiskCastNo.Text.Trim(), CreateTime = DateTime.Now, }).ExecuteAffrows(); if (ReturnData > 0) { lblSubmitMsg.Visible = true; txtCylinderNo.Text = ""; //提交数据成功,发送托盘放行 _MelsecMcNet.Write("M6001", true); } } try { //if条件检测按下的是不是Enter键 if (ReturnData > 0) { txtCylinderNo.Focus(); //MessageBox.Show("您在textBox1里按下了回车键"); } } catch (Exception ex) { logger.Error(String.Format("ErrSource : {0} ErrMsg : {1}", ex.StackTrace.ToString(), ex.Message.ToString())); //insertLogToDBDelegate.BeginInvoke(1, "UpdateUIMethod异常", ex.Message.ToString() + ex.StackTrace.Substring(ex.StackTrace.Length - 40, 40), null, null); } } private void txtCylinderNo_KeyDown(object sender, KeyEventArgs e) { try { //if条件检测按下的是不是Enter键 if (e.KeyCode == Keys.Enter) { if (txtCylinderNo.Text.Length > 4) { var Data = ListDynStatDiskModel.Where(a => a.ModelNo == txtCylinderNo.Text.Trim().Substring(0, 4)).ToList(); if (Data != null && Data.Count > 0) { //判定首字符是否能匹配 if (!string.IsNullOrEmpty(txtStaticDiskFirst.Text.Trim())) { if (Data.FirstOrDefault().DynStatDiskKeyMatch != txtStaticDiskFirst.Text.Substring(0, 1)) { MessageBox.Show("动静盘编号首字符未匹配!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); txtCylinderNo.Focus(); return; } } else { MessageBox.Show("静盘编号前缀为空,请输入后再进行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); txtCylinderNo.Focus(); return; } if (Data.FirstOrDefault().GapInfo == "检测") { IsCheckMeterGap = true; BeginInvoke(new Action(() => { PanelGap.Enabled = true; PanelRight.Enabled = true; lblCylinderNoAlarmMsg.Visible = false; //进行间隙数据的移位 if (LvGap.Items.Count > 0) { txtOtherGapGroup.Text = LvGap.Items[0].SubItems[3].Text; txtOtherGapValue.Text = LvGap.Items[0].SubItems[1].Text; //txtOtherResult.Text=LvGap.Items[0].SubItems[2].Text; CurGapData.Group = LvGap.Items[0].SubItems[3].Text; CurGapData.Gap = LvGap.Items[0].SubItems[1].Text; CurGapData.Result = LvGap.Items[0].SubItems[2].Text; var findata = ListGapData.Find(a => a.TimeId == LvGap.Items[0].SubItems[4].Text); if (findata != null) { ListGapData.Remove(findata); LvGap.Items.RemoveAt(LvGap.Items[0].Index); //LvGap.Update(); } } else { //MessageBox.Show("没有检测的间隙数据?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); } })); } else { IsCheckMeterGap = false; BeginInvoke(new Action(() => { PanelGap.Enabled = false; PanelRight.Enabled = false; lblCylinderNoAlarmMsg.Visible = false; })); } txtEuroSeriesNo.Focus(); } else { BeginInvoke(new Action(() => { lblCylinderNoAlarmMsg.Visible = true; lblCylinderNoAlarmMsg.Text = "未找到配置机种信息,无法知道是否需要检测数据"; })); txtEuroSeriesNo.Focus(); //lblCylinderNoAlarmMsg } //MessageBox.Show("您在textBox1里按下了回车键"); } else { BeginInvoke(new Action(() => { lblCylinderNoAlarmMsg.Visible = true; lblCylinderNoAlarmMsg.Text = "筒体号长度不足,无法解析机种信息"; })); txtCylinderNo.Focus(); } } } catch (Exception ex) { logger.Error(String.Format("ErrSource : {0} ErrMsg : {1}", ex.StackTrace.ToString(), ex.Message.ToString())); //insertLogToDBDelegate.BeginInvoke(1, "UpdateUIMethod异常", ex.Message.ToString() + ex.StackTrace.Substring(ex.StackTrace.Length - 40, 40), null, null); } } private string GetRbValue(RadioButton Ok, RadioButton Ng) { if (!Ok.Checked) { return "OK"; } return "NG"; } #region Radio选项数据焦点数据 private void rbPartCountNG_KeyDown(object sender, KeyEventArgs e) { try { //if条件检测按下的是不是Enter键 if (e.KeyCode == Keys.Enter) { btnTrue.Focus(); //MessageBox.Show("您在textBox1里按下了回车键"); } } catch (Exception ex) { logger.Error(String.Format("ErrSource : {0} ErrMsg : {1}", ex.StackTrace.ToString(), ex.Message.ToString())); //insertLogToDBDelegate.BeginInvoke(1, "UpdateUIMethod异常", ex.Message.ToString() + ex.StackTrace.Substring(ex.StackTrace.Length - 40, 40), null, null); } } private void rbBracketOilNG_KeyDown(object sender, KeyEventArgs e) { try { //if条件检测按下的是不是Enter键 if (e.KeyCode == Keys.Enter) { btnTrue.Focus(); //MessageBox.Show("您在textBox1里按下了回车键"); } } catch (Exception ex) { logger.Error(String.Format("ErrSource : {0} ErrMsg : {1}", ex.StackTrace.ToString(), ex.Message.ToString())); //insertLogToDBDelegate.BeginInvoke(1, "UpdateUIMethod异常", ex.Message.ToString() + ex.StackTrace.Substring(ex.StackTrace.Length - 40, 40), null, null); } } private void rbSpiralScrewNG_KeyDown(object sender, KeyEventArgs e) { try { //if条件检测按下的是不是Enter键 if (e.KeyCode == Keys.Enter) { btnTrue.Focus(); //MessageBox.Show("您在textBox1里按下了回车键"); } } catch (Exception ex) { logger.Error(String.Format("ErrSource : {0} ErrMsg : {1}", ex.StackTrace.ToString(), ex.Message.ToString())); //insertLogToDBDelegate.BeginInvoke(1, "UpdateUIMethod异常", ex.Message.ToString() + ex.StackTrace.Substring(ex.StackTrace.Length - 40, 40), null, null); } } private void rbDynStaticNoSameNG_KeyDown(object sender, KeyEventArgs e) { try { //if条件检测按下的是不是Enter键 if (e.KeyCode == Keys.Enter) { btnTrue.Focus(); //MessageBox.Show("您在textBox1里按下了回车键"); } } catch (Exception ex) { logger.Error(String.Format("ErrSource : {0} ErrMsg : {1}", ex.StackTrace.ToString(), ex.Message.ToString())); //insertLogToDBDelegate.BeginInvoke(1, "UpdateUIMethod异常", ex.Message.ToString() + ex.StackTrace.Substring(ex.StackTrace.Length - 40, 40), null, null); } } private void rbDynStaticNoBreakNG_KeyDown(object sender, KeyEventArgs e) { try { //if条件检测按下的是不是Enter键 if (e.KeyCode == Keys.Enter) { btnTrue.Focus(); //MessageBox.Show("您在textBox1里按下了回车键"); } } catch (Exception ex) { logger.Error(String.Format("ErrSource : {0} ErrMsg : {1}", ex.StackTrace.ToString(), ex.Message.ToString())); //insertLogToDBDelegate.BeginInvoke(1, "UpdateUIMethod异常", ex.Message.ToString() + ex.StackTrace.Substring(ex.StackTrace.Length - 40, 40), null, null); } } private void rbLiquidInjeMachNG_KeyDown(object sender, KeyEventArgs e) { try { //if条件检测按下的是不是Enter键 if (e.KeyCode == Keys.Enter) { btnTrue.Focus(); //MessageBox.Show("您在textBox1里按下了回车键"); } } catch (Exception ex) { logger.Error(String.Format("ErrSource : {0} ErrMsg : {1}", ex.StackTrace.ToString(), ex.Message.ToString())); //insertLogToDBDelegate.BeginInvoke(1, "UpdateUIMethod异常", ex.Message.ToString() + ex.StackTrace.Substring(ex.StackTrace.Length - 40, 40), null, null); } } private void rbBracketOilOK_KeyDown(object sender, KeyEventArgs e) { try { //if条件检测按下的是不是Enter键 if (e.KeyCode == Keys.Enter) { btnTrue.Focus(); //MessageBox.Show("您在textBox1里按下了回车键"); } } catch (Exception ex) { logger.Error(String.Format("ErrSource : {0} ErrMsg : {1}", ex.StackTrace.ToString(), ex.Message.ToString())); //insertLogToDBDelegate.BeginInvoke(1, "UpdateUIMethod异常", ex.Message.ToString() + ex.StackTrace.Substring(ex.StackTrace.Length - 40, 40), null, null); } } private void rbSpiralScrewOK_KeyDown(object sender, KeyEventArgs e) { try { //if条件检测按下的是不是Enter键 if (e.KeyCode == Keys.Enter) { btnTrue.Focus(); //MessageBox.Show("您在textBox1里按下了回车键"); } } catch (Exception ex) { logger.Error(String.Format("ErrSource : {0} ErrMsg : {1}", ex.StackTrace.ToString(), ex.Message.ToString())); //insertLogToDBDelegate.BeginInvoke(1, "UpdateUIMethod异常", ex.Message.ToString() + ex.StackTrace.Substring(ex.StackTrace.Length - 40, 40), null, null); } } private void rbDynStaticNoSameOK_KeyDown(object sender, KeyEventArgs e) { try { //if条件检测按下的是不是Enter键 if (e.KeyCode == Keys.Enter) { btnTrue.Focus(); //MessageBox.Show("您在textBox1里按下了回车键"); } } catch (Exception ex) { logger.Error(String.Format("ErrSource : {0} ErrMsg : {1}", ex.StackTrace.ToString(), ex.Message.ToString())); //insertLogToDBDelegate.BeginInvoke(1, "UpdateUIMethod异常", ex.Message.ToString() + ex.StackTrace.Substring(ex.StackTrace.Length - 40, 40), null, null); } } private void rbDynStaticNoBreakOK_KeyDown(object sender, KeyEventArgs e) { try { //if条件检测按下的是不是Enter键 if (e.KeyCode == Keys.Enter) { btnTrue.Focus(); //MessageBox.Show("您在textBox1里按下了回车键"); } } catch (Exception ex) { logger.Error(String.Format("ErrSource : {0} ErrMsg : {1}", ex.StackTrace.ToString(), ex.Message.ToString())); //insertLogToDBDelegate.BeginInvoke(1, "UpdateUIMethod异常", ex.Message.ToString() + ex.StackTrace.Substring(ex.StackTrace.Length - 40, 40), null, null); } } private void rbLiquidInjeMachOK_KeyDown(object sender, KeyEventArgs e) { try { //if条件检测按下的是不是Enter键 if (e.KeyCode == Keys.Enter) { btnTrue.Focus(); //MessageBox.Show("您在textBox1里按下了回车键"); } } catch (Exception ex) { logger.Error(String.Format("ErrSource : {0} ErrMsg : {1}", ex.StackTrace.ToString(), ex.Message.ToString())); //insertLogToDBDelegate.BeginInvoke(1, "UpdateUIMethod异常", ex.Message.ToString() + ex.StackTrace.Substring(ex.StackTrace.Length - 40, 40), null, null); } } #endregion private void rbPartCountOK_KeyDown(object sender, KeyEventArgs e) { try { //if条件检测按下的是不是Enter键 if (e.KeyCode == Keys.Enter) { btnTrue.Focus(); //MessageBox.Show("您在textBox1里按下了回车键"); } } catch (Exception ex) { logger.Error(String.Format("ErrSource : {0} ErrMsg : {1}", ex.StackTrace.ToString(), ex.Message.ToString())); //insertLogToDBDelegate.BeginInvoke(1, "UpdateUIMethod异常", ex.Message.ToString() + ex.StackTrace.Substring(ex.StackTrace.Length - 40, 40), null, null); } } /// /// 更新或者插入数据 /// private void UpdateOrInsert(string MachineName, string AttributeName, string AttributeValue) { var Data = FSqlContext.FDb.Select().Where(a => a.MachineName == MachineName && a.AttributeName == AttributeName).OrderByDescending(a => a.CreateTime).ToList(); if (Data != null && Data.Count > 0) { FSqlContext.FDb.Update() .Set(a => a.AttributeValue, AttributeValue) .Where(a => a.MachineName == MachineName && a.AttributeName == AttributeName) .ExecuteAffrows(); } else { FSqlContext.FDb.Insert(new LastStateInfo() { AttributeName = AttributeName, MachineName = MachineName, AttributeValue = AttributeValue }).ExecuteAffrows(); } } private void Main_FormClosed(object sender, FormClosedEventArgs e) { ThreadEnable = false; // 断开连接 _MelsecMcNet?.ConnectClose(); } private void btnLVGapDelete_Click(object sender, EventArgs e) { if (LvGap.SelectedIndices != null && LvGap.SelectedIndices.Count > 0 && SelectedGapData != null) { var findata = ListGapData.Find(a => a.TimeId == SelectedGapData.TimeId); if (findata != null) { ListGapData.Remove(findata); SelectedGapData = null; LvGap.Items.RemoveAt(LvGap.SelectedItems[0].Index); //LvGap.Update(); } } else { MessageBox.Show("请选中后再操作!", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); } } private void button1_Click(object sender, EventArgs e) { ReceiveMeterDataMethod("+00.0000,+00.0000,+00.0000, ,+00.0000, , , , OK, -OK, -OK, -OK, OK, -OK, OK, OK, OK,01,098,2024-08-23,16:12:47"); } private void btnMove_Click(object sender, EventArgs e) { if (!string.IsNullOrEmpty(txtOtherGapGroup.Text.Trim())) { //不为空时方式多次Move,把数据都移除完了并删除了,理论上来说,一个产品只能移动一个 if (DialogResult.Cancel == MessageBox.Show("检测到当前【间隙信息】已经存在,是否还要继续?点击【确定】则继续,点击【取消】则中止", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning)) { return; } } if (LvGap.Items.Count > 0) { txtOtherGapGroup.Text = LvGap.Items[0].SubItems[3].Text; txtOtherGapValue.Text = LvGap.Items[0].SubItems[1].Text; //txtOtherResult.Text=LvGap.Items[0].SubItems[2].Text; CurGapData.Group = LvGap.Items[0].SubItems[3].Text; CurGapData.Gap = LvGap.Items[0].SubItems[1].Text; CurGapData.Result = LvGap.Items[0].SubItems[2].Text; var findata = ListGapData.Find(a => a.TimeId == LvGap.Items[0].SubItems[4].Text); if (findata != null) { ListGapData.Remove(findata); LvGap.Items.RemoveAt(LvGap.Items[0].Index); //LvGap.Update(); } } else { MessageBox.Show("没有检测的间隙数据?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); } } private void txtOtherDynDisk_KeyDown(object sender, KeyEventArgs e) { try { //if条件检测按下的是不是Enter键 if (e.KeyCode == Keys.Enter) { txtOtherEuro.Focus(); //MessageBox.Show("您在textBox1里按下了回车键"); } } catch (Exception ex) { logger.Error(String.Format("ErrSource : {0} ErrMsg : {1}", ex.StackTrace.ToString(), ex.Message.ToString())); //insertLogToDBDelegate.BeginInvoke(1, "UpdateUIMethod异常", ex.Message.ToString() + ex.StackTrace.Substring(ex.StackTrace.Length - 40, 40), null, null); } } private void txtOtherEuro_KeyDown(object sender, KeyEventArgs e) { try { //if条件检测按下的是不是Enter键 if (e.KeyCode == Keys.Enter) { txtOtherBracket.Focus(); //MessageBox.Show("您在textBox1里按下了回车键"); } } catch (Exception ex) { logger.Error(String.Format("ErrSource : {0} ErrMsg : {1}", ex.StackTrace.ToString(), ex.Message.ToString())); //insertLogToDBDelegate.BeginInvoke(1, "UpdateUIMethod异常", ex.Message.ToString() + ex.StackTrace.Substring(ex.StackTrace.Length - 40, 40), null, null); } } private void txtOtherBracket_KeyDown(object sender, KeyEventArgs e) { try { //if条件检测按下的是不是Enter键 if (e.KeyCode == Keys.Enter) { btnTrue.Focus(); //MessageBox.Show("您在textBox1里按下了回车键"); } } catch (Exception ex) { logger.Error(String.Format("ErrSource : {0} ErrMsg : {1}", ex.StackTrace.ToString(), ex.Message.ToString())); //insertLogToDBDelegate.BeginInvoke(1, "UpdateUIMethod异常", ex.Message.ToString() + ex.StackTrace.Substring(ex.StackTrace.Length - 40, 40), null, null); } } private void btnOtherDelete_Click(object sender, EventArgs e) { txtOtherGapGroup.Text = ""; txtOtherGapValue.Text = ""; } private void txtExhCoveBatch_KeyDown(object sender, KeyEventArgs e) { //LocationInfo try { //if条件检测按下的是不是Enter键 if (e.KeyCode == Keys.Enter) { btnTrue.Focus(); //MessageBox.Show("您在textBox1里按下了回车键"); } } catch (Exception ex) { logger.Error(String.Format("ErrSource : {0} ErrMsg : {1}", ex.StackTrace.ToString(), ex.Message.ToString())); //insertLogToDBDelegate.BeginInvoke(1, "UpdateUIMethod异常", ex.Message.ToString() + ex.StackTrace.Substring(ex.StackTrace.Length - 40, 40), null, null); } } private void cbxDefaultOK_CheckStateChanged(object sender, EventArgs e) { } private void txtEuroSeriesNo_Enter(object sender, EventArgs e) { txtEuroSeriesNo.BackColor = Color.SkyBlue; } private void txtEuroSeriesNo_Leave(object sender, EventArgs e) { txtEuroSeriesNo.BackColor=SystemColors.Window; } private void txtStaticDiskNoW_Enter(object sender, EventArgs e) { txtStaticDiskNoW.BackColor = Color.SkyBlue; } private void txtStaticDiskNoW_Leave(object sender, EventArgs e) { txtStaticDiskNoW.BackColor = SystemColors.Window; } private void txtCylinderNo_Enter(object sender, EventArgs e) { txtCylinderNo.BackColor = Color.SkyBlue; } private void txtCylinderNo_Leave(object sender, EventArgs e) { txtCylinderNo.BackColor = SystemColors.Window; } private void txtEuroCastNo_Enter(object sender, EventArgs e) { txtEuroCastNo.BackColor = Color.SkyBlue; } private void txtEuroCastNo_Leave(object sender, EventArgs e) { txtEuroCastNo.BackColor = SystemColors.Window; } private void txtStaticDiskCastNo_Enter(object sender, EventArgs e) { txtStaticDiskCastNo.BackColor = Color.SkyBlue; } private void txtStaticDiskCastNo_Leave(object sender, EventArgs e) { txtStaticDiskCastNo.BackColor = SystemColors.Window; } private void txtExhCoveBatch_Enter(object sender, EventArgs e) { txtExhCoveBatch.BackColor = Color.SkyBlue; } private void txtExhCoveBatch_Leave(object sender, EventArgs e) { txtExhCoveBatch.BackColor = SystemColors.Window; } } }