我EasyModbus Nuget
在C#窗口表单应用程序中使用。我正在尝试使用RTU(实时更新)来获取更改的保持寄存器的地址值ModbusServer
。
下面的代码连接到服务器。
void Connect() {
ModbusClient client = null;
client = new ModbusClient("IP Address", 502);
client.Connect();
}
Run Code Online (Sandbox Code Playgroud)
下面的代码获取保持寄存器下面给出的地址值。
client.ReadHoldingRegisters(10001, 1);
Run Code Online (Sandbox Code Playgroud)
到目前为止,一切正常。
我正在阅读有关在EasyModbus中阅读实时更新的信息。我发现此链接可以将保持寄存器的更改后的值自动发送到偶数处理程序。
现在,我有以下代码:
void Connect() {
ModbusServer ser = new ModbusServer();
ser.Port = Convert.ToInt32(Settings.Default.Port);
ser.Listen();
ser.HoldingRegistersChanged += Ser_HoldingRegistersChanged;
ModbusClient client = null;
client = new ModbusClient("IP Address", 502);
client.Connect();
}
private void Ser_HoldingRegistersChanged(int register, int numberOfRegisters)
{
}
Run Code Online (Sandbox Code Playgroud)
运行它时,出现以下错误。
通常,每个套接字地址(协议/网络地址/端口)只能使用一种
发生此错误是因为我添加了ModbusServer代码。
您能否说明为什么会这样?