【发布时间】:2023-03-21 14:43:01
【问题描述】:
关于代码
我在 C# 窗口窗体应用程序中使用 EasyModbus Nuget。我正在尝试使用 ModbusServer 通过 RTU(实时更新)获取更改后的保持寄存器的地址值。
以下代码连接到服务器。
void Connect() {
ModbusClient client = null;
client = new ModbusClient("IP Address", 502);
client.Connect();
}
以下代码获取保存寄存器下面给出的地址值。
client.ReadHoldingRegisters(10001, 1);
到目前为止,一切正常。
我正在阅读有关 EasyModbus 中实时更新的信息。 I found this link that can send the changed value of holding register automatically to the even handler.
现在,我有以下代码:
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)
{
}
当我运行它时,我得到以下错误。
每个套接字地址(协议/网络地址/端口)只能使用一次 通常是允许的
这个错误是因为我添加了 ModbusServer 代码。
您能说明为什么会这样吗?
【问题讨论】:
标签: c# modbus-tcp easy-modbus