From 28bfb5dc1e3c0ce432e93e7af5a1c78a1a09e061 Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期三, 15 十月 2025 15:45:57 +0800
Subject: [PATCH] 更新 ResponeAgingInputDto 属性类型及数据库文件
---
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/StackerCrane/Common/CommonStackerCrane.cs | 124 ++++++++++++++++++++++++-----------------
1 files changed, 72 insertions(+), 52 deletions(-)
diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/StackerCrane/Common/CommonStackerCrane.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/StackerCrane/Common/CommonStackerCrane.cs
index 1d1a3ce..c49543b 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/StackerCrane/Common/CommonStackerCrane.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/StackerCrane/Common/CommonStackerCrane.cs
@@ -41,6 +41,17 @@
public class CommonStackerCrane : IStackerCrane
{
#region Private Member
+
+ /// <summary>
+ /// 瀹屾垚淇″彿绛夊緟鏃堕棿
+ /// </summary>
+ private const int WaitTimeout = 20 * 6000;
+
+ /// <summary>
+ /// 瀹屾垚淇″彿璇诲彇棰戠巼
+ /// </summary>
+ private const int ReadTimeout = 100;
+
/// <summary>
/// 鍫嗗灈鏈洪�氳瀵硅薄
/// </summary>
@@ -229,8 +240,11 @@
private int GetCurrentTaskNum()
{
- DeviceProDTO? devicePro = _deviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == nameof(CurrentTaskNum));
- return devicePro == null ? throw new Exception() : (int)Communicator.ReadAsObj(devicePro.DeviceProAddress, devicePro.DeviceDataType);
+ //DeviceProDTO? devicePro = _deviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == nameof(CurrentTaskNum));
+ //return devicePro == null ? throw new Exception() : (int)Communicator.ReadAsObj(devicePro.DeviceProAddress, devicePro.DeviceDataType);
+
+ DeviceProDTO devicePro = _deviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == nameof(CurrentTaskNum))?? throw new Exception("鏈幏鍙栧埌褰撳墠浠诲姟鍙风殑淇℃伅");
+ return (int)Communicator.ReadAsObj(devicePro.DeviceProAddress, devicePro.DeviceDataType);
}
/// <summary>
@@ -326,7 +340,7 @@
private void CheckConnect()
{
- Task.Run(() =>
+ Task.Run(async () =>
{
while (_heartStatr)
{
@@ -343,7 +357,8 @@
{
_isConnected = false;
}
- Thread.Sleep(500);
+ //Thread.Sleep(500);
+ await Task.Delay(500);
}
});
}
@@ -372,69 +387,74 @@
return false;
}
+ private readonly object _lockObject = new();
/// <summary>
/// 鐩戞祴鍫嗗灈鏈轰换鍔℃槸鍚﹀畬鎴�(闃叉浠诲姟瀹屾垚浜嬩欢鐩戞祴瓒呮椂锛屽畾涔夋墜鍔ㄨЕ鍙戝姛鑳�)
/// </summary>
public void CheckStackerCraneTaskCompleted()
{
- if (_isChecked)
- return;
-
- Task.Run(() =>
+ // 浣跨敤閿佺‘淇濆悓涓�鏃堕棿鍙湁涓�涓嚎绋嬪彲浠ヨ繘鍏ヨ鏂规硶
+ lock (_lockObject)
{
+ if (_isChecked)
+ return;
+
_isChecked = true;
- try
+ Task.Run(() =>
{
- DeviceProDTO? devicePro = _deviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == nameof(StackerCraneWorkStatus));
- if (devicePro != null)
+ try
{
- DeviceProtocolDetailDTO? deviceProtocolDetail = _deviceProtocolDetailDTOs.FirstOrDefault(x => x.DeviceProParamName == devicePro.DeviceProParamName && x.ProtocolDetailType == StackerCraneWorkStatus.WorkCompleted.ToString());
- if (deviceProtocolDetail != null)
+ DeviceProDTO? devicePro = _deviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == nameof(StackerCraneWorkStatus));
+ if (devicePro != null)
{
- OperateResult<TimeSpan> operateResult = new OperateResult<TimeSpan>();
- TypeCode typeCode = SiemensDBDataType.GetTypeCode(devicePro.DeviceDataType);
- switch (typeCode)
+ DeviceProtocolDetailDTO? deviceProtocolDetail = _deviceProtocolDetailDTOs.FirstOrDefault(x => x.DeviceProParamName == devicePro.DeviceProParamName && x.ProtocolDetailType == StackerCraneWorkStatus.WorkCompleted.ToString());
+ if (deviceProtocolDetail != null)
{
- case TypeCode.Boolean:
- operateResult = Communicator.Wait(devicePro.DeviceProAddress, 1500, 20 * 6000, Convert.ToBoolean(deviceProtocolDetail.ProtocalDetailValue));
- break;
- case TypeCode.Byte:
- operateResult = Communicator.Wait(devicePro.DeviceProAddress, 1500, 20 * 6000, Convert.ToByte(deviceProtocolDetail.ProtocalDetailValue));
- break;
- case TypeCode.Int16:
- operateResult = Communicator.Wait(devicePro.DeviceProAddress, 1500, 20 * 6000, Convert.ToInt16(deviceProtocolDetail.ProtocalDetailValue));
- break;
- case TypeCode.Int32:
- operateResult = Communicator.Wait(devicePro.DeviceProAddress, 1500, 20 * 6000, Convert.ToInt32(deviceProtocolDetail.ProtocalDetailValue));
- break;
- case TypeCode.UInt16:
- operateResult = Communicator.Wait(devicePro.DeviceProAddress, 1500, 20 * 6000, Convert.ToUInt16(deviceProtocolDetail.ProtocalDetailValue));
- break;
- case TypeCode.UInt32:
- operateResult = Communicator.Wait(devicePro.DeviceProAddress, 1500, 20 * 6000, Convert.ToUInt32(deviceProtocolDetail.ProtocalDetailValue));
- break;
- default:
- break;
- }
- int taskNum = CurrentTaskNum;
- if (operateResult.IsSuccess /*&& LastTaskNum != taskNum*/)
- {
- StackerCraneTaskCompletedEventArgs args = new(taskNum);
- StackerCraneTaskCompletedEventHandler?.Invoke(this, args);
- _lastTaskNum = taskNum;
+ OperateResult<TimeSpan> operateResult = new OperateResult<TimeSpan>();
+ TypeCode typeCode = SiemensDBDataType.GetTypeCode(devicePro.DeviceDataType);
+ switch (typeCode)
+ {
+ case TypeCode.Boolean:
+ operateResult = Communicator.Wait(devicePro.DeviceProAddress, ReadTimeout, WaitTimeout, Convert.ToBoolean(deviceProtocolDetail.ProtocalDetailValue));
+ break;
+ case TypeCode.Byte:
+ operateResult = Communicator.Wait(devicePro.DeviceProAddress, ReadTimeout, WaitTimeout, Convert.ToByte(deviceProtocolDetail.ProtocalDetailValue));
+ break;
+ case TypeCode.Int16:
+ operateResult = Communicator.Wait(devicePro.DeviceProAddress, ReadTimeout, WaitTimeout, Convert.ToInt16(deviceProtocolDetail.ProtocalDetailValue));
+ break;
+ case TypeCode.Int32:
+ operateResult = Communicator.Wait(devicePro.DeviceProAddress, ReadTimeout, WaitTimeout, Convert.ToInt32(deviceProtocolDetail.ProtocalDetailValue));
+ break;
+ case TypeCode.UInt16:
+ operateResult = Communicator.Wait(devicePro.DeviceProAddress, ReadTimeout, WaitTimeout, Convert.ToUInt16(deviceProtocolDetail.ProtocalDetailValue));
+ break;
+ case TypeCode.UInt32:
+ operateResult = Communicator.Wait(devicePro.DeviceProAddress, ReadTimeout, WaitTimeout, Convert.ToUInt32(deviceProtocolDetail.ProtocalDetailValue));
+ break;
+ default:
+ break;
+ }
+ int taskNum = CurrentTaskNum;
+ if (operateResult.IsSuccess /*&& LastTaskNum != taskNum*/)
+ {
+ StackerCraneTaskCompletedEventArgs args = new(taskNum);
+ StackerCraneTaskCompletedEventHandler?.Invoke(this, args);
+ _lastTaskNum = taskNum;
+ }
}
}
}
- }
- catch (Exception ex)
- {
+ catch (Exception ex)
+ {
- }
- finally
- {
- _isChecked = false;
- }
- });
+ }
+ finally
+ {
+ _isChecked = false;
+ }
+ });
+ }
}
/// <summary>
--
Gitblit v1.9.3