bug
lu
6 天以前 acf9d7b001514b3586166cbd0609e9d836ada792
DevApp/Gs.DevApp/XtraForm1.cs
@@ -1,17 +1,10 @@
using DevExpress.XtraEditors;
using DevExpress.XtraTreeList;
using Gs.DevApp.Entity;
using Gs.DevApp.ToolBox;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using NModbus;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.IO;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Gs.DevApp
{
@@ -20,66 +13,114 @@
        public XtraForm1()
        {
            InitializeComponent();
            tlMenu.ContextMenuStrip = contextMenuStrip1;
            getTree();
        }
        /// <summary>
        ///     读取列表
        /// </summary>
        private void getTree()
        private void simpleButton2_Click(object sender, EventArgs e)
        {
            var pgq = new PageQueryModel(1, 999999, "a.type_memo");
            var json = JsonConvert.SerializeObject(pgq);
            try
            string strCsl1 = "";
            string strSw1 = "";
            string strCsl2 = "";
            string strSw2 = "";
            string strCsl3 = "";
            string strSw3 = "";
            string strCsl4 = "";
            string strSw4 = "";
            string strCsl5 = "";
            string strSw5 = "";
            string SJJG = "";
            try//水检取数,后面补充
            {
                var strReturn =
                    UtilityHelper.HttpPost("", "MesDefectTypeManager/GetListPage", json);
                var dd = UtilityHelper.ReturnToTablePage(strReturn);
                var dt = dd.rtnData.list;
                tlMenu.DataSource = dt;
                tlMenu.KeyFieldName = "guid";
                tlMenu.ParentFieldName = "upGuid";
                tlMenu.Tag = "typeMemo";
                tlMenu.EndUpdate();
                this.tlMenu.CollapseAll();
                tlMenu.OptionsBehavior.Editable = true;
                tlMenu.OptionsBehavior.AllowRecursiveNodeChecking = false;
                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;
                master.Transport.Retries = 10000;
                //参数(分别为从站地址,起始地址,长度)
                byte slaveAddress = byte.Parse(txt_slaveAddress.SelectedText.Trim());
                ushort numberOfPoints = ushort.Parse("1");
                float fsw = 0;
                //模式1出水量
                ushort[] csl1 = master.ReadHoldingRegisters(slaveAddress, ushort.Parse(32.ToString()), numberOfPoints);
                strCsl1 = csl1[0].ToString();
                sbFj.Append("模式1出水量:" + 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);
                //模式2出水量
                ushort[] csl2 = master.ReadHoldingRegisters(slaveAddress, ushort.Parse(34.ToString()), numberOfPoints);
                strCsl2 = csl2[0].ToString();
                sbFj.Append("模式2出水量:" + 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);
                //模式3出水量
                ushort[] csl3 = master.ReadHoldingRegisters(slaveAddress, ushort.Parse(36.ToString()), numberOfPoints);
                strCsl3 = csl3[0].ToString();
                sbFj.Append("模式3出水量:" + 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);
                //模式4出水量
                ushort[] csl4 = master.ReadHoldingRegisters(slaveAddress, ushort.Parse(38.ToString()), numberOfPoints);
                strCsl4 = csl4[0].ToString();
                sbFj.Append("模式4出水量:" + 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);
                //模式5出水量
                ushort[] csl5 = master.ReadHoldingRegisters(slaveAddress, ushort.Parse(40.ToString()), numberOfPoints);
                strCsl5 = csl5[0].ToString();
                sbFj.Append("模式5出水量:" + 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);
                //结果
                bool[] sjjg = master.ReadCoils(slaveAddress, ushort.Parse(77.ToString()), numberOfPoints);
                SJJG = sjjg[0].ToString();
                sbFj.Append("结果:" + 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}");
                }
            }
            catch (Exception ex)
            {
                MsgHelper.Warning("提示:" + ex.Message);
            }
        }
        private void tlMenu_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                var hitInfo = tlMenu.CalcHitInfo(new Point(e.X, e.Y));
                if (hitInfo.HitInfoType == HitInfoType.Cell)
                {
                    tlMenu.FocusedNode = hitInfo.Node;
                   contextMenuStrip1.Show(tlMenu, e.Location);
                }
            }
        }
        private void toolStripMenuItem1_Click(object sender, EventArgs e)
        {
            if (tlMenu.FocusedNode != null)
            {
                // 删除节点的逻辑
                tlMenu.DeleteNode(tlMenu.FocusedNode);
            }
        }
        private void toolStripMenuItem2_Click(object sender, EventArgs e)
        {
            if (tlMenu.FocusedNode != null)
            {
                // 修改节点的逻辑,例如更改节点值
                tlMenu.FocusedNode.SetValue("列名", "新值"); // 替换"列名"和"新值"为实际列名和值
                //VisiblePanel(txtDQBarCode.EditValue.ToString(), ex.Message, "NG", Color.Yellow);
                //txtGWM.EditValue = "";
                return;
            }
        }
    }