| | |
| | | using System.Net.NetworkInformation; |
| | | using System.Windows.Documents; |
| | | using System.Text.RegularExpressions; |
| | | using GZ.Device.PLC; |
| | | using System.Runtime.CompilerServices; |
| | | using ServiceStack.Text; |
| | | |
| | | namespace GZ.Projects.AuxAllWCS |
| | | { |
| | | public static class ExtendClass |
| | | { |
| | | public static void Disnull(this TaskRepository repository) |
| | | { |
| | | repository.dbcontext.Dispose(); |
| | | repository = null; |
| | | } |
| | | public static void Disnull(this LocRepository repository) |
| | | { |
| | | repository.dbcontext.Dispose(); |
| | | repository = null; |
| | | } |
| | | public static void Disnull(this TaskActRepository repository) |
| | | { |
| | | repository.dbcontext.Dispose(); |
| | | repository = null; |
| | | } |
| | | public static void Disnull(this SYSRepository repository) |
| | | { |
| | | repository.dbcontext.Dispose(); |
| | | repository = null; |
| | | } |
| | | } |
| | | public partial class AutoThread |
| | | { |
| | | /// <summary> |
| | | /// 1 åªå¼çº¿ç¨ Device Client |
| | | /// 2 åªå¼è®¾å¤ Device Server |
| | | /// 3 å
¨å¼ |
| | | /// </summary> |
| | | public static readonly int _type = 1; |
| | | /// <summary> |
| | | /// 1 modbus |
| | | /// 2 -24 vxr 25 S7 |
| | | /// 3 MC |
| | | /// </summary> |
| | | public static readonly string tys = "1 2 24 25 3"; |
| | | |
| | | private static AutoThread _instance; |
| | | |
| | |
| | | public static object InvokeMethod(object instance, string methodName, params object[] args) |
| | | { |
| | | var cacheKey = $"{instance.GetType().FullName}_{methodName}"; |
| | | |
| | | if (AutoThread._type % 2 == 0) |
| | | { |
| | | Console.WriteLine($"{AutoThread._type}> å½åæ¯ Device Server 模å¼ã"); |
| | | return null; |
| | | } |
| | | |
| | | try |
| | | { |
| | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | LogHelper.Error($"InvokeMethod > cacheKey-{ex.Message}", ex); |
| | | LogHelper.Error($"InvokeMethod > cacheKey:{cacheKey}-{ex.Message}", ex); |
| | | throw ex; |
| | | } |
| | | } |
| | |
| | | // return _repository; |
| | | // } |
| | | //} |
| | | |
| | | /// <summary> |
| | | /// é
ç½®åå§åã |
| | | /// </summary> |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | public void ThreaTotal(Tag tag, Device device) |
| | | { |
| | | List<Task> tasks = new List<Task>(); |
| | | LogHelper.Info("ThreaTotal çº¿ç¨æ»çº¿å¯å¨"); |
| | | tasks.Add(GetTask(delegate (Tag tag1, Device device1) |
| | | { |
| | | try |
| | |
| | | tasks.Add(GetTask(taskssss1, tag, 3000)); |
| | | tasks.Add(GetTask(taskssss2, tag, 3000)); |
| | | tasks.Add(GetTask(taskssss3, tag, 3000)); |
| | | tasks.Add(GetTask(task20132027, tag, 3000)); |
| | | //tasks.Add(GetTask(sa1022, tag, 3000)); |
| | | //tasks.Add(GetTask(sa1025, tag, 3000)); |
| | | //tasks.Add(GetTask(sa1030, tag, 3000)); |
| | |
| | | |
| | | tasks.Add(GetTask(ThreadMXC5, tag, 3000)); |
| | | tasks.Add(GetTask(ThreadMXC6, tag, 3000)); |
| | | tasks.Add(GetTask(ThreadS7helper, tag, 3000)); |
| | | |
| | | LogHelper.Info("ThreaTotal çº¿ç¨æ»çº¿runing"); |
| | | Task.WaitAll(tasks.ToArray()); |
| | | LogHelper.Info("ThreaTotal çº¿ç¨æ»çº¿over"); |
| | | } |
| | | |
| | | |
| | | private void ThreadS7helper(Tag tag) |
| | | { |
| | | //var plc = new Plc(CpuType.S71500,); |
| | | |
| | | //foreach (var item in collection) |
| | | //{ |
| | | // S7.Net.Plc plc = new Plc(CpuType.S71500, item.address, 0, 1); |
| | | // Link(plc); |
| | | // PLCS.Add(item.deviceName, plc); |
| | | //} |
| | | } |
| | | |
| | | void task20132027(Tag tag) |
| | | { |
| | | if (tag.ssxè¾é线.s2027.wTaskNo > 0 && tag.ssxè¾é线.s2020.wæçç != tag.ssxè¾é线.s2027.Ræçç ) |
| | | { |
| | | tag.ssxè¾é线.s2027.wEbit = 0; |
| | | tag.ssxè¾é线.s2027.wæçç = ""; |
| | | tag.ssxè¾é线.s2027.wTaskNo = 0; |
| | | } |
| | | if (tag.ssxè¾é线.s2020.wTaskNo > 0 && tag.ssxè¾é线.s2020.wæçç != tag.ssxè¾é线.s2020.Ræçç ) |
| | | { |
| | | tag.ssxè¾é线.s2020.wEbit = 0; |
| | | tag.ssxè¾é线.s2020.wæçç = ""; |
| | | tag.ssxè¾é线.s2020.wTaskNo = 0; |
| | | } |
| | | if (tag.ssxè¾é线.s2013.wTaskNo > 0 && tag.ssxè¾é线.s2013.wæçç != tag.ssxè¾é线.s2013.Ræçç ) |
| | | { |
| | | tag.ssxè¾é线.s2013.wEbit = 0; |
| | | tag.ssxè¾é线.s2013.wæçç = ""; |
| | | tag.ssxè¾é线.s2013.wTaskNo = 0; |
| | | } |
| | | } |
| | | void taskssss1(Tag tag) |
| | | { |
| | |
| | | sa3010(tag); |
| | | } |
| | | |
| | | public static ConcurrentDictionary<string, bool> Iponlines = new ConcurrentDictionary<string, bool>(); |
| | | //public static ConcurrentDictionary<string, bool> Iponlines = new ConcurrentDictionary<string, bool>(); |
| | | public bool IsMachineOnline(string hostNameOrIp, int timeout = 1000) |
| | | { |
| | | //device.påé£ç§1ä¸çº¿.Config.IP |
| | |
| | | } |
| | | } |
| | | } |
| | | task1 = null; |
| | | task2 = null; |
| | | LogHelper.Info($"rgv å¤ç宿ãtaskend 125"); |
| | | #endregion |
| | | } |
| | |
| | | TaskRepository taskRepository = new TaskRepository(); |
| | | try |
| | | { |
| | | |
| | | var requires1 = taskActRepository.FindList(x => taskCOdes.Contains(x.S_ACTION_CODE) && x.N_CREATEMETHOD == 0).OrderBy(x => x.T_CREATE).ToList(); |
| | | var timeMorhours = requires1.FindAll(x => DateTime.Now.Subtract(x.T_CREATE).TotalHours > 1); |
| | | if (timeMorhours.Any()) |
| | |
| | | else if (dev.deviceType == 6) |
| | | { |
| | | var close = (System.UInt16)System.Convert.ChangeType(Conn.é»è®¤Redis.GetValue(dev.deviceName + "." + (V ? "RD1203" : "RD1204")), typeof(System.UInt16)); |
| | | LogHelper.Info($"{dev.deviceName}{(V ? "å·¦" : "å³")} å
æ
{(goin ? "å
³é" : "å¼å¯")} ç³è¯·ã å
³éç¶æï¼{close}ï¼"); |
| | | |
| | | var canDo = (System.UInt16)System.Convert.ChangeType(Conn.é»è®¤Redis.GetValue(dev.deviceName + "." + (locindex == 0 ? "RD1200" : locindex == 1 ? "RD1201" : "RD1202")), typeof(System.UInt16)); |
| | | if (close == 0) |
| | | LogHelper.Info($"{dev.deviceName}{(V ? "å·¦" : "å³")} å
æ
{(goin ? "å
³é" : "å¼å¯")} ç³è¯·ã宿± å
³éç¶æï¼{close}ï¼ å
许æä½ç¶æï¼{canDo}"); |
| | | if (close == 0 && canDo == 1) |
| | | { |
| | | continuuuuu = true; |
| | | } |
| | |
| | | } |
| | | |
| | | } |
| | | requires1 = null; |
| | | timeMorhours = null; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | |
| | | private void sa2008(Tag tag) |
| | | { |
| | | string tno = "sa2008";// TaskProcess.GenerateTaskNo("æ¥å¿æµæ°´å·", "LOG"); |
| | | var rdisTcode = RedisHelper.Get<string>($"Arrive{2008}BarcodeLast", out string msg); |
| | | LogHelper.Info($"2008 æçå·{tag.SA2030.Ræçç } redis Arrive{2008}BarcodeLastæçå·ï¼{rdisTcode} å¹é
æ ¡éªã"); |
| | | if (!string.IsNullOrEmpty(tag.ssxè¾é线.s2008.Ræçç ) && rdisTcode != tag.ssxè¾é线.s2008.Ræçç ) |
| | | var ntr = tag.ssxè¾é线.s2008.Ræçç ; |
| | | LogHelper.Info($"[{tno}]2008 æçå·{ntr} redis Arrive{2008}BarcodeLastæçå·ï¼{rdisTcode},ä»»å¡ç³è¯·ï¼{tag.ssxè¾é线.s2008.RtaskState} å¹é
æ ¡éªã"); |
| | | if (ntr == "123") |
| | | ntr = ""; |
| | | if (rdisTcode != ntr && (tag.ssxè¾é线.s2008.wTaskNo > 0 || !string.IsNullOrEmpty(tag.ssxè¾é线.s2008.wæçç ))) |
| | | { |
| | | var ntr = tag.ssxè¾é线.s2008.Ræçç ; |
| | | var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/224", JsonConvert.SerializeObject(new |
| | | { |
| | | cntrCode = ntr, |
| | | type = 1 |
| | | })); |
| | | var strr = JsonConvert.DeserializeObject<MES2234>(str); |
| | | if (strr.success && strr.data != null) |
| | | { |
| | | var end = (strr.data.lineNum == 1 ? 2027 |
| | | : strr.data.lineNum == 2 ? 2020 : 2013); |
| | | tag.ssxè¾é线.s2008.wTaskNo = (uint)(20080000 + end); |
| | | tag.ssxè¾é线.s2008.wEbit = 2027; |
| | | tag.ssxè¾é线.s2008.Ræçç = ntr; |
| | | LogHelper.Info($"[{tno}]2008 æçå·{ntr} 忢æçå·ï¼ä¹å¯è½æ¸
空äºï¼ï¼æ¸
é¤ä»»å¡æ°æ®ãwTaskNoï¼wEbit=0ï¼wæçç =空"); |
| | | tag.ssxè¾é线.s2008.wEbit = 0; |
| | | LogHelper.Info($"[{tno}] wEbit 0"); |
| | | tag.ssxè¾é线.s2008.wæçç = ""; |
| | | LogHelper.Info($"[{tno}] wæçç ''"); |
| | | tag.ssxè¾é线.s2008.wTaskNo = 0; |
| | | LogHelper.Info($"[{tno}] wTaskNo 0"); |
| | | if (string.IsNullOrEmpty(ntr)) |
| | | RedisHelper.Add<string>($"Arrive{2008}BarcodeLast", ntr, out msg); |
| | | } |
| | | } |
| | | if (tag.ssxè¾é线.s2008.RtaskState == 1) |
| | | if (!string.IsNullOrEmpty(ntr) && rdisTcode != ntr) |
| | | { |
| | | LogHelper.Info($"[{tno}]2008 æçå·{ntr} ç³è¯·WMS åé"); |
| | | var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/224", JsonConvert.SerializeObject(new |
| | | { |
| | | cntrCode = ntr, |
| | | type = 1 |
| | | })); |
| | | var strr = JsonConvert.DeserializeObject<MES2234>(str); |
| | | if (strr.success && strr.data != null) |
| | | { |
| | | tag.ssxè¾é线.s2008.wæçç = ntr; |
| | | var end = (ushort)(strr.data.lineNum == 1 ? 2027 |
| | | : strr.data.lineNum == 2 ? 2020 : 2013); |
| | | tag.ssxè¾é线.s2008.wTaskNo = (uint)(20080000 + end); |
| | | tag.ssxè¾é线.s2008.wEbit = end; |
| | | LogHelper.Info($"[{tno}]2008 æçå·{ntr} åä»»å¡ï¼wTaskNo={(uint)(20080000 + end)} wEbit={end} wæçç ={ntr} Arrive{2008}BarcodeLast={ntr} "); |
| | | RedisHelper.Add<string>($"Arrive{2008}BarcodeLast", ntr, out msg); |
| | | } |
| | | } |
| | | } |
| | | |
| | | private void sa2030(Tag tag) |
| | |
| | | i = 0; |
| | | } |
| | | |
| | | LogHelper.Info($"_methodCache>>>>" + _methodCache.Count + ">>>>" + JsonConvert.SerializeObject(_methodCache.Keys)); |
| | | |
| | | //Console.WriteLine($"SA2030 ä»»å¡ç¶æï¼ =====>"); |
| | | //Console.WriteLine($"SA2030 ä»»å¡ç¶æï¼{tag.SA2030.RtaskState}- 空é²{tag.SA2030.R5空é²} - barcode:{tag.SA2030.Ræçç }"); |
| | | |
| | |
| | | if (strr.success && strr.data.materialCode == task.S_INDEX) |
| | | { |
| | | LogHelper.Info($"2027 è¯»å°æç{tag.ssxè¾é线.s2027.Ræçç } å¹é
æåï¼åä»»å¡å·ï¼20272030ï¼ç»ç¹ï¼2030 åæçç å读"); |
| | | tag.ssxè¾é线.s2027.wæçç = tag.ssxè¾é线.s2027.Ræçç ; |
| | | tag.ssxè¾é线.s2027.wTaskNo = 20272030; |
| | | tag.ssxè¾é线.s2027.wEbit = 2030; |
| | | tag.ssxè¾é线.s2027.wæçç = tag.ssxè¾é线.s2027.Ræçç ; |
| | | LogHelper.Info($"2027 > 2030 SSXä»»å¡ä¸å宿ã"); |
| | | continue; |
| | | } |
| | |
| | | if (strr.success && strr.data.materialCode == task.S_INDEX) |
| | | { |
| | | LogHelper.Info($"2020 è¯»å°æç{tag.ssxè¾é线.s2020.Ræçç } å¹é
æåï¼åä»»å¡å·ï¼20202030ï¼ç»ç¹ï¼2030 åæçç å读"); |
| | | tag.ssxè¾é线.s2020.wæçç = tag.ssxè¾é线.s2020.Ræçç ; |
| | | tag.ssxè¾é线.s2020.wTaskNo = 20202030; |
| | | tag.ssxè¾é线.s2020.wEbit = 2030; |
| | | tag.ssxè¾é线.s2020.wæçç = tag.ssxè¾é线.s2020.Ræçç ; |
| | | LogHelper.Info($"2020 > 2030 SSXä»»å¡ä¸å宿ã"); |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | if (!string.IsNullOrEmpty(tag.ssxè¾é线.s2013.Ræçç )) |
| | | { |
| | | var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/224", JsonConvert.SerializeObject(new |
| | |
| | | if (strr.success && strr.data.materialCode == task.S_INDEX) |
| | | { |
| | | LogHelper.Info($"2013 è¯»å°æç{tag.ssxè¾é线.s2013.Ræçç } å¹é
æåï¼åä»»å¡å·ï¼20132030ï¼ç»ç¹ï¼2030 åæçç å读"); |
| | | tag.ssxè¾é线.s2013.wæçç = tag.ssxè¾é线.s2013.Ræçç ; |
| | | tag.ssxè¾é线.s2013.wTaskNo = 20132030; |
| | | tag.ssxè¾é线.s2013.wEbit = 2030; |
| | | tag.ssxè¾é线.s2013.wæçç = tag.ssxè¾é线.s2013.Ræçç ; |
| | | LogHelper.Info($"2013 > 2030 SSXä»»å¡ä¸å宿ã"); |
| | | continue; |
| | | } |
| | |
| | | Console.WriteLine($"ip= {ip.ToString()}"); |
| | | new HttpServer(ip.ToString()).HttpServerRun(); |
| | | new TcpServer(ip.ToString()); |
| | | var server = new EnhancedWebSocketServer($"http://{ip.ToString()}:8809/").StartAsync(); |
| | | //var server = new EnhancedWebSocketServer($"http://{ip.ToString()}:8809/").StartAsync(); |
| | | //var client = new WebSocketClient($"http://{ip.ToString()}:8809/").ConnectAsync(); |
| | | break; |
| | | } |