From cd32500504c97874c8fc0f8ceb1ac58f3cb37b01 Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期五, 01 八月 2025 15:26:35 +0800
Subject: [PATCH] 111
---
UniversalModbusManager.cs | 12 +++++++-----
config/ModbusDataParser.cs | 10 +++++-----
ModbusManager.cs | 20 ++++++++++++--------
3 files changed, 24 insertions(+), 18 deletions(-)
diff --git a/ModbusManager.cs b/ModbusManager.cs
index e862353..9175333 100644
--- a/ModbusManager.cs
+++ b/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>
/// 鎺ユ敹鍒癙LC鏁版嵁浜嬩欢
/// </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 @@
// 妫�鏌LC鏁版嵁鏄惁鍑嗗灏辩华
if (controlSignals[1] == 0) // DataOK淇″彿涓�0琛ㄧず鏁版嵁鏈噯澶囧ソ
{
- return null;
+ return new PlcData(); // 杩斿洖绌虹殑PlcData瀵硅薄鑰屼笉鏄痭ull
}
// 璇诲彇浜у搧鍨嬪彿 (10涓瘎瀛樺櫒)
@@ -554,7 +554,11 @@
Disconnect();
// EasyModbus鐨凪odbusClient娌℃湁瀹炵幇IDisposable鎺ュ彛
- _modbusClient = null;
+ // 娓呯悊杩炴帴寮曠敤
+ if (_modbusClient != null)
+ {
+ _modbusClient = null;
+ }
_cancellationTokenSource?.Dispose();
}
diff --git a/UniversalModbusManager.cs b/UniversalModbusManager.cs
index a57816f..ae6a7aa 100644
--- a/UniversalModbusManager.cs
+++ b/UniversalModbusManager.cs
@@ -363,13 +363,13 @@
LogWarning($"灏嗗湪 {delay}ms 鍚庡皾璇曠 {_retryCount} 娆¢噸杩�");
- Task.Delay(delay, _cancellationTokenSource.Token).ContinueWith(async _ =>
+ Task.Delay(delay, _cancellationTokenSource?.Token ?? CancellationToken.None).ContinueWith(async _ =>
{
- if (!_cancellationTokenSource.Token.IsCancellationRequested)
+ if (!(_cancellationTokenSource?.Token.IsCancellationRequested ?? true))
{
await ConnectAsync();
}
- }, _cancellationTokenSource.Token);
+ }, _cancellationTokenSource?.Token ?? CancellationToken.None);
}
#endregion
@@ -676,7 +676,7 @@
// 妫�娴嬪父瑙佺殑閿欒鐮佹ā寮�
if (registers.Length >= 2)
{
- var combined = ((long)(registers[0] & 0xFFFF) << 16) | (registers[1] & 0xFFFF);
+ var combined = ((long)((uint)registers[0] & 0xFFFF) << 16) | ((uint)registers[1] & 0xFFFF);
if (combined == 0xE2400001)
{
LogInfo($"[PATTERN] 瀛楁 '{fieldName}' 妫�娴嬪埌宸茬煡鐨勬棤鏁堟暟鎹爣璇� 0xE2400001");
@@ -739,7 +739,7 @@
/// <summary>
/// 澶勭悊杩炴帴涓㈠け
/// </summary>
- private async Task HandleConnectionLoss()
+ private Task HandleConnectionLoss()
{
if (_isConnected)
{
@@ -754,6 +754,8 @@
ScheduleReconnect();
}
}
+
+ return Task.CompletedTask;
}
#endregion
diff --git a/config/ModbusDataParser.cs b/config/ModbusDataParser.cs
index c42bf90..871146c 100644
--- a/config/ModbusDataParser.cs
+++ b/config/ModbusDataParser.cs
@@ -93,7 +93,7 @@
if (config.Encoding?.ToLower() == "littleendian")
{
// 灏忕锛氫綆浣嶅瘎瀛樺櫒鍦ㄥ墠锛岄珮浣嶅瘎瀛樺櫒鍦ㄥ悗
- value = (registers[0] & 0xFFFF) | ((long)(registers[1] & 0xFFFF) << 16);
+ value = ((uint)registers[0] & 0xFFFF) | ((long)((uint)registers[1] & 0xFFFF) << 16);
}
else
{
@@ -103,7 +103,7 @@
if (registers.Length >= 2)
{
// 鍏堟寜灏忕鏂瑰紡缁勫悎锛堝嵆浣块厤缃笉鏄痩ittleendian锛�
- long littleEndianValue = (registers[0] & 0xFFFF) | ((long)(registers[1] & 0xFFFF) << 16);
+ long littleEndianValue = ((uint)registers[0] & 0xFFFF) | ((long)((uint)registers[1] & 0xFFFF) << 16);
// 妫�鏌ユ槸鍚﹂渶瑕佺壒娈婄殑闄や互10澶勭悊锛堥拡瀵规祴閲忔暟鎹級
if (littleEndianValue > 100000) // 6浣嶆暟鎴栨洿澶氾紝鍙兘闇�瑕侀櫎浠�10
@@ -115,13 +115,13 @@
else
{
// PLC榛樿浣跨敤澶х鏍煎紡杩涜澶氬瘎瀛樺櫒缁勫悎锛氶珮浣嶅瘎瀛樺櫒鍦ㄥ墠锛屼綆浣嶅瘎瀛樺櫒鍦ㄥ悗
- value = ((long)(registers[0] & 0xFFFF) << 16) | (registers[1] & 0xFFFF);
+ value = ((long)((uint)registers[0] & 0xFFFF) << 16) | ((uint)registers[1] & 0xFFFF);
}
}
else
{
// PLC榛樿浣跨敤澶х鏍煎紡杩涜澶氬瘎瀛樺櫒缁勫悎锛氶珮浣嶅瘎瀛樺櫒鍦ㄥ墠锛屼綆浣嶅瘎瀛樺櫒鍦ㄥ悗
- value = ((long)(registers[0] & 0xFFFF) << 16) | (registers[1] & 0xFFFF);
+ value = ((long)((uint)registers[0] & 0xFFFF) << 16) | ((uint)registers[1] & 0xFFFF);
}
}
@@ -140,7 +140,7 @@
Console.WriteLine($"[PARSER-DEBUG] 澶氬瘎瀛樺櫒缁勫悎 ({config.Length}涓�): [{string.Join(", ", registers.Take(config.Length))}]");
for (int i = 0; i < Math.Min(registers.Length, config.Length); i++)
{
- value = (value << 16) | (registers[i] & 0xFFFF);
+ value = (value << 16) | ((uint)registers[i] & 0xFFFF);
Console.WriteLine($"[PARSER-DEBUG] 姝ラ{i+1}: 0x{value:X} (瀵勫瓨鍣▄i}: {registers[i]})");
}
}
--
Gitblit v1.9.3