Files
01-Siyuan-MesProject/MisData_3.0_2022.08.23.1622.LLX/MisData/MisDataChange/MesData.MisDataChange.cs
2026-05-29 10:07:05 +08:00

248 lines
9.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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();
/// <summary>
/// MesServerFunction
/// </summary>
/// <param name="OpName"></param>
/// <param name="tagValue"></param>
/// <param name="fun"></param>
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");
}
}
/// <summary>
/// 根据工位号获取MesServerCode
/// </summary>
/// <param name="OpName"></param>
/// <returns></returns>
private static int GetMesServerCodeByOpName(string OpName)
{
try
{
if (hashtable_MesServerCode.ContainsKey(OpName))
{
return Convert.ToInt32(hashtable_MesServerCode[OpName]);
}
return 0;
}
catch
{
return 0;
}
}
/// <summary>
/// 根据工位号获取MesServerDll
/// </summary>
/// <param name="OpName"></param>
/// <returns></returns>
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 "";
}
}
}
}