csharp
public event Action<string>? OnLogMessage;
public event Action<bool>? OnAutoRunCompleted;
_modbusClient.OnLogMessage += LogMessage;
_modbusClient.OnDeviceStatusChanged += OnModbusDeviceStatusChanged;
//------直接调用
//_plcModbusClient.OnLogMessage += (msg) => LogMessage($"[PLC串口] {msg}");
//_plcModbusClient.OnDeviceStatusChanged += (addr, online) =>
//{
// LogMessage($"PLC设备 {addr} 状态: {(online ? "在线" : "离线")}");
// };
private void LogMessage(string message)
{
if (txtLog.InvokeRequired)
{
txtLog.Invoke(new Action<string>(LogMessage), message);
return;
}
txtLog.AppendText($"[{DateTime.Now:HH:mm:ss}] {message}\r\n");
txtLog.ScrollToCaret();
}
private void OnModbusDeviceStatusChanged(byte address, bool isOnline)
{
if (InvokeRequired)
{
Invoke(new Action(() => OnModbusDeviceStatusChanged(address, isOnline)));
return;
}
LogMessage($"Modbus设备 {address} 状态: {(isOnline ? "在线" : "离线")}");
}