已回答 在easymodbus RTU c#中更改从站ID后恢复连接

谢伊阿维塔尔

新成员
已加入
2020年10月9日
留言内容
2
编程经验
Beginner
我试图通过向右寄存器写入新值来更改电表的从属ID。一旦更改了值,连接显然会丢失,但我找不到更新它的方法。我不能在不关闭我的整个应用程序的情况下关闭端口,对modbusClient.Disconnect()没有响应。我该如何恢复连接并从那里继续?

C#:
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);
            }
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,933
地点
英国
编程经验
10+
嗯,是否可以使用ModbusClient ID?也许尝试在using语句中包装客户。我没有使用ModbusClient的经验,但是我想去开发商那里寻求支持可能比第三方论坛更好。
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,933
地点
英国
编程经验
10+
如果可以使用using语句,这似乎是合乎逻辑的,因为与客户端进行管道连接的端口将在处置连接时放弃该端口在该端口上的保留;提供给客户的是一次性物品。您是否尝试过联系开发人员或查阅其文档?
 
最佳 底部