using OpcData; using System; using SystemFramework; using System.Threading; using System.Collections; using System.Collections.Specialized; using DataLinkMesWork; namespace MisDataName { //public partial class ___ { } public partial class MisData { // private void TagData_MisData_TagDataOnChangeCustomeEvetnArgs(object msgEvent) { lock (locker) { try { CustomeEvetnArgs e = (CustomeEvetnArgs)msgEvent; string OpName = e.OpName.ToString();//工位号 string MesCode = e.TagType.ToString();//变量类型代码 object tagValue = e.TagValue;//变量(0或者1) string cmd = ""; cmd = MesDataFunction.OpcOperation.hashtable_TagTypeTagName[MesCode]; string mesServerdllName; mesServerdllName = GetMesServeDllByOpName(OpName); //DoWhatPlc.ReturnValueString rv = //new DoWhatPlc.ReturnValueString(e.TagID.ToString(), e.TagValue.ToString(), e.OpName.ToString(), e.TagValueType.ToString(), e.TagType.ToString(), e.TagKeepTime.ToString(), mesServerdllName, fun, mesServerCode.ToString("00")); //string rvMsg = Newtonsoft.Json.JsonConvert.SerializeObject(rv); //if (MesCode == "0") return; string fun = "fun_" + cmd; int mesServerCode; mesServerCode = GetMesServerCodeByOpName(OpName); string rvMsg = Newtonsoft.Json.JsonConvert.SerializeObject(e); string msg; if (cmd == null) { //DoWhatPlc.ReturnValueString rv = //new DoWhatPlc.ReturnValueString(e.TagID.ToString(), e.TagValue.ToString(), e.OpName.ToString(), e.TagTypeCodeID.ToString(), e.TagTypeID.ToString(), e.TagKeepTime.ToString(), mesServerdllName, fun, mesServerCode.ToString("00"), //e.TimeStamp, e.TimeStampBefore, e.TagValueBefore.ToString(), e.TagName.ToString(), e.ItemName.ToString(), e.ShaftID.ToString(), e.TagOrderBy.ToString()); //string rvMsg = Newtonsoft.Json.JsonConvert.SerializeObject(rv); cmd = MesCode; msg = $"PLC|{cmd}|{OpName}|{rvMsg}"; } else { //if (Convert.ToInt32(MesDataFunction.OpcOperation.hashtable_MesTagTypeChange[cmd]) == 0 && MesDataFunction.OpcOperation.hashtable_MesTagTypeChange[cmd] != null) return; //DoWhatPlc.ReturnValueString rv = //new DoWhatPlc.ReturnValueString(e.TagID.ToString(), e.TagValue.ToString(), e.OpName.ToString(), e.TagTypeCodeID.ToString(), e.TagTypeID.ToString(), e.TagKeepTime.ToString(), mesServerdllName, fun, mesServerCode.ToString("00"), //e.TimeStamp, e.TimeStampBefore, e.TagValueBefore.ToString(), e.TagName.ToString(), e.ItemName.ToString(), e.ShaftID.ToString(), e.TagOrderBy.ToString()); ////DoWhatPlc.ReturnValueString rv = ////new DoWhatPlc.ReturnValueString(e.TagID.ToString(), e.TagValue.ToString(), e.OpName.ToString(), e.TagValueType.ToString(), e.TagType.ToString(), e.TagKeepTime.ToString(), mesServerdllName, fun, mesServerCode.ToString("00")); //string rvMsg = Newtonsoft.Json.JsonConvert.SerializeObject(rv); msg = $"PLC|{cmd}|{OpName}|{rvMsg}"; //MesServerWork.MIS_BASE.asyncSendMessagePLC(mesServerdllName, msg); //MesServerFunction(OpName, tagValue, fun); } MesServerWork.MIS_BASE.asyncSendMessagePLC(mesServerdllName, msg,OpName); } catch (Exception err) { ApplicationLog.WriteLog(err, "TagData_Lable_TagDataOnChange"); } } } //private void TagData_MisData_TagDataOnChange(object msgEvent) //{ // lock (locker) // { // try // { // CustomeEvetnArgs e = (CustomeEvetnArgs)msgEvent; // string OpName = e.OpName.ToString();//工位号 // string MesCode = e.TagType.ToString();//变量类型代码 // object tagValue = e.TagValue;//变量(0或者1) // string cmd = ""; // cmd = MesDataFunction.OpcOperation.hashtable_TagTypeTagName[MesCode]; // string mesServerdllName; // mesServerdllName = GetMesServeDllByOpName(OpName); // //DoWhatPlc.ReturnValueString rv = // //new DoWhatPlc.ReturnValueString(e.TagID.ToString(), e.TagValue.ToString(), e.OpName.ToString(), e.TagValueType.ToString(), e.TagType.ToString(), e.TagKeepTime.ToString(), mesServerdllName, fun, mesServerCode.ToString("00")); // //string rvMsg = Newtonsoft.Json.JsonConvert.SerializeObject(rv); // //if (MesCode == "0") return; // string fun = "fun_" + cmd; // int mesServerCode; // mesServerCode = GetMesServerCodeByOpName(OpName); // if (cmd == null) // { // string rvMsg = Newtonsoft.Json.JsonConvert.SerializeObject(e); // cmd = MesCode; // string msg = $"PLC|{cmd}|{OpName}|{rvMsg}"; // MesServerWork.MIS_BASE.asyncSendMessagePLC(mesServerdllName, msg, OpName); // } // else // { // string rvMsg = Newtonsoft.Json.JsonConvert.SerializeObject(e); // string msg = $"PLC|{cmd}|{OpName}|{rvMsg}"; // MesServerWork.MIS_BASE.asyncSendMessagePLC(mesServerdllName, msg, OpName); // //MesServerFunction(OpName, tagValue, fun); // } // } // catch (Exception err) // { // ApplicationLog.WriteLog(err, "TagData_Lable_TagDataOnChange"); // } // } //} static object locker = new object(); /// /// MesServerFunction /// /// /// /// private static void MesServerFunction(string OpName, object tagValue,string fun) { try { string ResultOK = ""; int mesServerCode; mesServerCode = GetMesServerCodeByOpName(OpName); string mesServerdllName; mesServerdllName = GetMesServeDllByOpName(OpName); OpcData.CustomeEvetnArgs e = new OpcData.CustomeEvetnArgs(); e.OpName = OpName; e.TagValue = tagValue; object[] Paramsters = new object[1]; Paramsters[0] = e; System.Reflection.Assembly assembly; //自动工位不调用function if (mesServerCode == 0) { return; } bool IsOK=false; lock (locker) { IsOK= MesDataFunction.OpcOperation.Hashtable_assembly.ContainsKey(mesServerdllName); } if (IsOK) { assembly = (System.Reflection.Assembly)MesDataFunction.OpcOperation.Hashtable_assembly[mesServerdllName]; } else { assembly = System.Reflection.Assembly.Load(mesServerdllName); if (assembly == null) { return; } MesDataFunction.OpcOperation.Hashtable_assembly.Add(mesServerdllName, assembly); } ResultOK = Reflection.ReflectionMethod(assembly, "MesServerFunctions", "Functions_BASE_" + mesServerCode.ToString("00"), fun, Paramsters); if (ResultOK != "ok") { // ApplicationLog.WriteLog("ReflectionMethod is Error:" + OpName + fun + ResultOK); } } catch (Exception err) { ApplicationLog.WriteLog(err, "MesServerFunction"); } } /// /// 根据工位号获取MesServerCode /// /// /// private static int GetMesServerCodeByOpName(string OpName) { try { if (hashtable_MesServerCode.ContainsKey(OpName)) { return Convert.ToInt32(hashtable_MesServerCode[OpName]); } return 0; } catch { return 0; } } /// /// 根据工位号获取MesServerDll /// /// /// private static string GetMesServeDllByOpName(string OpName) { try { if (hashtable_MesDll.ContainsKey(OpName)) { return hashtable_MesDll[OpName].ToString(); } return ""; } catch (Exception err) { ApplicationLog.WriteLog(err, "GetMesServeDllByOpName"); return ""; } } } }