怎么获取有没有写入成功呢
时间: 2025-08-16 20:21:25 浏览: 0
### 3.1 反馈值的获取方式
在调用 `public void WriteSingleRegister` 方法后,若需确认写入是否成功,应通过一个公开的方法来访问类内部维护的状态标识。通常,该方法会更新一个字典结构 `_deviceStatus`,其中保存了设备名称与操作结果之间的映射关系[^1]。
为获取反馈值并判断写入是否成功,可提供如下公共方法:
```csharp
public bool GetDeviceStatus(string name)
{
if (_deviceStatus.ContainsKey(name))
{
return _deviceStatus[name];
}
return false;
}
```
此方法用于查询指定设备名称的操作状态,若返回值为 `true`,表示写入成功;否则表示失败。
### 3.2 调用示例与状态判断
调用 `WriteSingleRegister` 并获取反馈值的过程如下所示:
```csharp
string deviceName = "ModbusDevice01";
ushort registerAddress = 0x0001;
ushort registerValue = 0xABCD;
try
{
WriteSingleRegister(deviceName, registerAddress, registerValue);
// 获取反馈值
bool status = GetDeviceStatus(deviceName);
if (status)
{
Console.WriteLine("写入成功");
}
else
{
Console.WriteLine("写入失败");
}
}
catch (Exception ex)
{
Console.WriteLine($"发生异常: {ex.Message}");
}
```
上述代码展示了如何在调用 `WriteSingleRegister` 后使用 `GetDeviceStatus` 方法获取反馈值,并据此判断写入是否成功。需要注意的是,`_deviceStatus` 字典中可能不存在目标设备名称的情况,因此需要进行键存在性检查以避免运行时错误[^1]。
### 3.3 增强反馈机制的方式
除了直接查询 `_deviceStatus` 外,还可以通过事件机制或日志记录系统增强反馈能力。例如,在每次写入操作完成后触发一个事件,将设备状态广播给其他模块处理,从而实现更灵活的状态反馈机制。
定义事件及触发逻辑如下:
```csharp
public event EventHandler<DeviceStatusEventArgs> DeviceStatusUpdated;
private void OnDeviceStatusUpdated(string name, bool status)
{
DeviceStatusUpdated?.Invoke(this, new DeviceStatusEventArgs(name, status));
}
// 在 WriteSingleRegister 方法末尾添加事件触发逻辑
OnDeviceStatusUpdated(name, _deviceStatus[name]);
```
这种方式允许多个监听者同时响应设备状态变化,从而提升系统的可观测性和扩展性。
---
阅读全文
相关推荐



















