111
啊鑫
2025-08-01 cd32500504c97874c8fc0f8ceb1ac58f3cb37b01
ModbusManager.cs
@@ -76,17 +76,17 @@
        /// <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之间交替
@@ -110,17 +110,17 @@
        /// <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
@@ -340,7 +340,7 @@
                // 检查PLC数据是否准备就绪
                if (controlSignals[1] == 0) // DataOK信号为0表示数据未准备好
                {
                    return null;
                    return new PlcData(); // 返回空的PlcData对象而不是null
                }
                // 读取产品型号 (10个寄存器)
@@ -554,7 +554,11 @@
            Disconnect();
            
            // EasyModbus的ModbusClient没有实现IDisposable接口
            _modbusClient = null;
            // 清理连接引用
            if (_modbusClient != null)
            {
                _modbusClient = null;
            }
            _cancellationTokenSource?.Dispose();
        }