Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在easymodbus RTU c中更改从属ID后恢复连接#_C#_Easy Modbus - Fatal编程技术网

C# 在easymodbus RTU c中更改从属ID后恢复连接#

C# 在easymodbus RTU c中更改从属ID后恢复连接#,c#,easy-modbus,C#,Easy Modbus,我试图通过向右侧寄存器写入新值来更改电能表的从属Id。 一旦改变了值,连接就明显丢失了,但我找不到更新的方法。 我无法在不关闭整个应用程序的情况下关闭端口,无法响应modbusClient.Disconnect(); 如何恢复连接并从那里继续 private void button1_Click(object sender, EventArgs e) { try { ModbusClient mo

我试图通过向右侧寄存器写入新值来更改电能表的从属Id。 一旦改变了值,连接就明显丢失了,但我找不到更新的方法。 我无法在不关闭整个应用程序的情况下关闭端口,无法响应modbusClient.Disconnect(); 如何恢复连接并从那里继续

 private void button1_Click(object sender, EventArgs e)
        {

            try
            {
                ModbusClient modbusClient = new ModbusClient(ConnectionSetUp.SetValueForCom);
                modbusClient.UnitIdentifier = byte.Parse(ConnectionSetUp.SetValueForAdress);
                // Not necessary since default baudrate = 9600
                modbusClient.Baudrate = int.Parse(ConnectionSetUp.SetValueForBuad);
                modbusClient.Parity = System.IO.Ports.Parity.None;
                modbusClient.StopBits = System.IO.Ports.StopBits.One;
                modbusClient.ConnectionTimeout = int.Parse(ConnectionSetUp.SetValueDelayTime);
                modbusClient.Connect();

                int Mult = int.Parse(MeterMult.Text);
                int Adress = int.Parse(MeterAdress.Text);
                int Baud = int.Parse(MeterBaud.Text);

                //mult
                modbusClient.WriteMultipleRegisters(4001, new int[1] { Mult });

                //Adress
                modbusClient.WriteMultipleRegisters(4002, new int[1] { Adress });
                ConnectionSetUp.SetValueForAdress = string.Format("{0}", Adress);

                modbusClient.Disconnect();
                
                modbusClient.Disconnect();
            }
            catch (Exception ex)
            {
                
                MessageBox.Show(this, ex.Message, "bad settings",
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
            }


在不知道它是什么设备的情况下,很难回答这个问题,可能该设备需要重新启动/电源循环,然后才能识别从属ID的更改。您还可以改进应用程序,因为您关闭了一个端口,所以关闭应用程序是没有意义的。至于为什么断开连接不起作用,正如您所说,您已更改了从机ID,因此如果连接设置(从机ID)已从原始初始连接更改,则可能无法断开连接。

亲爱的朋友,谢谢您的回答。设备ID确实发生了更改,但我的问题是如何在更改后恢复连接或关闭端口?港口一直很忙,我关不上。