lu
3 天以前 2a8101df33b73bb41192f0a9ec60d2e4df3c65ff
水检调试正常
已修改3个文件
296 ■■■■ 文件已修改
DevApp/Gs.DevApp/Program.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DevApp/Gs.DevApp/XtraForm1.Designer.cs 85 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DevApp/Gs.DevApp/XtraForm1.cs 207 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DevApp/Gs.DevApp/Program.cs
@@ -40,8 +40,8 @@
        /// </summary>
        private static void _startLogin()
        {
            //Application.Run(new Gs.DevApp.XtraForm1());
            //return;
            Application.Run(new Gs.DevApp.XtraForm1());
            return;
            CefSettings settings = new CefSettings();
            settings.Locale = "zh-CN";
            Cef.Initialize(settings);
DevApp/Gs.DevApp/XtraForm1.Designer.cs
@@ -34,13 +34,20 @@
            this.labelControl1 = new DevExpress.XtraEditors.LabelControl();
            this.label1 = new System.Windows.Forms.Label();
            this.txt_slaveAddress = new DevExpress.XtraEditors.ComboBoxEdit();
            this.panelControl1 = new DevExpress.XtraEditors.PanelControl();
            this.txtGWM = new DevExpress.XtraEditors.TextEdit();
            this.labelControl2 = new DevExpress.XtraEditors.LabelControl();
            this.simpleButton1 = new DevExpress.XtraEditors.SimpleButton();
            ((System.ComponentModel.ISupportInitialize)(this.txtGs.Properties)).BeginInit();
            ((System.ComponentModel.ISupportInitialize)(this.txt_slaveAddress.Properties)).BeginInit();
            ((System.ComponentModel.ISupportInitialize)(this.panelControl1)).BeginInit();
            this.panelControl1.SuspendLayout();
            ((System.ComponentModel.ISupportInitialize)(this.txtGWM.Properties)).BeginInit();
            this.SuspendLayout();
            // 
            // simpleButton2
            // 
            this.simpleButton2.Location = new System.Drawing.Point(313, 34);
            this.simpleButton2.Location = new System.Drawing.Point(447, 29);
            this.simpleButton2.Name = "simpleButton2";
            this.simpleButton2.Size = new System.Drawing.Size(201, 29);
            this.simpleButton2.TabIndex = 1;
@@ -49,39 +56,40 @@
            // 
            // richTextBox1
            // 
            this.richTextBox1.Location = new System.Drawing.Point(57, 74);
            this.richTextBox1.Dock = System.Windows.Forms.DockStyle.Fill;
            this.richTextBox1.Location = new System.Drawing.Point(0, 120);
            this.richTextBox1.Name = "richTextBox1";
            this.richTextBox1.Size = new System.Drawing.Size(740, 377);
            this.richTextBox1.Size = new System.Drawing.Size(887, 539);
            this.richTextBox1.TabIndex = 2;
            this.richTextBox1.Text = "";
            // 
            // txtGs
            // 
            this.txtGs.Location = new System.Drawing.Point(153, 37);
            this.txtGs.Location = new System.Drawing.Point(250, 44);
            this.txtGs.Name = "txtGs";
            this.txtGs.Size = new System.Drawing.Size(125, 24);
            this.txtGs.TabIndex = 3;
            // 
            // labelControl1
            // 
            this.labelControl1.Location = new System.Drawing.Point(57, 40);
            this.labelControl1.Location = new System.Drawing.Point(9, 40);
            this.labelControl1.Name = "labelControl1";
            this.labelControl1.Size = new System.Drawing.Size(90, 18);
            this.labelControl1.Size = new System.Drawing.Size(135, 18);
            this.labelControl1.TabIndex = 4;
            this.labelControl1.Text = "寄存器个数:";
            this.labelControl1.Text = "每次读取的点号数量";
            // 
            // label1
            // 
            this.label1.AutoSize = true;
            this.label1.Location = new System.Drawing.Point(57, 13);
            this.label1.Location = new System.Drawing.Point(9, 13);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(68, 18);
            this.label1.Size = new System.Drawing.Size(218, 18);
            this.label1.TabIndex = 5;
            this.label1.Text = "水检地址";
            this.label1.Text = "水检地址slaveAddress 从机地址";
            // 
            // txt_slaveAddress
            // 
            this.txt_slaveAddress.Location = new System.Drawing.Point(153, 5);
            this.txt_slaveAddress.Location = new System.Drawing.Point(250, 7);
            this.txt_slaveAddress.Name = "txt_slaveAddress";
            this.txt_slaveAddress.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
            new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
@@ -101,23 +109,62 @@
            this.txt_slaveAddress.Size = new System.Drawing.Size(125, 24);
            this.txt_slaveAddress.TabIndex = 6;
            // 
            // panelControl1
            //
            this.panelControl1.Controls.Add(this.simpleButton1);
            this.panelControl1.Controls.Add(this.labelControl2);
            this.panelControl1.Controls.Add(this.txtGWM);
            this.panelControl1.Controls.Add(this.txtGs);
            this.panelControl1.Controls.Add(this.txt_slaveAddress);
            this.panelControl1.Controls.Add(this.simpleButton2);
            this.panelControl1.Controls.Add(this.label1);
            this.panelControl1.Controls.Add(this.labelControl1);
            this.panelControl1.Dock = System.Windows.Forms.DockStyle.Top;
            this.panelControl1.Location = new System.Drawing.Point(0, 0);
            this.panelControl1.Name = "panelControl1";
            this.panelControl1.Size = new System.Drawing.Size(887, 120);
            this.panelControl1.TabIndex = 7;
            //
            // txtGWM
            //
            this.txtGWM.Location = new System.Drawing.Point(250, 81);
            this.txtGWM.Name = "txtGWM";
            this.txtGWM.Size = new System.Drawing.Size(183, 24);
            this.txtGWM.TabIndex = 7;
            //
            // labelControl2
            //
            this.labelControl2.Location = new System.Drawing.Point(30, 82);
            this.labelControl2.Name = "labelControl2";
            this.labelControl2.Size = new System.Drawing.Size(45, 18);
            this.labelControl2.TabIndex = 8;
            this.labelControl2.Text = "工位码";
            //
            // simpleButton1
            //
            this.simpleButton1.Location = new System.Drawing.Point(523, 84);
            this.simpleButton1.Name = "simpleButton1";
            this.simpleButton1.Size = new System.Drawing.Size(94, 29);
            this.simpleButton1.TabIndex = 9;
            this.simpleButton1.Text = "确定读取";
            this.simpleButton1.Click += new System.EventHandler(this.simpleButton1_Click);
            //
            // XtraForm1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 18F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(887, 659);
            this.Controls.Add(this.txt_slaveAddress);
            this.Controls.Add(this.label1);
            this.Controls.Add(this.labelControl1);
            this.Controls.Add(this.txtGs);
            this.Controls.Add(this.richTextBox1);
            this.Controls.Add(this.simpleButton2);
            this.Controls.Add(this.panelControl1);
            this.Name = "XtraForm1";
            this.Text = "XtraForm1";
            ((System.ComponentModel.ISupportInitialize)(this.txtGs.Properties)).EndInit();
            ((System.ComponentModel.ISupportInitialize)(this.txt_slaveAddress.Properties)).EndInit();
            ((System.ComponentModel.ISupportInitialize)(this.panelControl1)).EndInit();
            this.panelControl1.ResumeLayout(false);
            this.panelControl1.PerformLayout();
            ((System.ComponentModel.ISupportInitialize)(this.txtGWM.Properties)).EndInit();
            this.ResumeLayout(false);
            this.PerformLayout();
        }
@@ -128,5 +175,9 @@
        private DevExpress.XtraEditors.LabelControl labelControl1;
        private System.Windows.Forms.Label label1;
        private DevExpress.XtraEditors.ComboBoxEdit txt_slaveAddress;
        private DevExpress.XtraEditors.PanelControl panelControl1;
        private DevExpress.XtraEditors.LabelControl labelControl2;
        private DevExpress.XtraEditors.TextEdit txtGWM;
        private DevExpress.XtraEditors.SimpleButton simpleButton1;
    }
}
DevApp/Gs.DevApp/XtraForm1.cs
@@ -1,15 +1,25 @@
using Newtonsoft.Json.Linq;
using DevExpress.XtraEditors;
using Newtonsoft.Json.Linq;
using NModbus;
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.IO;
using System.Net.Sockets;
using System.Text;
using System.Windows.Forms;
namespace Gs.DevApp
{
    public partial class XtraForm1 : DevExpress.XtraEditors.XtraForm
    {
        string hostname = "192.168.60.51";
        private string strCsl1 = "";
        private string strSw1 = "";
        private string SJJG = "";
        private string GWZT = "";
        private string SJJGZ = "";
        public XtraForm1()
        {
            InitializeComponent();
@@ -34,7 +44,7 @@
                System.Text.StringBuilder stringBuilder = new System.Text.StringBuilder();
                System.Text.StringBuilder sbFj = new System.Text.StringBuilder();
                string hx = "\r\n";
                string hostname = "192.168.60.51";
                ModbusFactory modbusFactory = new ModbusFactory();
                IModbusMaster master = modbusFactory.CreateMaster(new TcpClient(hostname, 502));
                master.Transport.ReadTimeout = 10000;
@@ -42,79 +52,92 @@
                //参数(分别为从站地址,起始地址,长度)
                byte slaveAddress = byte.Parse(txt_slaveAddress.SelectedText.Trim());
                ushort numberOfPoints = ushort.Parse("1");
                float fsw = 0;
                ushort numberOfPoints = ushort.Parse(txtGs.Text.Trim());
                // 设置读取的起始地址和数量
                //ushort startAddress = 300;
                //ushort numberOfPoints = 20; // 读取300-320共计21个寄存器的值
                float fsw = 0;
                /*
                  slaveAddress: 从站设备的 Modbus 地址(通常为 1~247)
                   起始寄存器地址
                 numberOfPoints要读取的寄存器数量(连续读取)
                返回类型为 ushort[] 数组,slaveAddress 从机地址,也就是plc的设备id,startAddress 读取起始地址,numberOfPoints 这个是重点,这个参数决定每次读取的点号数量。写1的话表示每次读取一个点号。
                 */
                //模式1出水量
                ushort[] csl1 = master.ReadHoldingRegisters(slaveAddress, ushort.Parse(32.ToString()), numberOfPoints);
                strCsl1 = csl1[0].ToString();
                sbFj.Append("模式1出水量:" + strCsl1 + hx);
                sbFj.Append("模式1出水量:" + gets(csl1) + "-->" + strCsl1 + hx);
                //模式1水温
                ushort[] sw1 = master.ReadHoldingRegisters(slaveAddress, ushort.Parse(31.ToString()), numberOfPoints);
                strSw1 = (float.Parse(sw1[0].ToString()) / 10).ToString();
                sbFj.Append("模式1水温:" + strSw1 + hx);
                sbFj.Append("模式1水温:" + gets(sw1) + "-->" + strSw1 + hx);
                //模式2出水量
                ushort[] csl2 = master.ReadHoldingRegisters(slaveAddress, ushort.Parse(34.ToString()), numberOfPoints);
                strCsl2 = csl2[0].ToString();
                sbFj.Append("模式2出水量:" + strCsl2 + hx);
                sbFj.Append("模式2出水量:" + gets(csl2) + "-->" + strCsl2 + hx);
                //模式2水温
                ushort[] sw2 = master.ReadHoldingRegisters(slaveAddress, ushort.Parse(33.ToString()), numberOfPoints);
                strSw2 = (float.Parse(sw2[0].ToString()) / 10).ToString();
                sbFj.Append("模式2水温:" + strSw2 + hx);
                sbFj.Append("模式2水温:" + gets(sw2) + "-->" + strSw2 + hx);
                //模式3出水量
                ushort[] csl3 = master.ReadHoldingRegisters(slaveAddress, ushort.Parse(36.ToString()), numberOfPoints);
                strCsl3 = csl3[0].ToString();
                sbFj.Append("模式3出水量:" + strCsl3 + hx);
                sbFj.Append("模式2水温:" + gets(csl3) + "-->" + strCsl3 + hx);
                //模式3水温
                ushort[] sw3 = master.ReadHoldingRegisters(slaveAddress, ushort.Parse(35.ToString()), numberOfPoints);
                strSw3 = (float.Parse(sw3[0].ToString()) / 10).ToString();
                sbFj.Append("模式3水温:" + strSw3 + hx);
                sbFj.Append("模式3水温:" + gets(sw3) + "-->" + strSw3 + hx);
                //模式4出水量
                ushort[] csl4 = master.ReadHoldingRegisters(slaveAddress, ushort.Parse(38.ToString()), numberOfPoints);
                strCsl4 = csl4[0].ToString();
                sbFj.Append("模式4出水量:" + strCsl4 + hx);
                sbFj.Append("模式4出水量:" + gets(csl4) + "-->" + strCsl4 + hx);
                //模式4水温
                ushort[] sw4 = master.ReadHoldingRegisters(slaveAddress, ushort.Parse(37.ToString()), numberOfPoints);
                strSw4 = (float.Parse(sw4[0].ToString()) / 10).ToString();
                sbFj.Append("模式4水温:" + strSw4 + hx);
                sbFj.Append("模式4水温:" + gets(sw4) + "-->" + strSw4 + hx);
                //模式5出水量
                ushort[] csl5 = master.ReadHoldingRegisters(slaveAddress, ushort.Parse(40.ToString()), numberOfPoints);
                strCsl5 = csl5[0].ToString();
                sbFj.Append("模式5出水量:" + strCsl5 + hx);
                sbFj.Append("模式5出水量:" + gets(csl5) + "-->" + strCsl5 + hx);
                //模式5水温
                ushort[] sw5 = master.ReadHoldingRegisters(slaveAddress, ushort.Parse(39.ToString()), numberOfPoints);
                strSw5 = (float.Parse(sw5[0].ToString()) / 10).ToString();
                sbFj.Append("模式5水温:" + strSw5 + hx);
                sbFj.Append("模式5水温:" + gets(sw5) + "-->" + strSw5 + hx);
                //结果
                bool[] sjjg = master.ReadCoils(slaveAddress, ushort.Parse(77.ToString()), numberOfPoints);
                SJJG = sjjg[0].ToString();
                sbFj.Append("结果:" + SJJG + hx);
                sbFj.Append("结果:" + gets(sjjg) + "-->" + SJJG + hx);
                ///////////////////
                // 3. 读取从站设备的寄存器short(无符号短整型)是一种数据类型,用于表示16位无符号整数,其取值范围从0到65,535
                ushort startAddress = 0;   // 寄存器起始地址
                ushort numRegisters = ushort.Parse(txtGs.Text.Trim());  // 读取 10 个寄存器
                try
                {
                    // 读取保持寄存器(从站地址为 1)
                    // 参数(分别为从站地址,起始地址,长度)
                    ushort[] registers = master.ReadHoldingRegisters(1, startAddress, numRegisters);
                    // 输出结果
                    Console.WriteLine("读取到的寄存器值:");
                    stringBuilder.Append("总字节串:");
                    foreach (var register in registers)
                    {
                        Console.WriteLine(register);
                        stringBuilder.Append(register);
                    }
                    stringBuilder.Append(hx + "解析结果:" + hx);
                    stringBuilder.Append(sbFj);
                    richTextBox1.Text = stringBuilder.ToString();
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"读取错误: {ex.Message}");
                }
                // 3. 读取从站设备的寄存器short(无符号短整型)是一种数据类型,用于表示16位无符号整数,其取值范围从0到65,535
                //ushort startAddress = 0;   // 寄存器起始地址
                //ushort numRegisters = ushort.Parse(txtGs.Text.Trim());  // 读取 10 个寄存器
                //try
                //{
                //    // 读取保持寄存器(从站地址为 1)
                //    // 参数(分别为从站地址,起始地址,长度)
                //    ushort[] registers = master.ReadHoldingRegisters(1, startAddress, numRegisters);
                //    // 输出结果
                //    Console.WriteLine("读取到的寄存器值:");
                //    stringBuilder.Append("总字节串:");
                //    foreach (var register in registers)
                //    {
                //        Console.WriteLine(register);
                //        stringBuilder.Append(register);
                //    }
                //    stringBuilder.Append(hx + "解析结果:" + hx);
                //    stringBuilder.Append(sbFj);
                //    richTextBox1.Text = stringBuilder.ToString();
                //}
                //catch (Exception ex)
                //{
                //    Console.WriteLine($"读取错误: {ex.Message}");
                //}
            }
            catch (Exception ex)
            {
@@ -123,5 +146,115 @@
                return;
            }
        }
        private string gets(ushort[] registers)
        {
            System.Text.StringBuilder stringBuilder = new StringBuilder();
            foreach (var register in registers)
            {
                Console.WriteLine(register);
                stringBuilder.Append(register);
            }
            return stringBuilder.ToString();
        }
        private string gets(bool[] registers)
        {
            System.Text.StringBuilder stringBuilder = new StringBuilder();
            foreach (var register in registers)
            {
                Console.WriteLine(register);
                stringBuilder.Append(register);
            }
            return stringBuilder.ToString();
        }
        private void simpleButton1_Click(object sender, EventArgs e)
        {
            DataTable dataTable1 = this.GetDataTable($"select MIG004,MIG005 from BASMIG(nolock) where MIG001='ShuiJianZhanWei01' and MIG003='{((BaseEdit)this.txtGWM).EditValue.ToString()}'", "tmpBASMIG2");
            if (dataTable1 == null || dataTable1.Rows.Count <= 0)
            {
                MessageBox.Show("该水检站位码不存在,请确认!");
                ((BaseEdit)this.txtGWM).EditValue = (object)"";
            }
            else
            {
                ModbusFactory modbusFactory = new ModbusFactory();
                byte num1 = byte.Parse("1");
                ushort num2 = ushort.Parse("1");
                DataTable dataTable2 = GetDataTable(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"), "tmpBASMIG3");
                if (dataTable2 == null || dataTable2.Rows.Count <= 0)
                {
                    MessageBox.Show("水检地址不存在,请确认!");
                    ((BaseEdit)this.txtGWM).EditValue = (object)"";
                }
                else
                {
                    try
                    {
                        IModbusMaster master = modbusFactory.CreateMaster(new TcpClient(this.hostname, 502));
                        master.Transport.ReadTimeout = 10000;
                        master.Transport.Retries = 10000;
                        this.strCsl1 = master.ReadHoldingRegisters(num1, ushort.Parse(dataTable2.Rows[0]["MIG003"].ToString()), num2)[0].ToString();
                        this.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);
                        this.SJJGZ = "";
                        this.SJJGZ = numArray[0].ToString();
                        this.SJJG = numArray[0].ToString();
                        this.SJJG = this.SJJG == "1" ? "OK" : (this.SJJG == "2" ? "NG" : this.SJJG);
                        this.GWZT = master.ReadCoils(num1, ushort.Parse(dataTable2.Rows[3]["MIG003"].ToString()), num2)[0].ToString();
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                        ((BaseEdit)this.txtGWM).EditValue = (object)"";
                        return;
                    }
                    try
                    {
                        // this.manager.ExecuteSQLReturnInt(string.Format($"insert into WOMSJA\r\n                (SJA001,SJA002,SJA003,SJA004,SJA005,SJA006,SJA007,SJA008,SJA009,SJA010,SJA011) \r\n                values(NewID(),'{((BaseEdit)this.txtQAB002).EditValue.ToString()}','{((BaseEdit)this.txtGWM).EditValue.ToString()}',\r\n'{this.strCsl1}','{this.strSw1}','{this.SJJG}','{VSLoginInfo.LoginID}',convert(varchar(20),getdate(),120),'{((BaseEdit)this.txtDAA001).EditValue.ToString()}','{this.GWZT}','{this.SJJGZ}')"));
                    }
                    catch (Exception ex)
                    {
                        // this.VisiblePanel(((BaseEdit)this.txtDQBarCode).EditValue.ToString(), ex.Message, "NG", Color.Yellow);
                        ((BaseEdit)this.txtGWM).EditValue = (object)"";
                        return;
                    }
                    System.Text.StringBuilder stringBuilder = new System.Text.StringBuilder();
                    string hx = "\r\n";
                    stringBuilder.Append("模式1出水量:" + strCsl1 + hx);
                    stringBuilder.Append("模式1水温度:" + strSw1 + hx);
                    stringBuilder.Append("水检结果:" + SJJGZ + hx);
                    stringBuilder.Append("水检结果:" + SJJG + hx);
                    stringBuilder.Append("工位状态:" + GWZT + hx);
                    richTextBox1.Text = stringBuilder.ToString();
                    // this.AddBarCode("已采集");
                }
            }
        }
        private DataTable GetDataTable(string SQLString, string tmpBASMIG2)
        {
            string strConn = "Data Source=192.168.1.146;Initial Catalog=GS_MES;User ID=mesUser;Password =qixi1qaz@WSXmes";
            using (var connection = new SqlConnection(strConn))
            {
                var ds = new DataSet();
                try
                {
                    connection.Open();
                    var command = new SqlDataAdapter(SQLString, connection);
                    command.Fill(ds, tmpBASMIG2);
                }
                catch (SqlException ex)
                {
                    throw new Exception(ex.Message);
                }
                return ds.Tables[0];
            }
        }
    }
}