cdk
3 天以前 ae28c33700e413d5acf60d1e48bbc9870bdef5a5
DevApp/Gs.DevApp/DevFrm/Work/Frm_Work01.cs
@@ -9,6 +9,7 @@
using NModbus;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Dynamic;
@@ -76,6 +77,14 @@
                    //如果是水检,可以提交了
                    if (txt_gx.Text.Trim() == fGxShouJian)
                    {
                        if (txt_gongWei.Text.Trim().Length <= 0)
                        {
                            Toast vm = new Toast(-1, "~请扫工位码~");
                            vm.Show();
                            this.ActiveControl = this.txt_gongWei;
                            txt_gongWei.Focus();
                            return;
                        }
                        addModel(goodTag);
                    }
                }
@@ -239,6 +248,8 @@
            {
                Toast vm = new Toast(-1, "~请先扫追溯码~");
                vm.Show();
                this.ActiveControl = this.txt_barCode;
                txt_barCode.Focus();
                return;
            }
            dynamic _obj = getObj(_barCode, _checkResult, _badDescription);
@@ -484,52 +495,57 @@
            string SJJG = "";//水检查结果ok、ng
            string GWZT = "";//工位状态
            string SJJGZ = "";//水检查结果1
            System.Text.StringBuilder sbSql1 = new StringBuilder();
            sbSql1.Append($"select MIG004,MIG005 from BASMIG(nolock) where MIG001='ShuiJianZhanWei01' and MIG003='{((BaseEdit)this.txt_gongWei).EditValue.ToString()}'");
            DataTable dataTable1 = this.GetDataTable(sbSql1.ToString(), "tmpBASMIG2");
            if (dataTable1 == null || dataTable1.Rows.Count <= 0)
            bool blIp = true;
            blIp = CheckPort(hostName, hostNamePoint);
            if (blIp)
            {
                ((BaseEdit)this.txt_gongWei).EditValue = (object)"";
                LogHelper.Debug(this.ToString(), txt_gongWei.Text + "该水检站位码不存在,请确认!");
                //Toast vm = new Toast(-1, "该水检站位码不存在,请确认!");
                //vm.Show();
            }
            else
            {
                ModbusFactory modbusFactory = new ModbusFactory();
                byte num1 = byte.Parse("1");
                ushort num2 = ushort.Parse("1");
                System.Text.StringBuilder sbSql2 = new StringBuilder();
                sbSql2.Append(string.Format($"select case when MIG006='D' then MIG003+{dataTable1.Rows[0][0]} else MIG003+{dataTable1.Rows[0][1]} end MIG003,MIG004 from BASMIG(nolock) where MIG001 = 'ShuiJianAddress01' order by MIG005"));
                DataTable dataTable2 = GetDataTable(sbSql2.ToString(), "tmpBASMIG3");
                if (dataTable2 == null || dataTable2.Rows.Count <= 0)
                System.Text.StringBuilder sbSql1 = new StringBuilder();
                sbSql1.Append($"select MIG004,MIG005 from BASMIG(nolock) where MIG001='ShuiJianZhanWei01' and MIG003='{((BaseEdit)this.txt_gongWei).EditValue.ToString()}'");
                DataTable dataTable1 = this.GetDataTable(sbSql1.ToString(), "tmpBASMIG2");
                if (dataTable1 == null || dataTable1.Rows.Count <= 0)
                {
                    ((BaseEdit)this.txt_gongWei).EditValue = (object)"";
                    LogHelper.Debug(this.ToString(), txt_gongWei.Text + "水检地址不存在,请确认!");
                    //Toast vm = new Toast(-1, "水检地址不存在,请确认!");
                    LogHelper.Debug(this.ToString(), txt_gongWei.Text + "该水检站位码不存在,请确认!");
                    //Toast vm = new Toast(-1, "该水检站位码不存在,请确认!");
                    //vm.Show();
                }
                else
                {
                    try
                    {
                        IModbusMaster master = modbusFactory.CreateMaster(new TcpClient(this.hostName, this.hostNamePoint));
                        master.Transport.ReadTimeout = 10000;
                        master.Transport.Retries = 10000;
                        strCsl1 = master.ReadHoldingRegisters(num1, ushort.Parse(dataTable2.Rows[0]["MIG003"].ToString()), num2)[0].ToString();
                        strSw1 = (float.Parse(master.ReadHoldingRegisters(num1, ushort.Parse(dataTable2.Rows[1]["MIG003"].ToString()), num2)[0].ToString()) / 10f).ToString();
                        ushort[] numArray = master.ReadHoldingRegisters(num1, ushort.Parse(dataTable2.Rows[2]["MIG003"].ToString()), num2);
                        SJJGZ = numArray[0].ToString();
                        SJJG = numArray[0].ToString();
                        SJJG = (SJJG == "1" ? "OK" : (SJJG == "2" ? "NG" : SJJG));
                        GWZT = master.ReadCoils(num1, ushort.Parse(dataTable2.Rows[3]["MIG003"].ToString()), num2)[0].ToString();
                    }
                    catch (Exception ex)
                    ModbusFactory modbusFactory = new ModbusFactory();
                    byte num1 = byte.Parse("1");
                    ushort num2 = ushort.Parse("1");
                    System.Text.StringBuilder sbSql2 = new StringBuilder();
                    sbSql2.Append(string.Format($"select case when MIG006='D' then MIG003+{dataTable1.Rows[0][0]} else MIG003+{dataTable1.Rows[0][1]} end MIG003,MIG004 from BASMIG(nolock) where MIG001 = 'ShuiJianAddress01' order by MIG005"));
                    DataTable dataTable2 = GetDataTable(sbSql2.ToString(), "tmpBASMIG3");
                    if (dataTable2 == null || dataTable2.Rows.Count <= 0)
                    {
                        ((BaseEdit)this.txt_gongWei).EditValue = (object)"";
                        LogHelper.Debug(this.ToString(), txt_gongWei.Text + ex.Message);
                        //Toast vm = new Toast(-1, ex.Message);
                        LogHelper.Debug(this.ToString(), txt_gongWei.Text + "水检地址不存在,请确认!");
                        //Toast vm = new Toast(-1, "水检地址不存在,请确认!");
                        //vm.Show();
                    }
                    else
                    {
                        try
                        {
                            IModbusMaster master = modbusFactory.CreateMaster(new TcpClient(this.hostName, this.hostNamePoint));
                            master.Transport.ReadTimeout = 10000;
                            master.Transport.Retries = 10000;
                            strCsl1 = master.ReadHoldingRegisters(num1, ushort.Parse(dataTable2.Rows[0]["MIG003"].ToString()), num2)[0].ToString();
                            strSw1 = (float.Parse(master.ReadHoldingRegisters(num1, ushort.Parse(dataTable2.Rows[1]["MIG003"].ToString()), num2)[0].ToString()) / 10f).ToString();
                            ushort[] numArray = master.ReadHoldingRegisters(num1, ushort.Parse(dataTable2.Rows[2]["MIG003"].ToString()), num2);
                            SJJGZ = numArray[0].ToString();
                            SJJG = numArray[0].ToString();
                            SJJG = (SJJG == "1" ? "OK" : (SJJG == "2" ? "NG" : SJJG));
                            GWZT = master.ReadCoils(num1, ushort.Parse(dataTable2.Rows[3]["MIG003"].ToString()), num2)[0].ToString();
                        }
                        catch (Exception ex)
                        {
                            ((BaseEdit)this.txt_gongWei).EditValue = (object)"";
                            LogHelper.Debug(this.ToString(), txt_gongWei.Text + ex.Message);
                            //Toast vm = new Toast(-1, ex.Message);
                            //vm.Show();
                        }
                    }
                }
            }
@@ -553,6 +569,32 @@
                return ds.Tables[0];
            }
        }
        private bool CheckPort(string host, int port)
        {
            int vanishingSeconds = 3;
            string _vanishingSeconds = ConfigurationManager.AppSettings["AsyncSeconds"];
            if (!string.IsNullOrEmpty(_vanishingSeconds))
                vanishingSeconds = int.Parse(_vanishingSeconds);
            bool isOpen = false;
            try
            {
                using (var client = new TcpClient())
                {
                    var result = client.BeginConnect(host, port, null, null);
                    var success = result.AsyncWaitHandle.WaitOne(TimeSpan.FromSeconds(vanishingSeconds)); // 等待5秒
                    if (success)
                    {
                        isOpen = true;
                    }
                }
            }
            catch (Exception ex)
            {
                LogHelper.Debug(this.ToString(), "CheckPort:" + ex.Message);
            }
            return isOpen;
        }
        #endregion
    }