| | |
| | | /// <summary> |
| | | /// EasyModbus TCP客户端实例 |
| | | /// </summary> |
| | | private ModbusClient _modbusClient; |
| | | private ModbusClient? _modbusClient; |
| | | |
| | | /// <summary> |
| | | /// 心跳定时器 - 用于定期发送心跳包 |
| | | /// </summary> |
| | | private System.Timers.Timer _heartbeatTimer; |
| | | private System.Timers.Timer? _heartbeatTimer; |
| | | |
| | | /// <summary> |
| | | /// 数据轮询定时器 - 用于定期读取PLC数据 |
| | | /// </summary> |
| | | private System.Timers.Timer _dataPollingTimer; |
| | | private System.Timers.Timer? _dataPollingTimer; |
| | | |
| | | /// <summary> |
| | | /// 心跳包状态 - 在0和1之间交替 |
| | |
| | | /// <summary> |
| | | /// 连接状态改变事件 |
| | | /// </summary> |
| | | public event EventHandler<bool> ConnectionStatusChanged; |
| | | public event EventHandler<bool>? ConnectionStatusChanged; |
| | | |
| | | /// <summary> |
| | | /// 接收到PLC数据事件 |
| | | /// </summary> |
| | | public event EventHandler<PlcData> DataReceived; |
| | | public event EventHandler<PlcData>? DataReceived; |
| | | |
| | | /// <summary> |
| | | /// 错误发生事件 |
| | | /// </summary> |
| | | public event EventHandler<string> ErrorOccurred; |
| | | public event EventHandler<string>? ErrorOccurred; |
| | | |
| | | #endregion |
| | | |
| | |
| | | // 检查PLC数据是否准备就绪 |
| | | if (controlSignals[1] == 0) // DataOK信号为0表示数据未准备好 |
| | | { |
| | | return null; |
| | | return new PlcData(); // 返回空的PlcData对象而不是null |
| | | } |
| | | |
| | | // 读取产品型号 (10个寄存器) |
| | |
| | | Disconnect(); |
| | | |
| | | // EasyModbus的ModbusClient没有实现IDisposable接口 |
| | | _modbusClient = null; |
| | | // 清理连接引用 |
| | | if (_modbusClient != null) |
| | | { |
| | | _modbusClient = null; |
| | | } |
| | | _cancellationTokenSource?.Dispose(); |
| | | } |
| | | |