C# 在easymodbus RTU c中更改从属ID后恢复连接#
我试图通过向右侧寄存器写入新值来更改电能表的从属Id。 一旦改变了值,连接就明显丢失了,但我找不到更新的方法。 我无法在不关闭整个应用程序的情况下关闭端口,无法响应modbusClient.Disconnect(); 如何恢复连接并从那里继续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
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确实发生了更改,但我的问题是如何在更改后恢复连接或关闭端口?港口一直很忙,我关不上。