2025年6月12日/AuxAllWCS/Build/Project/AuxAllWCS.csproj | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
2025年6月12日/AuxAllWCS/Build/Project/代码/VS自定义类/AutoThread.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
2025年6月12日/AuxAllWCS/Build/Project/代码/ViewModel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
2025年6月12日/AuxAllWCS/Build/Project/代码/界面事件.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
2025年6月12日/AuxAllWCS/Build/Project/代码/自定义类.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
2025年6月12日/AuxAllWCS/Dlls/GZ.Device.PLC.dll | 补丁 | 查看 | 原始文档 | blame | 历史 | |
2025年6月12日/AuxAllWCS/Dlls/GZ.Modular.Redis.dll | 补丁 | 查看 | 原始文档 | blame | 历史 |
2025Äê6ÔÂ12ÈÕ/AuxAllWCS/Build/Project/AuxAllWCS.csproj
@@ -198,6 +198,7 @@ <Generator>MSBuild:Compile</Generator> <SubType>Designer</SubType> </Page> <Compile Include="代ç \VSèªå®ä¹ç±»\AutoThread.cs" /> <Compile Include="çé¢\View1.xaml.cs"> <DependentUpon>View1.xaml</DependentUpon> <SubType>Code</SubType> 2025Äê6ÔÂ12ÈÕ/AuxAllWCS/Build/Project/´úÂë/VS×Ô¶¨ÒåÀà/AutoThread.cs
New file @@ -0,0 +1,102 @@ using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Collections.Concurrent; using System.ComponentModel; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; namespace GZ.Projects.AuxAllWCS { public partial class AutoThread { private static AutoThread _instance; // ç§ææé 彿°é²æ¢å¤é¨å®ä¾å private AutoThread() { } public static AutoThread Instance { get { if (_instance == null) { _instance = new AutoThread(); } return _instance; } } // 线ç¨å®å ¨çå§æç¼å private static readonly ConcurrentDictionary<string, Delegate> _methodCache = new ConcurrentDictionary<string, Delegate>(); // æ¹æ³æ§è¡å¨ public static object InvokeMethod(object instance, string methodName, params object[] args) { var cacheKey = $"{instance.GetType().FullName}_{methodName}"; if (!_methodCache.TryGetValue(cacheKey, out var methodDelegate)) { // è·åæ¹æ³ä¿¡æ¯ var methodInfo = instance.GetType().GetMethod( methodName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); if (methodInfo == null) throw new MissingMethodException($"Method {methodName} not found"); // åå»ºå§æå¹¶ç¼å methodDelegate = Delegate.CreateDelegate( GetDelegateType(methodInfo), instance, methodInfo); _methodCache.TryAdd(cacheKey, methodDelegate); } // æ§è¡å§æ return methodDelegate.DynamicInvoke(args); } // æ ¹æ®æ¹æ³ç¾åçæå¯¹åºçå§æç±»å private static Type GetDelegateType(MethodInfo methodInfo) { var parameterTypes = methodInfo.GetParameters() .Select(p => p.ParameterType) .ToList(); if (methodInfo.ReturnType == typeof(void)) { return System.Linq.Expressions.Expression.GetActionType(parameterTypes.ToArray()); } else { parameterTypes.Add(methodInfo.ReturnType); return System.Linq.Expressions.Expression.GetFuncType(parameterTypes.ToArray()); } } public void ThreadSettingInit(Tag tag, Action action) { Console.WriteLine("åå§åé ç½® çº¿ç¨ run " + tag.Global.SettingsOver); if (tag.Global.SettingsOver == 0) { action?.Invoke(); tag.Global.SettingsOver = 1; } else if (Settings.deviceInfos.Count == 0) { tag.Global.SettingsOver = 0; } } } } 2025Äê6ÔÂ12ÈÕ/AuxAllWCS/Build/Project/´úÂë/ViewModel.cs
@@ -95,10 +95,12 @@ { Settings.HostToAgvServerUrl = keyValue.Value.ToString(); } if (keyValue.Name == "deviceInfo") { if (keyValue.Name == "deviceInfo") { Settings.deviceInfos = JsonConvert.DeserializeObject<List<deviceInfo>>(keyValue.Value.ToString()); } if (keyValue.Name == "HKbaseUrl") { if (keyValue.Name == "HKbaseUrl") { Settings.HKbaseUrl = keyValue.Value.ToString(); } if (keyValue.Name == "MESbaseUrl") @@ -180,7 +182,8 @@ TcpServer.TrayIps.Remove(device.deviceNo[inde ? 0 : 1]); } } else if(device.deviceType == 2){ else if (device.deviceType == 2) { var inde = device.location.ToList().FindIndex(x => x == wcsTask.S_START_LOC) == 0; string V = inde? "D1224" : "D1225"; Conn.é»è®¤Redis.SetValue(device.deviceName + "." + V, "0", device.deviceName + "Queue"); @@ -282,7 +285,8 @@ endLoc.S_LOCK_STATE = "æ "; locrep.Update(startloc); locrep.Update(endLoc); }else if (tare.Find(x => x.S_ACTION_CODE == "end") == null) } else if (tare.Find(x => x.S_ACTION_CODE == "end") == null) { endLoc.S_LOCK_STATE = "æ "; locrep.Update(endLoc); @@ -332,7 +336,8 @@ } } }else if(mestask!=null && model.method== "cancel") } else if (mestask != null && model.method == "cancel") { if(mestask.S_B_STATE == "MES") Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/201", JsonConvert.SerializeObject(new @@ -366,7 +371,8 @@ public GZ.DB.Entity.OIDATABASE.TaskEntity Begin(GZ.DB.Entity.OIDATABASE.TaskEntity task) { #region [èªå®ä¹æä»¤][20250324170811305][Begin] if (task.S_B_STATE.Trim() == "å·²æ¨é") { if (task.S_B_STATE.Trim() == "å·²æ¨é") { task.S_B_STATE = "æ§è¡ä¸"; task.T_START_TIME = DateTime.Now; } @@ -376,7 +382,8 @@ public GZ.DB.Entity.OIDATABASE.TaskEntity End(GZ.DB.Entity.OIDATABASE.TaskEntity task) { #region [èªå®ä¹æä»¤][20250324170922920][End] if (task != null) { if (task != null) { task.S_B_STATE = "宿"; task.T_END_TIME = DateTime.Now; } @@ -501,19 +508,24 @@ msg = $"[haikang-CreateOrder] request={request} response={response}"; LogHelper.Info(msg); if (response != "") { try { if (response != "") { try { var dataResult = JsonConvert.DeserializeObject<HKResult>(response); if (dataResult.code == "0") { if (dataResult.code == "0") { result = true; } } catch (Exception ex) { catch (Exception ex) { Console.WriteLine(ex.Message); LogHelper.Info(msg,"海康"); } } else { else { msg = "[haikang-CreateOrder]å建订å失败"; Console.WriteLine(msg); } @@ -659,13 +671,16 @@ var response = Settings.apiHelper.Post(Settings.HKbaseUrl + "rcms/services/rest/hikRpcService/continueTask", request); msg = $"[haikang-CancelOrder] request={request};response={response}"; Console.WriteLine(msg); if (response != "") { if (response != "") { var dataResult = JsonConvert.DeserializeObject<HKResult>(response); if (dataResult.code == "0") { if (dataResult.code == "0") { result = true; } } else { else { msg = "[haikang-CancelOrder]åæ¶è®¢å失败"; Console.WriteLine(msg); } 2025Äê6ÔÂ12ÈÕ/AuxAllWCS/Build/Project/´úÂë/½çÃæÊ¼þ.cs
@@ -29,6 +29,7 @@ using GZ.DB.IRepository.OIDATABASE; using GZ.DB.Entity.OIDATABASE; using GZ.Modular.Redis; using System.Security.Cryptography; namespace GZ.Projects.AuxAllWCS { /// <summary> @@ -78,15 +79,26 @@ try { #region [èæ¬][20250323111613779][ä¸å¡é»è¾.åå§åé ç½®] if (Tag.Global.SettingsOver == 0) { SettingInit(); Tag.Global.SettingsOver = 1; } else if (Settings.deviceInfos.Count == 0) { Tag.Global.SettingsOver = 0; } //LogHelper.Info("1111 +" + DateTime.Now); //((Type)typeof(Utils)).GetMethod("ThreadSettingInit").Invoke(new Utils(), null); //LogHelper.Info("2222 +" + DateTime.Now); //((Type)typeof(Utils)).GetMethod("ThreadSettingInit").Invoke(new Utils(), new object[] { }); //LogHelper.Info("3333 +" + DateTime.Now); Action myDelegate = () => SettingInit(); AutoThread.InvokeMethod(AutoThread.Instance, "ThreadSettingInit", new object[] { tag, myDelegate }); //LogHelper.Info("4444 +" + DateTime.Now); //AutoThread.InvokeMethod(AutoThread.Instance, "ThreadSettingInit", null); //LogHelper.Info("4444 +" + DateTime.Now); //if (Tag.Global.SettingsOver == 0) //{ // SettingInit(); // Tag.Global.SettingsOver = 1; //} //else if (Settings.deviceInfos.Count == 0) //{ // Tag.Global.SettingsOver = 0; //} #endregion [èæ¬][20250323111613779][ä¸å¡é»è¾.åå§åé ç½®] } @@ -691,6 +703,32 @@ } ExitJudgeStack.TryPop(out int exitJudgeVal); }); System.Threading.Tasks.Task.Factory.StartNew(() => { System.Threading.Thread.CurrentThread.IsBackground = true; ExitJudgeStack.Push(0); //ä¸ç´æ§è¡ï¼ç´å°æ»¡è¶³ç»ææ¡ä»¶ while (true) { if (IsExitApp) { break; } try { #region [èæ¬][20250610002647095][ä¸å¡é»è¾.ç¬¬ä¸æ 段.ç»´ç³»å°2å·.ç»´å¸å°æè2R] LogHelper.Info($"æµè¯çº¿ç¨è¿è¡ç¶ææ¥å¿ããããã"); #endregion [èæ¬][20250610002647095][ä¸å¡é»è¾.ç¬¬ä¸æ 段.ç»´ç³»å°2å·.ç»´å¸å°æè2R] } catch (Exception ex) { Conn.é»è®¤æ¥å¿.Error(ex.ToString()); } finally { System.Threading.Thread.Sleep(3000); } } ExitJudgeStack.TryPop(out int exitJudgeVal); }); /// <summary> /// ç¨åºç段:ä»»å¡ä¸å /// æè¿°: @@ -702,11 +740,19 @@ //ä¸ç´æ§è¡ï¼ç´å°æ»¡è¶³ç»ææ¡ä»¶ while (true) { if (IsExitApp) { break; } //if (IsExitApp) { break; } LogHelper.Info("ä»»å¡ä¸å while è¿å ¥"); try { LogHelper.Info("ä»»å¡ä¸å try 1 è¿å ¥"); #region [èæ¬][20250325085542733][ä¸å¡é»è¾.ä»»å¡ä¸å] ITaskRepository taskservice = new TaskRepository(); try { LogHelper.Info("ä»»å¡ä¸å ARG ä»»å¡ è¿å ¥"); #region AGVä»»å¡ä¸åã var tklist = taskservice.FindList(x => x.S_B_STATE == "æªæ§è¡" && x.S_WORK_MODE == "AGV"); if (tklist.Any()) foreach (var tk in tklist.GroupBy(item => @@ -737,8 +783,15 @@ //if (tklist.Any()) //{ #endregion } catch (Exception ex) { LogHelper.Info(ex.Message + ex.StackTrace); } try { LogHelper.Info("ä»»å¡ä¸å Rgv ä»»å¡ è¿å ¥"); #region Rgv LogHelper.Info($"æ¥çRGV çµéï¼ã{tag.RGV.Rå½åçµé}ã å çµç¶æï¼ã{tag.RGV.Rå çµç¶æ}ã æ é代ç ï¼ã{tag.RGV.RgvrunError}ã"); @@ -862,7 +915,7 @@ } ///1 æè´§ å°±2 åã 1 没货 å°±2 å¸è´§ï¼ é½æè´§ å°±1å¸è´§ã 齿²¡è´§ å°±1å¸ tklist = taskservice.FindList(x => x.S_B_STATE == "æªæ§è¡" && x.S_WORK_MODE == "RGV").OrderBy(x => x.T_CREATE).ToList(); var tklist = taskservice.FindList(x => x.S_B_STATE == "æªæ§è¡" && x.S_WORK_MODE == "RGV").OrderBy(x => x.T_CREATE).ToList(); if (task1 != null && task1.S_B_STATE != "宿") //1æä»»å¡ { if (task2 != null && task2.S_B_STATE != "宿")// 1 æä»»å¡ 2 æä»»å¡ã @@ -873,8 +926,14 @@ tag.RGV.taskno1 = Convert.ToUInt32(task1.S_TASK_NO.Substring(4)); tag.RGV.task1do = Convert.ToUInt16(task1.S_END_LOC); System.Threading.Thread.Sleep(750); //RedisHelper.Add($"RGV.bit1taskOver_LAST", "0", out string msg); //tag.RGV.taskend = 125; //Conn.é»è®¤Redis.SetValue("RGV.taskend", "125", "RGVQueue"); LogHelper.Info($"{task1.S_TASK_NO}> bit1taskOver_LAST å 0"); RedisHelper.Add($"RGV.bit1taskOver_LAST", "0", out string msg); tag.RGV.taskend = 125; LogHelper.Info($"{task1.S_TASK_NO}> end å 125"); Conn.é»è®¤Redis.SetValue("RGV.taskend", "125", "RGVQueue", false); } else //1æä»»å¡ 2 没任å¡ã { @@ -899,8 +958,10 @@ taskservice.Update(t2); creT2 = true; System.Threading.Thread.Sleep(750); LogHelper.Info($"{t2.S_TASK_NO}> bit2taskOver_LAST å 0"); RedisHelper.Add($"RGV.bit2taskOver_LAST", "0", out string msg); tag.RGV.taskend = 125; LogHelper.Info($"{t2.S_TASK_NO}> end å 125"); Conn.é»è®¤Redis.SetValue("RGV.taskend", "125", "RGVQueue", false); } } else if (RightSide.Contains(task1.S_START_LOC)) @@ -918,8 +979,10 @@ taskservice.Update(t2); creT2 = true; System.Threading.Thread.Sleep(750); LogHelper.Info($"{t2.S_TASK_NO}> bit2taskOver_LAST å 125"); RedisHelper.Add($"RGV.bit2taskOver_LAST", "0", out string msg); tag.RGV.taskend = 125; LogHelper.Info($"{t2.S_TASK_NO}> end å 125"); Conn.é»è®¤Redis.SetValue("RGV.taskend", "125", "RGVQueue", false); } } //else //1 ç´æ¥å¸è´§ã @@ -931,8 +994,10 @@ tag.RGV.taskno1 = Convert.ToUInt32(task1.S_TASK_NO.Substring(4)); tag.RGV.task1do = Convert.ToUInt16(task1.S_END_LOC); System.Threading.Thread.Sleep(750); LogHelper.Info($"{task1.S_TASK_NO}> bit1taskOver_LAST å 0"); RedisHelper.Add($"RGV.bit1taskOver_LAST", "0", out string msg); tag.RGV.taskend = 125; LogHelper.Info($"{task1.S_TASK_NO}> taskend å 0"); Conn.é»è®¤Redis.SetValue("RGV.taskend", "125", "RGVQueue", false); } } } @@ -947,8 +1012,11 @@ tag.RGV.taskno2 = Convert.ToUInt32(task2.S_TASK_NO.Substring(4)); tag.RGV.task2do = Convert.ToUInt16(task2.S_END_LOC); System.Threading.Thread.Sleep(750); LogHelper.Info($"{task2.S_TASK_NO}> bit2taskOver_LAST å 0"); RedisHelper.Add($"RGV.bit2taskOver_LAST", "0", out string msg); tag.RGV.taskend = 125; //tag.RGV.taskend = 125; LogHelper.Info($"{task2.S_TASK_NO}> taskend å125"); Conn.é»è®¤Redis.SetValue("RGV.taskend", "125", "RGVQueue", false); } else //1mei ä»»å¡ 2 没任å¡ã { @@ -970,22 +1038,25 @@ tag.RGV.taskno1 = tno; LogHelper.Info($"{e1017first.S_TASK_NO}>å¼å§åå ¥ task1do>>{e1017first.S_START_LOC}ã"); tag.RGV.task1do = Convert.ToUInt16(e1017first.S_START_LOC); LogHelper.Info($"{e1017first.S_TASK_NO}> taskend 125"); LogHelper.Info($"{e1017first.S_TASK_NO}> æ´æ°ä»»å¡ã"); e1017first.S_B_STATE = "å·²æ¨é"; taskservice.Update(e1017first); System.Threading.Thread.Sleep(750); LogHelper.Info($"{e1017first.S_TASK_NO}> bit1taskOver_LAST å0"); RedisHelper.Add($"RGV.bit1taskOver_LAST", "0", out string msg); tag.RGV.taskend = 125; } } } LogHelper.Info($"{e1017first.S_TASK_NO}> taskend å125"); //tag.RGV.taskend=125 Conn.é»è®¤Redis.SetValue("RGV.taskend", "125", "RGVQueue", false); } } } LogHelper.Info($"rgv å¤ç宿ãtaskend 125"); #endregion } catch (Exception ex) { LogHelper.Error(ex.Message, ex); //throw ex; LogHelper.Info(ex.Message + ex.StackTrace); } #endregion [èæ¬][20250325085542733][ä¸å¡é»è¾.ä»»å¡ä¸å] } @@ -1260,6 +1331,17 @@ } System.Threading.Thread.Sleep(2000); } foreach (var item in new string[] { "1004", "1012", "1006", "1014", "1026", "1017" }) { var R5 = (System.UInt16)System.Convert.ChangeType(Conn.é»è®¤Redis.GetValue($"S{item}Read.R5空é²"), typeof(System.UInt16)); var R5空é²_LAST = (System.UInt16)System.Convert.ChangeType(Conn.é»è®¤Redis.GetValue($"S{item}Read.R5空é²_LAST"), typeof(System.UInt16)); if (R5 != 5 && R5空é²_LAST == 1) { RedisHelper.Add($"S{item}Read.R5空é²_LAST", "0", out string msg); //Conn.é»è®¤Redis.SetValue($"S{item}Read.R5空é²_LAST", "0", $"S{item}ReadQueue"); } } #endregion [èæ¬][20250616094224396][ä¸å¡é»è¾.æµç¨2çå¤ççè¿åº.1020空æ¡ä¸çº¿] } catch (Exception ex) @@ -1462,7 +1544,7 @@ } else if (ssx == "1003") { tag.FNK2.D2210 = 1; tag.FNK1.D2210 = 1; //tag.SF䏿ä½.RArrive1003_LAST = 1; RedisHelper.Add($"FNK1003051113.RArrive1003_LAST", "1", out string msg); 2025Äê6ÔÂ12ÈÕ/AuxAllWCS/Build/Project/´úÂë/×Ô¶¨ÒåÀà.cs
@@ -28,6 +28,7 @@ using GZ.DB.Repository.OIDATABASE; using GZ.DB.IRepository.OIDATABASE; using GZ.DB.Entity.OIDATABASE; using static System.Windows.Forms.VisualStyles.VisualStyleElement; namespace GZ.Projects.AuxAllWCS { public class Settings @@ -656,6 +657,12 @@ { #region [èªå®ä¹ç±»][20250417094750211][Utils] public void ThreadSettingInit() { Console.WriteLine("Utils ThreadSettingInit "); } #endregion [èªå®ä¹ç±»][20250417094750211][Utils] } public class ToWMSMES 2025Äê6ÔÂ12ÈÕ/AuxAllWCS/Dlls/GZ.Device.PLC.dllBinary files differ
2025Äê6ÔÂ12ÈÕ/AuxAllWCS/Dlls/GZ.Modular.Redis.dllBinary files differ