using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using XImagingXhandler.XDAL;
|
using System.IO;
|
using System.Collections.ObjectModel;
|
using System.Xml;
|
using DriverLib.Engine;
|
using System.Web.UI.HtmlControls;
|
|
namespace XCore
|
{
|
/// <summary>
|
/// 工作方法列表业务处理类
|
/// </summary>
|
public class MethodListBll
|
{
|
#region 获取软件包含的方法列表信息集合
|
/// <summary>
|
/// 获取软件包含的方法列表信息集合
|
/// </summary>
|
/// <returns>方法列表信息集合</returns>
|
public ObservableCollection<Method> GetMethodListInfo()
|
{
|
return MethodDB.GetMethodFromdb();
|
}
|
#endregion
|
|
#region 根据当前插入到方法序列中的Index判断,是否循环已经嵌套超过两层
|
public int IsNestOverTwo(int index)
|
{
|
int iResult = 0;
|
return iResult;
|
}
|
#endregion
|
|
#region 根据方法名称获取方法编号
|
/// <summary>
|
/// 根据方法名称获取方法编号
|
/// </summary>
|
/// <param name="methodName">方法中文名</param>
|
/// <returns>方法编号</returns>
|
public int getNumByMethodName(string methodName)
|
{
|
int result = -1;
|
switch(methodName)
|
{
|
case "开始":
|
case "start":
|
return (int)MethodNameEnum.start;
|
case "吸液":
|
case "Method_Aspirate":
|
return (int)MethodNameEnum.aspirate;
|
case "加液":
|
case "Method_Dispense":
|
return (int)MethodNameEnum.dispense;
|
case "备注":
|
case "Method_Remark":
|
return (int)MethodNameEnum.remark;
|
case "文件":
|
case "Method_TransferFile":
|
return (int)MethodNameEnum.transferfile;
|
case "抓板转移":
|
case "Method_GripTransport":
|
return (int)MethodNameEnum.griptransport;
|
case "复位":
|
case "Method_Home":
|
return (int)MethodNameEnum.home;
|
case "混合":
|
case "Method_Mixing":
|
return (int)MethodNameEnum.mixing;
|
case "设置通道":
|
case "Method_SetChannel":
|
return (int)MethodNameEnum.setchannel;
|
case "安装枪头":
|
case "Method_LoadTips":
|
return (int)MethodNameEnum.loadtips;
|
case "卸载枪头":
|
case "Method_UnLoadTips":
|
return (int)MethodNameEnum.unloadtips;
|
case "组合开始":
|
case "组合":
|
case "Method_Group":
|
return (int)MethodNameEnum.group;
|
case "循环开始":
|
case "循环":
|
case "Method_Loop":
|
return (int)MethodNameEnum.loop;
|
case "暂停":
|
case "Method_PauseMove":
|
return (int)MethodNameEnum.pause;
|
case "振荡":
|
case "Method_Shaker":
|
return (int)MethodNameEnum.shaker;
|
case "温控":
|
case "Method_Warmer":
|
return (int)MethodNameEnum.warmer;
|
case "结束":
|
case "Method_End":
|
return (int)MethodNameEnum.end;
|
case "循环结束":
|
case "Method_EndLoop":
|
return (int)MethodNameEnum.endloop;
|
case "组合结束":
|
case "Method_EndGroup":
|
return (int)MethodNameEnum.endgroup;
|
case "拍照":
|
case "Method_TakePhoto":
|
return (int)MethodNameEnum.takephoto;
|
case "挑选":
|
case "Method_Choice":
|
return (int)MethodNameEnum.choice;
|
case "涂布":
|
case "Method_Coating":
|
return (int)MethodNameEnum.coating;
|
case "文件涂布":
|
case "Method_CoatingFile":
|
return (int)MethodNameEnum.coatingfile;
|
case "涂布报告":
|
case "涂布文件输出":
|
case "Method_CoatingReport":
|
return (int)MethodNameEnum.coatingReport;
|
case "设置变量":
|
case "Method_SetVariable":
|
return ((int)MethodNameEnum.setVariable);
|
case "移动夹爪":
|
case "Method_GripMove":
|
return ((int)MethodNameEnum.gripmove);
|
case "数据导入":
|
case "Method_DataImport":
|
return ((int)MethodNameEnum.dataimport);
|
case "数据导出":
|
case "Method_DataExport":
|
return ((int)MethodNameEnum.dataexport);
|
case "超声探测":
|
case "Method_Ultrasonic":
|
return ((int)MethodNameEnum.ultrasonic);
|
case "挑选转板":
|
case "Method_ChoiceTransfer":
|
return ((int)MethodNameEnum.choiceTransfer);
|
case "涂布转板":
|
case "Method_CoatingTransfer":
|
return ((int)MethodNameEnum.coatingTransfer);
|
case "梯度稀释":
|
case "Method_Dilution":
|
return ((int)MethodNameEnum.dilution);
|
|
case "夹爪保持开始":
|
case "夹爪保持":
|
case "Method_HoldingLabware":
|
return (int)MethodNameEnum.holdingLabware;
|
case "夹爪保持结束":
|
case "Method_EndHoldingLabware":
|
return (int)MethodNameEnum.endHoldingLabware;
|
case "变量导入":
|
case "Method_VariableImport":
|
return (int)MethodNameEnum.VariableImport;
|
case "if开始":
|
case "Method_ifStart":
|
return (int)MethodNameEnum.ifStart;
|
case "if结束":
|
case "Method_ifend":
|
return (int)MethodNameEnum.ifEnd;
|
case "else开始":
|
case "Method_elseStart":
|
return (int)MethodNameEnum.elseStart;
|
case "else结束":
|
case "Method_elseend":
|
return (int)MethodNameEnum.elseEnd;
|
case "计时器":
|
case "Method_timer":
|
return (int)MethodNameEnum.timerSet;
|
case "等待":
|
case "Method_waitfor":
|
return (int)MethodNameEnum.waitFor;
|
case "泵加液":
|
case "Method_pumpDispense":
|
return (int)MethodNameEnum.pumpDispense;
|
case "开关盖":
|
case "Method_switchLid":
|
return (int)MethodNameEnum.switchLid;
|
case "文件开关盖移液":
|
case "Method_fileMoveLiquid":
|
return (int)MethodNameEnum.fileMoveLiquid;
|
case "文件转板":
|
case "Method_fileMoveLabware":
|
return (int)MethodNameEnum.fileMoveLabware;
|
case "子方法":
|
case "Method_subMethod":
|
return (int)MethodNameEnum.subMethod;
|
case "计算":
|
case "Method_varCalc":
|
return (int)MethodNameEnum.varCalc;
|
case "文件切胶":
|
case "Method_fileCutGum":
|
return (int)MethodNameEnum.cutGum;
|
}
|
return result;
|
}
|
#endregion
|
|
#region 根据方法编号获取方法名称
|
/// <summary>
|
/// 根据方法编号获取方法名称
|
/// </summary>
|
/// <param name="methodNum">方法编号</param>
|
/// <returns>方法中文名</returns>
|
public string getNameByMethodNum(int methodNum)
|
{
|
string result = "";
|
switch (methodNum)
|
{
|
case (int)MethodNameEnum.start:
|
return "开始";
|
case (int)MethodNameEnum.aspirate:
|
return "吸液";
|
case (int)MethodNameEnum.dispense:
|
return "排液";
|
case (int)MethodNameEnum.remark:
|
return "备注";
|
case (int)MethodNameEnum.transferfile:
|
return "文件";
|
case (int)MethodNameEnum.griptransport:
|
return "抓板转移";
|
case (int)MethodNameEnum.home:
|
return "复位";
|
case (int)MethodNameEnum.mixing:
|
return "混合";
|
case (int)MethodNameEnum.setchannel:
|
return "设置通道";
|
case (int)MethodNameEnum.loadtips:
|
return "安装吸头";
|
case (int)MethodNameEnum.unloadtips:
|
return "卸载吸头";
|
case (int)MethodNameEnum.group:
|
return "组合";
|
case (int)MethodNameEnum.loop:
|
return "开始循环";
|
case (int)MethodNameEnum.pause:
|
return "暂停";
|
case (int)MethodNameEnum.shaker:
|
return "振荡";
|
case (int)MethodNameEnum.warmer:
|
return "温控";
|
case (int)MethodNameEnum.end:
|
return "结束";
|
}
|
return result;
|
}
|
#endregion
|
|
#region 根据工作站内部方法文件的基础路径,获取已经编辑的工作方法文件名称集合
|
public List<string> GenerateMethodNamesByBaseMethodPath(string basePath)
|
{
|
List<string> result = new List<string>();
|
string[] files = Directory.GetFiles(basePath);
|
foreach(string file in files)
|
{
|
string fileName=file.Substring(file.LastIndexOf('\\')+1,file.Length - file.LastIndexOf('\\')-5);
|
result.Add(fileName);
|
}
|
|
return result;
|
}
|
#endregion
|
|
public DataCheckResult CheckWorkFlow(XmlDocument xmlDocument)
|
{
|
DataCheckResult dataCheckResult = new DataCheckResult();
|
dataCheckResult.result = 0;
|
//方法
|
XmlNodeList xmlNodeMethodList = xmlDocument.SelectNodes("root/method[@id>=1]");
|
|
//清空方法列表
|
for (int n = 0; n < xmlNodeMethodList.Count; n++)
|
{
|
|
string MethodName = xmlNodeMethodList[n].SelectSingleNode("name").InnerText;
|
string id = xmlNodeMethodList[n].Attributes["id"].Value.ToString();
|
|
int iNum = getNumByMethodName(MethodName);
|
switch (iNum)
|
{
|
case (int)MethodNameEnum.start:
|
if (xmlNodeMethodList[n].SelectSingleNode("status").InnerText == "enable")
|
{
|
}
|
break;
|
case (int)MethodNameEnum.aspirate:
|
if (xmlNodeMethodList[n].SelectSingleNode("status").InnerText == "enable")
|
{
|
}
|
break;
|
case (int)MethodNameEnum.dispense:
|
if (xmlNodeMethodList[n].SelectSingleNode("status").InnerText == "enable")
|
{
|
}
|
break;
|
case (int)MethodNameEnum.end:
|
if (xmlNodeMethodList[n].SelectSingleNode("status").InnerText == "enable")
|
{
|
}
|
break;
|
case (int)MethodNameEnum.endgroup:
|
if (xmlNodeMethodList[n].SelectSingleNode("status").InnerText == "enable")
|
{
|
}
|
break;
|
case (int)MethodNameEnum.endloop:
|
//if (xmlNodeMethodList[n].SelectSingleNode("status").InnerText == "enable")
|
{
|
}
|
break;
|
case (int)MethodNameEnum.griptransport:
|
if (xmlNodeMethodList[n].SelectSingleNode("status").InnerText == "enable")
|
{
|
}
|
break;
|
case (int)MethodNameEnum.group:
|
if (xmlNodeMethodList[n].SelectSingleNode("status").InnerText == "enable")
|
{
|
}
|
break;
|
case (int)MethodNameEnum.home:
|
if (xmlNodeMethodList[n].SelectSingleNode("status").InnerText == "enable")
|
{
|
}
|
break;
|
case (int)MethodNameEnum.loadtips:
|
if (xmlNodeMethodList[n].SelectSingleNode("status").InnerText == "enable")
|
{
|
LoadTipsBll loadTipsBll = new LoadTipsBll();
|
DataCheckResult dataCheckResult1 = loadTipsBll.CheckProperty(xmlNodeMethodList[n]);
|
if(dataCheckResult1.result== 1)
|
{
|
dataCheckResult.result = 1;
|
dataCheckResult.errorlist = dataCheckResult1.errorlist;
|
return dataCheckResult;
|
}
|
}
|
break;
|
case (int)MethodNameEnum.loop:
|
if (xmlNodeMethodList[n].SelectSingleNode("status").InnerText == "enable")
|
{
|
}
|
break;
|
case (int)MethodNameEnum.mixing:
|
if (xmlNodeMethodList[n].SelectSingleNode("status").InnerText == "enable")
|
{
|
}
|
break;
|
case (int)MethodNameEnum.pause:
|
if (xmlNodeMethodList[n].SelectSingleNode("status").InnerText == "enable")
|
{
|
}
|
break;
|
case (int)MethodNameEnum.remark:
|
if (xmlNodeMethodList[n].SelectSingleNode("status").InnerText == "enable")
|
{
|
}
|
break;
|
case (int)MethodNameEnum.transferfile:
|
if (xmlNodeMethodList[n].SelectSingleNode("status").InnerText == "enable")
|
{
|
}
|
break;
|
case (int)MethodNameEnum.unloadtips:
|
if (xmlNodeMethodList[n].SelectSingleNode("status").InnerText == "enable")
|
{
|
}
|
break;
|
case (int)MethodNameEnum.setVariable:
|
if (xmlNodeMethodList[n].SelectSingleNode("status").InnerText == "enable")
|
{
|
}
|
break;
|
}
|
}
|
|
return dataCheckResult;
|
}
|
|
}
|
}
|