using DataEntity.Device; using DataEntity.Share; using HxEnum; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Data; using System.IO; using System.Linq; using System.Text.RegularExpressions; using System.Xml; using System.Xml.Linq; using XCommon.Log; using XImagingXhandler.XDAL; using DataEntity; namespace XCommon.Xml { public class XmlHelper { public XmlDocument xmlDoc = new XmlDocument(); XmlElement root; #region 创建xml头部节点框架 public void CreateXMLHeader() { XmlDeclaration dec = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", null); xmlDoc.AppendChild(dec); // root = xmlDoc.CreateElement("root"); xmlDoc.AppendChild(root); } #endregion #region 创建xml台面布局环境 /// /// 创建xml台面布局环境 /// /// 台面布局数据集合 public void CreateEnvironmentPlatformXmlNode(List latticeRSLabwares) { XmlElement xeKey = xmlDoc.CreateElement("env");//创建子节点,并且设置子节点的属性 foreach (LatticeRSLabware lr in latticeRSLabwares) { XmlElement xeformX = xmlDoc.CreateElement("platform"); XmlElement xeformX1 = xmlDoc.CreateElement("lattice_id"); xeformX1.InnerText = lr.lattice_id; xeformX.AppendChild(xeformX1); foreach (LabwareOnLattice l in lr.labwareOnLattices) { xeformX1 = xmlDoc.CreateElement("labware"); XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = l.level.ToString(); xeformX1.SetAttributeNode(xeType); xeformX.AppendChild(xeformX1); XmlElement xeformN1 = xmlDoc.CreateElement("labware_id"); xeformN1.InnerText = l.labware_id; xeformX1.AppendChild(xeformN1); xeformN1 = xmlDoc.CreateElement("labware_sname"); xeformN1.InnerText = l.labware_sname; xeformX1.AppendChild(xeformN1); xeformN1 = xmlDoc.CreateElement("labware_barcode"); xeformN1.InnerText = l.labware_barcode; xeformX1.AppendChild(xeformN1); xeformN1 = xmlDoc.CreateElement("labware_withlid"); xeformN1.InnerText = l.labware_withlid; xeformX1.AppendChild(xeformN1); // 如果是Tip盒子、孔板的话,则该节点有值,否则为空 string validWells = this.SortWellNameByColumn(l.labware_tipwells); xeformN1 = xmlDoc.CreateElement("allValidWells"); // 所有有效孔位 xeformN1.InnerText = validWells; xeformX1.AppendChild(xeformN1); xeformN1 = xmlDoc.CreateElement("residueValidWells"); // 剩余有效孔位 xeformN1.InnerText = validWells; xeformX1.AppendChild(xeformN1); //判断是否有孔位设置了液体,如果有则增加节点保存 foreach (PlateWellsLiquidData p in l.plateWellsLiquidData) { XmlElement xeformX2 = xmlDoc.CreateElement("platewell"); xeformX1.AppendChild(xeformX2); XmlElement xeformX3 = xmlDoc.CreateElement("liquidTypeID"); xeformX3.InnerText = p.liquidTypeID; xeformX2.AppendChild(xeformX3); xeformX3 = xmlDoc.CreateElement("liquidTypeName"); xeformX3.InnerText = p.liquidTypeName; xeformX2.AppendChild(xeformX3); xeformX3 = xmlDoc.CreateElement("nIndex"); xeformX3.InnerText = p.nIndex.ToString(); xeformX2.AppendChild(xeformX3); xeformX3 = xmlDoc.CreateElement("nVolume"); xeformX3.InnerText = p.nVolume.ToString(); xeformX2.AppendChild(xeformX3); xeformX3 = xmlDoc.CreateElement("wells"); xeformX3.InnerText = p.wells.ToString(); xeformX2.AppendChild(xeformX3); } } xeKey.AppendChild(xeformX); } root.AppendChild(xeKey);//挂载父节点 } #endregion #region 孔位名称按列排序 /// /// 孔位名称按列排序 /// /// 待排序的孔名字符串 /// public string SortWellNameByColumn(string strWells) { string strings = string.Empty; if (!string.IsNullOrEmpty(strWells)) { string[] strings1 = strWells.Split(','); for (int i = 1; i < 24 + 1; i++) { for (int j = 1; j < 16 + 1; j++) { string columnChar = ComUtility.GetRowChar(j - 1); string value = columnChar + i; if (strings1.Contains(value)) { strings += value + ","; } } } if (strings.Length > 1) { strings = strings.Substring(0, strings.Length - 1); } } return strings; } #endregion #region 孔位名称按行排序 /// /// 孔位名称按行排序 /// /// 待排序的孔名字符串 /// public string SortWellNameByRow(string strWells) { string strings = string.Empty; if (!string.IsNullOrEmpty(strWells)) { string[] strings1 = strWells.Split(','); for (int i = 1; i < 16 + 1; i++) { string columnChar = ComUtility.GetRowChar(i - 1); for (int j = 1; j < 24 + 1; j++) { string value = columnChar + j; if (strings1.Contains(value)) { strings += value + ","; } } } strings = strings.Substring(0, strings.Length - 1); } return strings; } #endregion #region 创建开始的xml public void CreateStartXmlNode(MethodStart methodStart,MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = "1"; xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = "start"; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = "start"; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun;// "运行起点"; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); xeformX.InnerText = "1"; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); xeformX.InnerText = methodStart.status; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("usehepa"); xeformX.InnerText = methodStart.useHEPA.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("isreset"); xeformX.InnerText = methodStart.isReset.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("isCheckTakePhotoPlate"); xeformX.InnerText = methodStart.isCheckTakePhotoPlate.ToString(); xeKey.AppendChild(xeformX); root.AppendChild(xeKey);//挂载父节点 } #endregion #region 创建吸液方法的xml public void CreateAspirateXmlNode(int index, MethodAspirate methodAspirate, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); //xeformX.InnerText = methodAspirate.status; xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodAspirate.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodAspirate.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); //xeformX.InnerText = methodAspirate.strIndex; xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("labware"); xeKey.AppendChild(xeformX); XmlElement xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodAspirate.labwareText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodAspirate.labwareValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("position"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodAspirate.positionText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodAspirate.positionValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("arm"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodAspirate.armText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodAspirate.armValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("headType"); xeformX.InnerText = methodAspirate.headType.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("labwaretip"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodAspirate.labwaretipText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodAspirate.labwaretipValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("channels"); string chs = string.Empty; if (methodAspirate.channels.Length != 0) { for (int i = 0; i < methodAspirate.channels.Length; i++) { chs += methodAspirate.channels[i] + ","; } chs = chs.Substring(0, chs.Length - 1); } xeformX.InnerText = chs; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("wellarray"); xeformX.InnerText = methodAspirate.wellarray; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("enableSingleWellvolume"); xeformX.InnerText = methodAspirate.enableSingleWellvolume.ToString(); xeKey.AppendChild(xeformX); foreach (DropdownName d in methodAspirate.singlewellvolume) { xeformX = xmlDoc.CreateElement("SingleWellvolume"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("channel"); xeformX1.InnerText = d.dropdown_id.ToString(); xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = d.dropdown_name.ToString(); xeformX.AppendChild(xeformX1); } xeformX = xmlDoc.CreateElement("wellvolume"); xeformX.InnerText = methodAspirate.wellvolume.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidid"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodAspirate.liquididText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodAspirate.liquididValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("liquidrangeid"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodAspirate.liquidrangeidText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodAspirate.liquidrangeidValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("liquidpid"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodAspirate.liquidpidText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodAspirate.liquidpidValue; xeformX.AppendChild(xeformX1); #region 混合 xeformX = xmlDoc.CreateElement("enableMix"); xeformX.InnerText = methodAspirate.bMix.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("enableMultiMix"); xeformX.InnerText = methodAspirate.bMultiMix.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("mixvolume"); xeformX.InnerText = methodAspirate.mixvolume.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("mixcount"); xeformX.InnerText = methodAspirate.mixcount.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("mixAspiratePosition"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodAspirate.mixAspiratePositionText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodAspirate.mixAspiratePositionValue.ToString(); xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("mixAspirateDistance"); xeformX.InnerText = methodAspirate.mixAspirateDistance.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("mixAspirateSpeed"); xeformX.InnerText = methodAspirate.mixAspirateSpeed.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("mixDispensePosition"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodAspirate.mixDispensePositionText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodAspirate.mixDispensePositionValue.ToString(); xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("mixDispenseDistance"); xeformX.InnerText = methodAspirate.mixDispenseDistance.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("mixDispenseSpeed"); xeformX.InnerText = methodAspirate.mixDispenseSpeed.ToString(); xeKey.AppendChild(xeformX); #endregion #region 液面探测 xeformX = xmlDoc.CreateElement("enableLiquidSensor"); xeformX.InnerText = methodAspirate.enableLiquidSensor.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidSensorCount"); xeformX.InnerText = methodAspirate.liquidSensorCount.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidSensorDistance"); xeformX.InnerText = methodAspirate.liquidSensorDistance.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidSensorEndDistance"); xeformX.InnerText = methodAspirate.liquidSensorEndDistance.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidSensorSpeed"); xeformX.InnerText = methodAspirate.liquidSensorSpeed.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidSensorRadio"); xeformX.InnerText = methodAspirate.liquidSensorRadio.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidSensorDisId"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodAspirate.liquidSensorDisIdText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodAspirate.liquidSensorDisIdValue.ToString(); xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("enableLiquidFollow"); xeformX.InnerText = methodAspirate.enableLiquidFollow.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidFollowType"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodAspirate.liquidFollowTypeName.ToString(); xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodAspirate.liquidFollowType.ToString(); xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("liquidFollowSpeed"); xeformX.InnerText = methodAspirate.liquidFollowSpeed.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidFollowDistance"); xeformX.InnerText = methodAspirate.liquidFollowDistance.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidFollowArea"); xeformX.InnerText = methodAspirate.liquidFollowArea.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("enableMixFollow"); xeformX.InnerText = methodAspirate.enableMixFollow.ToString(); xeKey.AppendChild(xeformX); #endregion #region 堵塞探测 xeformX = xmlDoc.CreateElement("enableSensorBlock"); xeformX.InnerText = methodAspirate.enableSensorBlock.ToString(); xeKey.AppendChild(xeformX); //xeformX = xmlDoc.CreateElement("liquidSensorBlockDistance"); //xeformX.InnerText = methodAspirate.liquidSensorBlockDistance.ToString(); //xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("aspirateBlockDisId"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodAspirate.aspirateBlockDisIdText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodAspirate.aspirateBlockDisIdValue.ToString(); xeformX.AppendChild(xeformX1); #endregion #region 吸空 xeformX = xmlDoc.CreateElement("aspirateAirDisId"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodAspirate.aspirateAirDisIdText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodAspirate.aspirateAirDisIdValue.ToString(); xeformX.AppendChild(xeformX1); #endregion root.AppendChild(xeKey);//挂载父节点 } #endregion #region 创建排液方法的xml public void CreateDispenseXmlNode(int index, MethodDispense methodDispense, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); //xeformX.InnerText = methodDispense.status; xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodDispense.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodDispense.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); //xeformX.InnerText = methodDispense.strIndex; xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("labware"); xeKey.AppendChild(xeformX); XmlElement xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodDispense.labwareText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodDispense.labwareValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("position"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodDispense.positionText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodDispense.positionValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("arm"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodDispense.armText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodDispense.armValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("headType"); xeformX.InnerText = methodDispense.headType; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("labwaretip"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodDispense.labwaretipText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodDispense.labwaretipValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("channels"); string chs = string.Empty; if (methodDispense.channels.Length != 0) { for (int i = 0; i < methodDispense.channels.Length; i++) { chs += methodDispense.channels[i] + ","; } chs = chs.Substring(0, chs.Length - 1); } xeformX.InnerText = chs; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("wellarray"); xeformX.InnerText = methodDispense.wellarray; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("enableSingleWellvolume"); xeformX.InnerText = methodDispense.enableSingleWellvolume.ToString(); xeKey.AppendChild(xeformX); foreach (DropdownName d in methodDispense.singlewellvolume) { xeformX = xmlDoc.CreateElement("SingleWellvolume"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("channel"); xeformX1.InnerText = d.dropdown_id.ToString(); xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = d.dropdown_name.ToString(); xeformX.AppendChild(xeformX1); } xeformX = xmlDoc.CreateElement("wellvolume"); xeformX.InnerText = methodDispense.wellvolume.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("isNull"); xeformX.InnerText = methodDispense.isNull.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidid"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodDispense.liquididText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodDispense.liquididValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("liquidrangeid"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodDispense.liquidrangeidText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodDispense.liquidrangeidValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("liquidpid"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodDispense.liquidpidText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodDispense.liquidpidValue; xeformX.AppendChild(xeformX1); #region 混合 xeformX = xmlDoc.CreateElement("enableMix"); xeformX.InnerText = methodDispense.bMix.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("enableMultiMix"); xeformX.InnerText = methodDispense.bMultiMix.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("mixvolume"); xeformX.InnerText = methodDispense.mixvolume.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("mixcount"); xeformX.InnerText = methodDispense.mixcount.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("mixAspiratePosition"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodDispense.mixAspiratePositionText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodDispense.mixAspiratePositionValue.ToString(); xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("mixAspirateDistance"); xeformX.InnerText = methodDispense.mixAspirateDistance.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("mixAspirateSpeed"); xeformX.InnerText = methodDispense.mixAspirateSpeed.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("mixDispensePosition"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodDispense.mixDispensePositionText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodDispense.mixDispensePositionValue.ToString(); xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("mixDispenseDistance"); xeformX.InnerText = methodDispense.mixDispenseDistance.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("mixDispenseSpeed"); xeformX.InnerText = methodDispense.mixDispenseSpeed.ToString(); xeKey.AppendChild(xeformX); #endregion #region 液面探测 xeformX = xmlDoc.CreateElement("enableLiquidSensor"); xeformX.InnerText = methodDispense.enableLiquidSensor.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidSensorCount"); xeformX.InnerText = methodDispense.liquidSensorCount.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidSensorDistance"); xeformX.InnerText = methodDispense.liquidSensorDistance.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidSensorEndDistance"); xeformX.InnerText = methodDispense.liquidSensorEndDistance.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidSensorSpeed"); xeformX.InnerText = methodDispense.liquidSensorSpeed.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidSensorRadio"); xeformX.InnerText = methodDispense.liquidSensorRadio.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidSensorDisId"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodDispense.liquidSensorDisIdText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodDispense.liquidSensorDisIdValue.ToString(); xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("enableLiquidFollow"); xeformX.InnerText = methodDispense.enableLiquidFollow.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidFollowType"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodDispense.liquidFollowTypeName.ToString(); xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodDispense.liquidFollowType.ToString(); xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("liquidFollowSpeed"); xeformX.InnerText = methodDispense.liquidFollowSpeed.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidFollowDistance"); xeformX.InnerText = methodDispense.liquidFollowDistance.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidFollowArea"); xeformX.InnerText = methodDispense.liquidFollowArea.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("enableMixFollow"); xeformX.InnerText = methodDispense.enableMixFollow.ToString(); xeKey.AppendChild(xeformX); #endregion #region 堵塞探测 xeformX = xmlDoc.CreateElement("enableSensorBlock"); xeformX.InnerText = methodDispense.enableSensorBlock.ToString(); xeKey.AppendChild(xeformX); //xeformX = xmlDoc.CreateElement("liquidSensorBlockDistance"); //xeformX.InnerText = methodDispense.liquidSensorBlockDistance.ToString(); //xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("dispenseBlockDisId"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodDispense.dispenseBlockDisIdText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodDispense.dispenseBlockDisIdValue.ToString(); xeformX.AppendChild(xeformX1); #endregion root.AppendChild(xeKey);//挂载父节点 } #endregion #region 创建安装枪头方法的xml public void CreateLoadTipsXmlNode(int index, MethodLoadTips methodLoadTips, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); //xeformX.InnerText = methodLoadTips.status; xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodLoadTips.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); //xeformX.InnerText = methodLoadTips.strIndex; xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodLoadTips.label; xeKey.AppendChild(xeformX); //xeformX = xmlDoc.CreateElement("labware"); //xeKey.AppendChild(xeformX); //XmlElement xeformX1 = xmlDoc.CreateElement("text"); //xeformX1.InnerText = methodLoadTips.labwareText; //xeformX.AppendChild(xeformX1); //xeformX1 = xmlDoc.CreateElement("value"); //xeformX1.InnerText = methodLoadTips.labwareValue; //xeformX.AppendChild(xeformX1); //xeformX = xmlDoc.CreateElement("position"); //xeKey.AppendChild(xeformX); //xeformX1 = xmlDoc.CreateElement("text"); //xeformX1.InnerText = methodLoadTips.positionText; //xeformX.AppendChild(xeformX1); //xeformX1 = xmlDoc.CreateElement("value"); //xeformX1.InnerText = methodLoadTips.positionValue; //xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("arm"); xeKey.AppendChild(xeformX); XmlElement xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodLoadTips.armText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodLoadTips.armValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("channels"); string chs = string.Empty; if (methodLoadTips.channels.Length != 0) { for (int i = 0; i < methodLoadTips.channels.Length; i++) { chs += methodLoadTips.channels[i] + ","; } chs = chs.Substring(0, chs.Length - 1); } xeformX.InnerText = chs; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("labwaretip"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodLoadTips.labwaretipText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodLoadTips.labwaretipValue; xeformX.AppendChild(xeformX1); //xeformX = xmlDoc.CreateElement("wellarray"); //xeformX.InnerText = methodLoadTips.wellarray; //xeKey.AppendChild(xeformX); root.AppendChild(xeKey);//挂载父节点 } #endregion #region 创建卸载枪头方法的xml public void CreateUnloadTipsXmlNode(int index, MethodUnloadTips methodUnloadTips, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); //xeformX.InnerText = methodUnloadTips.status; xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodUnloadTips.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodUnloadTips.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); //xeformX.InnerText = methodUnloadTips.strIndex; xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); //xeformX = xmlDoc.CreateElement("labware"); //xeKey.AppendChild(xeformX); //XmlElement xeformX1 = xmlDoc.CreateElement("text"); //xeformX1.InnerText = methodUnloadTips.labwareText; //xeformX.AppendChild(xeformX1); //xeformX1 = xmlDoc.CreateElement("value"); //xeformX1.InnerText = methodUnloadTips.labwareValue; //xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("position"); xeKey.AppendChild(xeformX); XmlElement xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodUnloadTips.positionText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodUnloadTips.positionValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("arm"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodUnloadTips.armText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodUnloadTips.armValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("channels"); string chs = string.Empty; if (methodUnloadTips.channels.Length != 0) { for (int i = 0; i < methodUnloadTips.channels.Length; i++) { chs += methodUnloadTips.channels[i] + ","; } chs = chs.Substring(0, chs.Length - 1); } xeformX.InnerText = chs; xeKey.AppendChild(xeformX); //xeformX = xmlDoc.CreateElement("labwaretip"); //xeKey.AppendChild(xeformX); //xeformX1 = xmlDoc.CreateElement("text"); //xeformX1.InnerText = methodUnloadTips.labwaretipText; //xeformX.AppendChild(xeformX1); //xeformX1 = xmlDoc.CreateElement("value"); //xeformX1.InnerText = methodUnloadTips.labwaretipValue; //xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("isputToSource"); xeformX.InnerText = methodUnloadTips.isputToSource.ToString(); xeKey.AppendChild(xeformX); root.AppendChild(xeKey);//挂载父节点 } #endregion #region 创建泵加液方法的xml public void CreatePumpDispenseXmlNode(int index, MethodPumpDispese methodPumpDispese, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); //xeformX.InnerText = methodAspirate.status; xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodPumpDispese.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodPumpDispese.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); //xeformX.InnerText = methodAspirate.strIndex; xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("labware"); xeKey.AppendChild(xeformX); XmlElement xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodPumpDispese.labwareText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodPumpDispese.labwareValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("position"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodPumpDispese.positionText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodPumpDispese.positionValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("arm"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodPumpDispese.armText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodPumpDispese.armValue; xeformX.AppendChild(xeformX1); //xeformX = xmlDoc.CreateElement("headType"); //xeformX.InnerText = methodPumpDispese.headType.ToString(); //xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("wellarray"); xeformX.InnerText = methodPumpDispese.wellarray; xeKey.AppendChild(xeformX); foreach (Pump pump in methodPumpDispese.pumpParams) { xeformX = xmlDoc.CreateElement("pump"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("name"); xeformX1.InnerText = pump.name.ToString(); xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("volume"); xeformX1.InnerText = pump.volume.ToString(); xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("liquidid"); xeformX.AppendChild(xeformX1); XmlElement xeformX2 = xmlDoc.CreateElement("text"); xeformX2.InnerText = pump.liquidText; xeformX1.AppendChild(xeformX2); xeformX2 = xmlDoc.CreateElement("value"); xeformX2.InnerText = pump.liquidValue; xeformX1.AppendChild(xeformX2); xeformX1 = xmlDoc.CreateElement("liquidrangeid"); xeformX.AppendChild(xeformX1); xeformX2 = xmlDoc.CreateElement("text"); xeformX2.InnerText = pump.liquidRSText; xeformX1.AppendChild(xeformX2); xeformX2 = xmlDoc.CreateElement("value"); xeformX2.InnerText = pump.liquidRSValue; xeformX1.AppendChild(xeformX2); xeformX1 = xmlDoc.CreateElement("liquidtypeid"); xeformX.AppendChild(xeformX1); xeformX2 = xmlDoc.CreateElement("text"); xeformX2.InnerText = pump.liquidTypeText; xeformX1.AppendChild(xeformX2); xeformX2 = xmlDoc.CreateElement("value"); xeformX2.InnerText = pump.liquidTypeValue; xeformX1.AppendChild(xeformX2); } root.AppendChild(xeKey);//挂载父节点 } #endregion #region 创建振荡方法的xml public void CreateShakeXmlNode(int index, MethodShake methodShake, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); //xeformX.InnerText = methodAspirate.status; xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodShake.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodShake.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); //xeformX.InnerText = methodShake.strIndex; xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("modeVal"); xeformX.InnerText = methodShake.modeVal.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("shakeSpeed"); xeformX.InnerText = methodShake.shakeSpeed.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("shakeDuringTime"); xeformX.InnerText = methodShake.shakeDuringTime.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("shakeMoveSpeed"); xeformX.InnerText = methodShake.shakeMoveSpeed.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("shakeMoveAngle"); xeformX.InnerText = methodShake.shakeMoveAngle.ToString(); xeKey.AppendChild(xeformX); root.AppendChild(xeKey);//挂载父节点 } #endregion #region 创建开关盖方法的xml public void CreateSwitchLidXmlNode(int index, MethodSwitchLid methodSwitchLid, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); //xeformX.InnerText = methodAspirate.status; xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodSwitchLid.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodSwitchLid.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); //xeformX.InnerText = methodAspirate.strIndex; xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("labware"); xeKey.AppendChild(xeformX); XmlElement xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodSwitchLid.labwareText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodSwitchLid.labwareValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("position"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodSwitchLid.positionText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodSwitchLid.positionValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("arm"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodSwitchLid.armText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodSwitchLid.armValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("wellarray"); xeformX.InnerText = methodSwitchLid.wellarray; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("switchState"); xeformX.InnerText = methodSwitchLid.switchState.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("switchSpeed"); xeformX.InnerText = methodSwitchLid.switchSpeed.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("numOfCircle"); xeformX.InnerText = methodSwitchLid.numOfCircle.ToString(); xeKey.AppendChild(xeformX); root.AppendChild(xeKey);//挂载父节点 } #endregion #region 创建设置通道方法的xml public void CreateSetChannelXmlNode(int index, MethodSetChannel methodSetChannel, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); //xeformX.InnerText = methodSetChannel.status; xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodSetChannel.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodSetChannel.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("arm"); xeKey.AppendChild(xeformX); XmlElement xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodSetChannel.armText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodSetChannel.armValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("labwaretip"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodSetChannel.labwaretipText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodSetChannel.labwaretipValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("ChannelArray"); xeformX.InnerText = methodSetChannel.ChannelText; xeKey.AppendChild(xeformX); root.AppendChild(xeKey);//挂载父节点 } #endregion #region 创建循环方法的xml public void CreateLoopXmlNode(int index, MethodLoop methodLoop, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); //xeformX.InnerText = methodLoop.status; xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodLoop.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); //xeformX.InnerText = methodLoop.strIndex; xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("endIndex"); xeformX.InnerText = methodLoop.endIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodLoop.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("variableName"); xeformX.InnerText = methodLoop.variableName; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("variablesValue"); xeformX.InnerText = methodLoop.variablesValue; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("variableeValue"); xeformX.InnerText = methodLoop.variableeValue; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("incrementValue"); xeformX.InnerText = methodLoop.incrementValue; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("content"); xeformX.InnerText = methodLoop.content; xeKey.AppendChild(xeformX); root.AppendChild(xeKey);//挂载父节点 } #endregion #region 创建循环结束的xml public void CreateEndLoopXmlNode(int index, string strIndex) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = "Method_EndLoop"; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); xeformX.InnerText = strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = "Method_EndLoop"; xeKey.AppendChild(xeformX); //xeformX = xmlDoc.CreateElement("id"); //xeformX.InnerText = endIndex.ToString(); //xeKey.AppendChild(xeformX); root.AppendChild(xeKey);//挂载父节点 } #endregion #region 创建组合的xml public void CreateGroupXmlNode(int index, MethodCombination methodCombination, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); //xeformX.InnerText = methodCombination.status; xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodCombination.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodCombination.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); //xeformX.InnerText = methodCombination.strIndex; xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("title"); xeformX.InnerText = methodCombination.title; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("remark"); xeformX.InnerText = methodCombination.remark; xeKey.AppendChild(xeformX); root.AppendChild(xeKey);//挂载父节点 } #endregion #region 创建组合结束的xml public void CreateEndGroupXmlNode(int index, string strIndex) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = "Method_EndGroup"; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); xeformX.InnerText = strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = "Method_EndGroup"; xeKey.AppendChild(xeformX); root.AppendChild(xeKey);//挂载父节点 } #endregion #region 创建文件移液方法的xml public void CreateTransferFileXmlNode(int index, MethodTransferFile methodTransferFile, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); //xeformX.InnerText = methodTransferFile.status; xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodTransferFile.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodTransferFile.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); //xeformX.InnerText = methodTransferFile.strIndex; xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("arm"); xeKey.AppendChild(xeformX); XmlElement xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodTransferFile.armText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodTransferFile.armValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("headType"); xeformX.InnerText = methodTransferFile.headType; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("labwaretip"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodTransferFile.labwaretipText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodTransferFile.labwaretipValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("channels"); string chs = string.Empty; if (methodTransferFile.channels != null) { if (methodTransferFile.channels.Length != 0) { for (int i = 0; i < methodTransferFile.channels.Length; i++) { chs += methodTransferFile.channels[i] + ","; } chs = chs.Substring(0, chs.Length - 1); } } xeformX.InnerText = chs; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("filePath"); xeformX.InnerText = methodTransferFile.filePath; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("beginLine"); xeformX.InnerText = methodTransferFile.beginLine.ToString(); xeKey.AppendChild(xeformX); //DataTable转化成节点 CreateTransferFileDataTable(methodTransferFile, xeKey); xeformX = xmlDoc.CreateElement("sourceLabware"); xeformX.InnerText = methodTransferFile.sourceLabware; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("sourceWell"); xeformX.InnerText = methodTransferFile.sourceWell; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("destinationLabware"); xeformX.InnerText = methodTransferFile.destinationLabware; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("destinationWell"); xeformX.InnerText = methodTransferFile.destinationWell; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("destVolume"); xeformX.InnerText = methodTransferFile.destVolume; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("tipSet"); xeformX.InnerText = methodTransferFile.tipSet; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("changeTipsMode"); xeformX.InnerText = methodTransferFile.changeTipsMode.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("changeToTipText"); xeformX.InnerText = methodTransferFile.changeToTipText; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("changeToTipValue"); xeformX.InnerText = methodTransferFile.changeToTipValue.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("jump0Volume"); xeformX.InnerText = methodTransferFile.jump0Volume.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidid"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodTransferFile.liquididText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodTransferFile.liquididValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("liquidrangeid"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodTransferFile.liquidrangeidText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodTransferFile.liquidrangeidValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("liquidpid"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodTransferFile.liquidpidText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodTransferFile.liquidpidValue; xeformX.AppendChild(xeformX1); #region 混合 xeformX = xmlDoc.CreateElement("enableMix"); xeformX.InnerText = methodTransferFile.bMix.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("mixvolume"); xeformX.InnerText = methodTransferFile.mixvolume.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("mixcount"); xeformX.InnerText = methodTransferFile.mixcount.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("mixAspiratePosition"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodTransferFile.mixAspiratePositionText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodTransferFile.mixAspiratePositionValue.ToString(); xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("mixAspirateDistance"); xeformX.InnerText = methodTransferFile.mixAspirateDistance.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("mixAspirateSpeed"); xeformX.InnerText = methodTransferFile.mixAspirateSpeed.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("mixDispensePosition"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodTransferFile.mixDispensePositionText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodTransferFile.mixDispensePositionValue.ToString(); xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("mixDispenseDistance"); xeformX.InnerText = methodTransferFile.mixDispenseDistance.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("mixDispenseSpeed"); xeformX.InnerText = methodTransferFile.mixDispenseSpeed.ToString(); xeKey.AppendChild(xeformX); #endregion #region 液面探测 xeformX = xmlDoc.CreateElement("enableLiquidSensor"); xeformX.InnerText = methodTransferFile.enableLiquidSensor.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidSensorCount"); xeformX.InnerText = methodTransferFile.liquidSensorCount.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidSensorDistance"); xeformX.InnerText = methodTransferFile.liquidSensorDistance.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidSensorEndDistance"); xeformX.InnerText = methodTransferFile.liquidSensorEndDistance.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidSensorSpeed"); xeformX.InnerText = methodTransferFile.liquidSensorSpeed.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidSensorRadio"); xeformX.InnerText = methodTransferFile.liquidSensorRadio.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidSensorDisId"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodTransferFile.liquidSensorDisIdText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodTransferFile.liquidSensorDisIdValue.ToString(); xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("enableLiquidFollow"); xeformX.InnerText = methodTransferFile.enableLiquidFollow.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidFollowType"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodTransferFile.liquidFollowTypeName.ToString(); xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodTransferFile.liquidFollowType.ToString(); xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("liquidFollowSpeed"); xeformX.InnerText = methodTransferFile.liquidFollowSpeed.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidFollowDistance"); xeformX.InnerText = methodTransferFile.liquidFollowDistance.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidFollowArea"); xeformX.InnerText = methodTransferFile.liquidFollowArea.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("enableMixFollow"); xeformX.InnerText = methodTransferFile.enableMixFollow.ToString(); xeKey.AppendChild(xeformX); #endregion #region 堵塞探测 xeformX = xmlDoc.CreateElement("enableSensorBlock"); xeformX.InnerText = methodTransferFile.enableSensorBlock.ToString(); xeKey.AppendChild(xeformX); //xeformX = xmlDoc.CreateElement("liquidSensorBlockDistance"); //xeformX.InnerText = methodTransferFile.liquidSensorBlockDistance.ToString(); //xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("aspirateBlockDisId"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodTransferFile.aspirateBlockDisIdText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodTransferFile.aspirateBlockDisIdValue.ToString(); xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("dispenseBlockDisId"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodTransferFile.dispenseBlockDisIdText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodTransferFile.dispenseBlockDisIdValue.ToString(); xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("aspirateAirDisId"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodTransferFile.aspirateAirDisIdText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodTransferFile.aspirateAirDisIdValue.ToString(); xeformX.AppendChild(xeformX1); #endregion root.AppendChild(xeKey);//挂载父节点 } #region 判断是否以数字开头,如果是则后台加上前缀T_ public bool NumberStartOfString(string strContent) { bool result = false; Regex regNum = new Regex("^[0-9]"); result= regNum.IsMatch(strContent); return result; } #endregion public void CreateTransferFileDataTable(MethodTransferFile methodTransferFile, XmlElement xeKey) { XmlElement xeformXBase = xmlDoc.CreateElement("transferDataTable"); DataTable dt = methodTransferFile.transferDataTable; if (dt != null) { for (int i = 0; i < dt.Columns.Count; i++) { XmlElement xeformX = xmlDoc.CreateElement("subnode"); XmlAttribute xeType = xmlDoc.CreateAttribute("columnname"); xeType.InnerText = dt.Columns[i].ColumnName.ToString(); xeformX.SetAttributeNode(xeType); xeformXBase.AppendChild(xeformX); for (int j = 0; j < dt.Rows.Count; j++) { XmlElement xeformX1 = xmlDoc.CreateElement("node"); xeformX1.InnerText = dt.Rows[j][i].ToString(); xeformX.AppendChild(xeformX1); } } } xeKey.AppendChild(xeformXBase); } #endregion #region 创建文件开关盖移液方法的xml public void CreateFileMoveLiquidXmlNode(int index, MethodFileMoveLiquid methodFileMoveLiquid, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodFileMoveLiquid.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("comment"); xeformX.InnerText = methodFileMoveLiquid.comment; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodFileMoveLiquid.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("arm"); xeKey.AppendChild(xeformX); XmlElement xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodFileMoveLiquid.armText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodFileMoveLiquid.armValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("headType"); xeformX.InnerText = methodFileMoveLiquid.headType; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("labwaretip"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodFileMoveLiquid.labwaretipText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodFileMoveLiquid.labwaretipValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("channels"); string chs = string.Empty; if (methodFileMoveLiquid.channels != null) { if (methodFileMoveLiquid.channels.Length != 0) { for (int i = 0; i < methodFileMoveLiquid.channels.Length; i++) { chs += methodFileMoveLiquid.channels[i] + ","; } chs = chs.Substring(0, chs.Length - 1); } } xeformX.InnerText = chs; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("filePath"); xeformX.InnerText = methodFileMoveLiquid.filePath; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("beginLine"); xeformX.InnerText = methodFileMoveLiquid.beginLine.ToString(); xeKey.AppendChild(xeformX); //DataTable转化成节点 CreateTransferFileDataTable(methodFileMoveLiquid, xeKey); xeformX = xmlDoc.CreateElement("sourceLabware"); xeformX.InnerText = methodFileMoveLiquid.sourceLabware; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("sourceWell"); xeformX.InnerText = methodFileMoveLiquid.sourceWell; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("aspVolume"); xeformX.InnerText = methodFileMoveLiquid.aspVolume; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("aspOpenLid"); xeformX.InnerText = methodFileMoveLiquid.aspOpenLid; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("aspCloseLid"); xeformX.InnerText = methodFileMoveLiquid.aspCloseLid; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("destinationLabware"); xeformX.InnerText = methodFileMoveLiquid.destinationLabware; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("destinationWell"); xeformX.InnerText = methodFileMoveLiquid.destinationWell; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("dpsVolume"); xeformX.InnerText = methodFileMoveLiquid.dpsVolume; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("dpsOpenLid"); xeformX.InnerText = methodFileMoveLiquid.dpsOpenLid; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("dpsCloseLid"); xeformX.InnerText = methodFileMoveLiquid.dpsCloseLid; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("tipSet"); xeformX.InnerText = methodFileMoveLiquid.tipSet; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("changeTipsMode"); xeformX.InnerText = methodFileMoveLiquid.changeTipsMode.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("changeToTipText"); xeformX.InnerText = methodFileMoveLiquid.changeToTipText; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("changeToTipValue"); xeformX.InnerText = methodFileMoveLiquid.changeToTipValue.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("jump0Volume"); xeformX.InnerText = methodFileMoveLiquid.jump0Volume.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidid"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodFileMoveLiquid.liquididText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodFileMoveLiquid.liquididValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("liquidrangeid"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodFileMoveLiquid.liquidrangeidText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodFileMoveLiquid.liquidrangeidValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("liquidpid"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodFileMoveLiquid.liquidpidText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodFileMoveLiquid.liquidpidValue; xeformX.AppendChild(xeformX1); #region 吸液前混合 xeformX = xmlDoc.CreateElement("baspMix"); xeformX.InnerText = methodFileMoveLiquid.baspMix.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("aspmixvolume"); xeformX.InnerText = methodFileMoveLiquid.aspmixvolume.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("aspmixcount"); xeformX.InnerText = methodFileMoveLiquid.aspmixcount.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("aspmixAspiratePosition"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodFileMoveLiquid.aspmixAspiratePositionText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodFileMoveLiquid.aspmixAspiratePositionValue.ToString(); xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("aspmixAspirateDistance"); xeformX.InnerText = methodFileMoveLiquid.aspmixAspirateDistance.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("aspmixAspirateSpeed"); xeformX.InnerText = methodFileMoveLiquid.aspmixAspirateSpeed.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("aspmixDispensePosition"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodFileMoveLiquid.aspmixDispensePositionText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodFileMoveLiquid.aspmixDispensePositionValue.ToString(); xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("aspmixDispenseDistance"); xeformX.InnerText = methodFileMoveLiquid.aspmixDispenseDistance.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("aspmixDispenseSpeed"); xeformX.InnerText = methodFileMoveLiquid.aspmixDispenseSpeed.ToString(); xeKey.AppendChild(xeformX); #endregion #region 排液后混合 xeformX = xmlDoc.CreateElement("bdpsMix"); xeformX.InnerText = methodFileMoveLiquid.bdpsMix.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("dpsmixvolume"); xeformX.InnerText = methodFileMoveLiquid.dpsmixvolume.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("dpsmixcount"); xeformX.InnerText = methodFileMoveLiquid.dpsmixcount.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("dpsmixAspiratePosition"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodFileMoveLiquid.dpsmixAspiratePositionText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodFileMoveLiquid.dpsmixAspiratePositionValue.ToString(); xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("dpsmixAspirateDistance"); xeformX.InnerText = methodFileMoveLiquid.dpsmixAspirateDistance.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("dpsmixAspirateSpeed"); xeformX.InnerText = methodFileMoveLiquid.dpsmixAspirateSpeed.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("dpsmixDispensePosition"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodFileMoveLiquid.dpsmixDispensePositionText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodFileMoveLiquid.dpsmixDispensePositionValue.ToString(); xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("dpsmixDispenseDistance"); xeformX.InnerText = methodFileMoveLiquid.dpsmixDispenseDistance.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("dpsmixDispenseSpeed"); xeformX.InnerText = methodFileMoveLiquid.dpsmixDispenseSpeed.ToString(); xeKey.AppendChild(xeformX); #endregion #region 液面探测 xeformX = xmlDoc.CreateElement("enableLiquidSensor"); xeformX.InnerText = methodFileMoveLiquid.enableLiquidSensor.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidSensorCount"); xeformX.InnerText = methodFileMoveLiquid.liquidSensorCount.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidSensorDistance"); xeformX.InnerText = methodFileMoveLiquid.liquidSensorDistance.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidSensorEndDistance"); xeformX.InnerText = methodFileMoveLiquid.liquidSensorEndDistance.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidSensorSpeed"); xeformX.InnerText = methodFileMoveLiquid.liquidSensorSpeed.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidSensorRadio"); xeformX.InnerText = methodFileMoveLiquid.liquidSensorRadio.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidSensorDisId"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodFileMoveLiquid.liquidSensorDisIdText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodFileMoveLiquid.liquidSensorDisIdValue.ToString(); xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("enableLiquidFollow"); xeformX.InnerText = methodFileMoveLiquid.enableLiquidFollow.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidFollowType"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodFileMoveLiquid.liquidFollowTypeName.ToString(); xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodFileMoveLiquid.liquidFollowType.ToString(); xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("liquidFollowSpeed"); xeformX.InnerText = methodFileMoveLiquid.liquidFollowSpeed.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidFollowDistance"); xeformX.InnerText = methodFileMoveLiquid.liquidFollowDistance.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidFollowArea"); xeformX.InnerText = methodFileMoveLiquid.liquidFollowArea.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("enableMixFollow"); xeformX.InnerText = methodFileMoveLiquid.enableMixFollow.ToString(); xeKey.AppendChild(xeformX); #endregion #region 堵塞探测 xeformX = xmlDoc.CreateElement("enableSensorBlock"); xeformX.InnerText = methodFileMoveLiquid.enableSensorBlock.ToString(); xeKey.AppendChild(xeformX); //xeformX = xmlDoc.CreateElement("liquidSensorBlockDistance"); //xeformX.InnerText = methodFileMoveLiquid.liquidSensorBlockDistance.ToString(); //xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("aspirateBlockDisId"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodFileMoveLiquid.aspirateBlockDisIdText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodFileMoveLiquid.aspirateBlockDisIdValue.ToString(); xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("dispenseBlockDisId"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodFileMoveLiquid.dispenseBlockDisIdText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodFileMoveLiquid.dispenseBlockDisIdValue.ToString(); xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("aspirateAirDisId"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodFileMoveLiquid.aspirateAirDisIdText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodFileMoveLiquid.aspirateAirDisIdValue.ToString(); xeformX.AppendChild(xeformX1); #endregion root.AppendChild(xeKey);//挂载父节点 } public void CreateTransferFileDataTable(MethodFileMoveLiquid methodFileMoveLiquid, XmlElement xeKey) { XmlElement xeformXBase = xmlDoc.CreateElement("transferDataTable"); DataTable dt = methodFileMoveLiquid.transferDataTable; if (dt != null) { for (int i = 0; i < dt.Columns.Count; i++) { XmlElement xeformX = xmlDoc.CreateElement("subnode"); XmlAttribute xeType = xmlDoc.CreateAttribute("columnname"); xeType.InnerText = dt.Columns[i].ColumnName.ToString(); xeformX.SetAttributeNode(xeType); xeformXBase.AppendChild(xeformX); for (int j = 0; j < dt.Rows.Count; j++) { XmlElement xeformX1 = xmlDoc.CreateElement("node"); xeformX1.InnerText = dt.Rows[j][i].ToString(); xeformX.AppendChild(xeformX1); } } } xeKey.AppendChild(xeformXBase); } #endregion #region 创建文件转板方法的xml public void CreateFileMoveLabwareXmlNode(int index, MethodFileMoveLabware methodFileMoveLabware, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodFileMoveLabware.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("comment"); xeformX.InnerText = methodFileMoveLabware.comment; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodFileMoveLabware.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("arm"); xeKey.AppendChild(xeformX); XmlElement xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodFileMoveLabware.armText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodFileMoveLabware.armValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("filePath"); xeformX.InnerText = methodFileMoveLabware.filePath; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("beginLine"); xeformX.InnerText = methodFileMoveLabware.beginLine.ToString(); xeKey.AppendChild(xeformX); //DataTable转化成节点 CreateTransferFileDataTable(methodFileMoveLabware, xeKey); xeformX = xmlDoc.CreateElement("pickLattice"); xeformX.InnerText = methodFileMoveLabware.pickLattice; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("pickColumn"); xeformX.InnerText = methodFileMoveLabware.pickColumn; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("pickWell"); xeformX.InnerText = methodFileMoveLabware.pickWell; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("pickPart"); xeformX.InnerText = methodFileMoveLabware.pickPart; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("pickDirect"); xeformX.InnerText = methodFileMoveLabware.pickDirect; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("placeLattice"); xeformX.InnerText = methodFileMoveLabware.placeLattice; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("placeColumn"); xeformX.InnerText = methodFileMoveLabware.placeColumn; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("placeWell"); xeformX.InnerText = methodFileMoveLabware.placeWell; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("placeDirect"); xeformX.InnerText = methodFileMoveLabware.placeDirect; xeKey.AppendChild(xeformX); #region 移动板位的方式 xeformX = xmlDoc.CreateElement("transportMode"); xeformX.InnerText = methodFileMoveLabware.transportMode.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("transportCount"); xeformX.InnerText = methodFileMoveLabware.transportCount.ToString(); xeKey.AppendChild(xeformX); #endregion root.AppendChild(xeKey);//挂载父节点 } public void CreateTransferFileDataTable(MethodFileMoveLabware methodFileMoveLabware, XmlElement xeKey) { XmlElement xeformXBase = xmlDoc.CreateElement("transferDataTable"); DataTable dt = methodFileMoveLabware.transferDataTable; if (dt != null) { for (int i = 0; i < dt.Columns.Count; i++) { XmlElement xeformX = xmlDoc.CreateElement("subnode"); XmlAttribute xeType = xmlDoc.CreateAttribute("columnname"); xeType.InnerText = dt.Columns[i].ColumnName.ToString(); xeformX.SetAttributeNode(xeType); xeformXBase.AppendChild(xeformX); for (int j = 0; j < dt.Rows.Count; j++) { XmlElement xeformX1 = xmlDoc.CreateElement("node"); xeformX1.InnerText = dt.Rows[j][i].ToString(); xeformX.AppendChild(xeformX1); } } } xeKey.AppendChild(xeformXBase); } #endregion #region 创建数据导入方法的xml public void CreateDataImportXmlNode(int index, MethodDataImport methodDataImport, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); //xeformX.InnerText = methodDataImport.status; xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodDataImport.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodDataImport.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); //xeformX.InnerText = methodDataImport.strIndex; xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("filePath"); xeformX.InnerText = methodDataImport.filePath; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("beginLine"); xeformX.InnerText = methodDataImport.beginLine.ToString(); xeKey.AppendChild(xeformX); //DataTable转化成节点 CreateTransferFileDataTable(methodDataImport, xeKey); xeformX = xmlDoc.CreateElement("sourceLabware"); xeformX.InnerText = methodDataImport.sourceLabware; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("sourceWell"); xeformX.InnerText = methodDataImport.sourceWell; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("sourceLabwareCode"); xeformX.InnerText = methodDataImport.sourceLabwareCode; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("destVolume"); xeformX.InnerText = methodDataImport.destVolume; xeKey.AppendChild(xeformX); //xeformX = xmlDoc.CreateElement("tipSet"); //xeformX.InnerText = methodDataImport.tipSet; //xeKey.AppendChild(xeformX); root.AppendChild(xeKey);//挂载父节点 } public void CreateTransferFileDataTable(MethodDataImport methodDataImport, XmlElement xeKey) { XmlElement xeformXBase = xmlDoc.CreateElement("transferDataTable"); DataTable dt = methodDataImport.transferDataTable; if (dt != null) { for (int i = 0; i < dt.Columns.Count; i++) { XmlElement xeformX = xmlDoc.CreateElement(dt.Columns[i].ColumnName); xeformXBase.AppendChild(xeformX); for (int j = 0; j < dt.Rows.Count; j++) { XmlElement xeformX1 = xmlDoc.CreateElement("node"); xeformX1.InnerText = dt.Rows[j][i].ToString(); xeformX.AppendChild(xeformX1); } } } xeKey.AppendChild(xeformXBase); } #endregion #region 创建数据导出方法的xml public void CreateDataExportXmlNode(int index, MethodDataExport methodDataExport, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); //xeformX.InnerText = methodDataExport.status; xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodDataExport.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodDataExport.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); //xeformX.InnerText = methodDataExport.strIndex; xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("filePath"); xeformX.InnerText = methodDataExport.filePath; xeKey.AppendChild(xeformX); //DataTable转化成节点 CreateReportColumnDataTable(methodDataExport, xeKey, out xeKey); xeformX = xmlDoc.CreateElement("filePostfix"); xeformX.InnerText = methodDataExport.filePostfix; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("fileName"); xeformX.InnerText = methodDataExport.fileName; xeKey.AppendChild(xeformX); root.AppendChild(xeKey);//挂载父节点 } public void CreateReportColumnDataTable(MethodDataExport methodDataExport, XmlElement xeKeyR, out XmlElement xeKey) { XmlElement xeformXBase = xmlDoc.CreateElement("transferDataTable"); List dt = methodDataExport.reportColumns; if (dt != null) { XmlElement xeformX = xmlDoc.CreateElement("序号"); xeformXBase.AppendChild(xeformX); for (int j = 0; j < dt.Count; j++) { XmlElement xeformX1 = xmlDoc.CreateElement("node"); xeformX1.InnerText = dt[j].reportcolumn_id.ToString(); xeformX.AppendChild(xeformX1); } xeformX = xmlDoc.CreateElement("字段名"); xeformXBase.AppendChild(xeformX); for (int j = 0; j < dt.Count; j++) { XmlElement xeformX1 = xmlDoc.CreateElement("node"); xeformX1.InnerText = dt[j].reportcolumn_name.ToString(); xeformX.AppendChild(xeformX1); } xeformX = xmlDoc.CreateElement("列名"); xeformXBase.AppendChild(xeformX); for (int j = 0; j < dt.Count; j++) { XmlElement xeformX1 = xmlDoc.CreateElement("node"); xeformX1.InnerText = dt[j].reportcolumn_sname.ToString(); xeformX.AppendChild(xeformX1); } } xeKey = xeKeyR; xeKey.AppendChild(xeformXBase); } #endregion #region 创建抓板转移方法的xml public void CreateGripTransportXmlNode(int index, MethodGripTransport methodGripTransport, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodGripTransport.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodGripTransport.label; xeKey.AppendChild(xeformX); #region 机械臂 xeformX = xmlDoc.CreateElement("arm"); xeKey.AppendChild(xeformX); XmlElement xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodGripTransport.armText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodGripTransport.armValue; xeformX.AppendChild(xeformX1); #endregion #region 来源点位 xeformX = xmlDoc.CreateElement("sourceLattice"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodGripTransport.srcPositionText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodGripTransport.srcPositionValue; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("type"); xeformX1.InnerText = methodGripTransport.srcPositionType.ToString(); xeformX.AppendChild(xeformX1); #endregion #region 抓板方向 xeformX = xmlDoc.CreateElement("gripModel"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodGripTransport.gripModelText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodGripTransport.gripModelValue.ToString(); xeformX.AppendChild(xeformX1); #endregion #region 抓取耗材 xeformX = xmlDoc.CreateElement("gripPickObject"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodGripTransport.gripPickLabwareText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodGripTransport.gripPickLabwareValue.ToString(); xeformX.AppendChild(xeformX1); #endregion #region 抓板位置 xeformX = xmlDoc.CreateElement("gripModelPos"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodGripTransport.gripModelPosText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodGripTransport.gripModelPosValue.ToString(); xeformX.AppendChild(xeformX1); #endregion xeformX = xmlDoc.CreateElement("pickPosMode"); xeformX.InnerText = methodGripTransport.pickPosMode.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("pickPosValue"); xeformX.InnerText = methodGripTransport.pickPosValue.ToString(); xeKey.AppendChild(xeformX); #region 目标点位 xeformX = xmlDoc.CreateElement("destinationLattice"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodGripTransport.desPositionText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodGripTransport.desPositionValue; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("type"); xeformX1.InnerText = methodGripTransport.desPositionType.ToString(); xeformX.AppendChild(xeformX1); #endregion #region 放板方向 xeformX = xmlDoc.CreateElement("gripModelSet"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodGripTransport.gripModelSetText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodGripTransport.gripModelSetValue.ToString(); xeformX.AppendChild(xeformX1); #endregion #region 放板耗材 xeformX = xmlDoc.CreateElement("gripPlaceObject"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodGripTransport.gripPlaceLabwareText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodGripTransport.gripPlaceLabwareValue.ToString(); xeformX.AppendChild(xeformX1); #endregion xeformX = xmlDoc.CreateElement("placePosMode"); xeformX.InnerText = methodGripTransport.placePosMode.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("placePosValue"); xeformX.InnerText = methodGripTransport.placePosValue.ToString(); xeKey.AppendChild(xeformX); #region 移动板位的方式 xeformX = xmlDoc.CreateElement("transportMode"); xeformX.InnerText = methodGripTransport.transportMode.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("transportCount"); xeformX.InnerText = methodGripTransport.transportCount.ToString(); xeKey.AppendChild(xeformX); #endregion root.AppendChild(xeKey);//挂载父节点 } #endregion #region 创建移动夹爪方法的xml public void CreateGripMoveXmlNode(int index, MethodGripMove methodGripMove, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); //xeformX.InnerText = methodGripMove.status; xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodGripMove.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodGripMove.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); //xeformX.InnerText = methodGripMove.strIndex; xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("arm"); xeKey.AppendChild(xeformX); XmlElement xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodGripMove.armText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodGripMove.armValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("lattice"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodGripMove.latticeText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodGripMove.latticeValue; xeformX.AppendChild(xeformX1); root.AppendChild(xeKey);//挂载父节点 } #endregion #region 创建夹爪保持开始方法的xml public void CreateBeginHoldingLabwareXmlNode(int index, MethodHoldingLabware methodHoldingLabware, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodHoldingLabware.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodHoldingLabware.label; xeKey.AppendChild(xeformX); #region 机械臂 xeformX = xmlDoc.CreateElement("arm"); xeKey.AppendChild(xeformX); XmlElement xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodHoldingLabware.armText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodHoldingLabware.armValue; xeformX.AppendChild(xeformX1); #endregion #region 来源点位 xeformX = xmlDoc.CreateElement("sourceLattice"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodHoldingLabware.srcPositionText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodHoldingLabware.srcPositionValue; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("type"); xeformX1.InnerText = methodHoldingLabware.srcPositionType.ToString(); xeformX.AppendChild(xeformX1); #endregion #region 抓板方向 xeformX = xmlDoc.CreateElement("gripModel"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodHoldingLabware.gripModelText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodHoldingLabware.gripModelValue.ToString(); xeformX.AppendChild(xeformX1); #endregion #region 抓取耗材 xeformX = xmlDoc.CreateElement("gripPickObject"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodHoldingLabware.gripPickLabwareText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodHoldingLabware.gripPickLabwareValue; xeformX.AppendChild(xeformX1); #endregion #region 抓板位置 xeformX = xmlDoc.CreateElement("gripModelPos"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodHoldingLabware.gripModelPosText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodHoldingLabware.gripModelPosValue.ToString(); xeformX.AppendChild(xeformX1); #endregion #region 移动板位的方式 xeformX = xmlDoc.CreateElement("transportMode"); xeformX.InnerText = methodHoldingLabware.transportMode.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("transportCount"); xeformX.InnerText = methodHoldingLabware.transportCount.ToString(); xeKey.AppendChild(xeformX); #endregion root.AppendChild(xeKey);//挂载父节点 } #endregion #region 创建夹爪保持结束方法的xml public void CreateEndHoldingLabwareXmlNode(int index, MethodHoldingLabware methodHoldingLabware, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method"); // 创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodHoldingLabware.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodHoldingLabware.label; xeKey.AppendChild(xeformX); #region 机械臂 xeformX = xmlDoc.CreateElement("arm"); xeKey.AppendChild(xeformX); XmlElement xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodHoldingLabware.armText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodHoldingLabware.armValue; xeformX.AppendChild(xeformX1); #endregion #region 目标点位 xeformX = xmlDoc.CreateElement("destinationLattice"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodHoldingLabware.desPositionText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodHoldingLabware.desPositionValue; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("type"); xeformX1.InnerText = methodHoldingLabware.desPositionType.ToString(); xeformX.AppendChild(xeformX1); #endregion #region 放板方向 xeformX = xmlDoc.CreateElement("gripModelSet"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodHoldingLabware.gripModelSetText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodHoldingLabware.gripModelSetValue.ToString(); xeformX.AppendChild(xeformX1); #endregion #region 放板耗材 xeformX = xmlDoc.CreateElement("gripPlaceObject"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodHoldingLabware.gripPlaceLabwareText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodHoldingLabware.gripPlaceLabwareValue.ToString(); xeformX.AppendChild(xeformX1); #endregion root.AppendChild(xeKey);//挂载父节点 } #endregion #region 创建混合方法的xml public void CreateMixingXmlNode(int index, MethodMixing methodMixing, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); //xeformX.InnerText = methodMixing.status; xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodMixing.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodMixing.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); //xeformX.InnerText = methodMixing.strIndex; xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("labware"); xeKey.AppendChild(xeformX); XmlElement xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodMixing.labwareText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodMixing.labwareValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("position"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodMixing.positionText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodMixing.positionValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("arm"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodMixing.armText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodMixing.armValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("headType"); xeformX.InnerText = methodMixing.headType; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("labwaretip"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodMixing.labwaretipText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodMixing.labwaretipValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("channels"); string chs = string.Empty; if (methodMixing.channels.Length != 0) { for (int i = 0; i < methodMixing.channels.Length; i++) { chs += methodMixing.channels[i] + ","; } chs = chs.Substring(0, chs.Length - 1); } xeformX.InnerText = chs; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("wellarray"); xeformX.InnerText = methodMixing.wellarray; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("enableSingleWellvolume"); xeformX.InnerText = methodMixing.enableSingleWellvolume.ToString(); xeKey.AppendChild(xeformX); foreach (DropdownName d in methodMixing.singlewellvolume) { xeformX = xmlDoc.CreateElement("SingleWellvolume"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("channel"); xeformX1.InnerText = d.dropdown_id.ToString(); xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = d.dropdown_name.ToString(); xeformX.AppendChild(xeformX1); } xeformX = xmlDoc.CreateElement("liquidid"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodMixing.liquididText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodMixing.liquididValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("liquidrangeid"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodMixing.liquidrangeidText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodMixing.liquidrangeidValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("liquidpid"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodMixing.liquidpidText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodMixing.liquidpidValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("mixvolume"); xeformX.InnerText = methodMixing.mixvolume.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("mixcount"); xeformX.InnerText = methodMixing.mixcount.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("mixAspiratePosition"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodMixing.mixAspiratePositionText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodMixing.mixAspiratePositionValue.ToString(); xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("mixAspirateDistance"); xeformX.InnerText = methodMixing.mixAspirateDistance.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("mixAspirateSpeed"); xeformX.InnerText = methodMixing.mixAspirateSpeed.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("mixDispensePosition"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodMixing.mixDispensePositionText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodMixing.mixDispensePositionValue.ToString(); xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("mixDispenseDistance"); xeformX.InnerText = methodMixing.mixDispenseDistance.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("mixDispenseSpeed"); xeformX.InnerText = methodMixing.mixDispenseSpeed.ToString(); xeKey.AppendChild(xeformX); #region 液面探测 xeformX = xmlDoc.CreateElement("enableLiquidSensor"); xeformX.InnerText = methodMixing.enableLiquidSensor.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidSensorCount"); xeformX.InnerText = methodMixing.liquidSensorCount.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidSensorDistance"); xeformX.InnerText = methodMixing.liquidSensorDistance.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidSensorEndDistance"); xeformX.InnerText = methodMixing.liquidSensorEndDistance.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidSensorSpeed"); xeformX.InnerText = methodMixing.liquidSensorSpeed.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidSensorRadio"); xeformX.InnerText = methodMixing.liquidSensorRadio.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidSensorDisId"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodMixing.liquidSensorDisIdText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodMixing.liquidSensorDisIdValue.ToString(); xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("enableLiquidFollow"); xeformX.InnerText = methodMixing.enableLiquidFollow.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidFollowType"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodMixing.liquidFollowTypeName.ToString(); xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodMixing.liquidFollowType.ToString(); xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("liquidFollowSpeed"); xeformX.InnerText = methodMixing.liquidFollowSpeed.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidFollowDistance"); xeformX.InnerText = methodMixing.liquidFollowDistance.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidFollowArea"); xeformX.InnerText = methodMixing.liquidFollowArea.ToString(); xeKey.AppendChild(xeformX); #endregion #region 堵塞探测 xeformX = xmlDoc.CreateElement("enableSensorBlock"); xeformX.InnerText = methodMixing.enableSensorBlock.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidSensorBlockDistance"); xeformX.InnerText = methodMixing.liquidSensorBlockDistance.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidSensorBlockDisId"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodMixing.liquidSensorBlockDisIdText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodMixing.liquidSensorBlockDisIdValue.ToString(); xeformX.AppendChild(xeformX1); #endregion root.AppendChild(xeKey);//挂载父节点 } #endregion #region 创建暂停方法的xml public void CreatePauseMoveXmlNode(int index, MethodPauseMove methodPauseMove, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); //xeformX.InnerText = methodPauseMove.status; xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodPauseMove.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodPauseMove.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); //xeformX.InnerText = methodPauseMove.strIndex; xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("pauseMode"); xeformX.InnerText = methodPauseMove.pauseMode.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("pauseTime"); xeformX.InnerText = methodPauseMove.pauseTime; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("pauseTipInfo"); xeformX.InnerText = methodPauseMove.pauseTipInfo; xeKey.AppendChild(xeformX); root.AppendChild(xeKey);//挂载父节点 } #endregion #region 创建计时器方法的xml public void CreateTimerXmlNode(int index, MethodTimer methodTimer, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method"); XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); //xeformX.InnerText = methodTimer.status; xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodTimer.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodTimer.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); //xeformX.InnerText = methodTimer.strIndex; xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("duringTime"); xeformX.InnerText = methodTimer.duringTime.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("duringTimeInfo"); xeformX.InnerText = methodTimer.duringTimeInfo; xeKey.AppendChild(xeformX); root.AppendChild(xeKey); } #endregion #region 创建等待计时器方法的xml public void CreateWaitForXmlNode(int index, MethodWaitFor methodWaitFor, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method"); XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); //xeformX.InnerText = methodTimer.status; xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodWaitFor.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodWaitFor.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); //xeformX.InnerText = methodWaitFor.strIndex; xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("duringTimeText"); xeformX.InnerText = methodWaitFor.duringTimeText.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("duringTimeTextStrIndex"); xeformX.InnerText = methodWaitFor.duringTimeTextStrIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("enableEndWaitfor"); xeformX.InnerText = methodWaitFor.enableEndWaitfor==true?"true":"false"; xeKey.AppendChild(xeformX); root.AppendChild(xeKey); } #endregion #region 创建振荡方法的xml public void CreateShakerXmlNode(int index, MethodShaker methodShaker, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); //xeformX.InnerText = methodShaker.status; xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodShaker.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("turnOnShaker"); xeformX.InnerText = methodShaker.turnOnShaker; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("shakerSpeed"); xeformX.InnerText = methodShaker.shakerSpeed; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("shakerDirection"); xeKey.AppendChild(xeformX); XmlElement xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodShaker.shakerDirectionText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodShaker.shakerDirectionValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("shakerTime"); xeformX.InnerText = methodShaker.shakerTime; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("turnOnWarm"); xeformX.InnerText = methodShaker.turnOnWarm; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("warmTemperature"); xeformX.InnerText = methodShaker.warmTemperature; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("warmTime"); xeformX.InnerText = methodShaker.warmTime; xeKey.AppendChild(xeformX); root.AppendChild(xeKey);//挂载父节点 } #endregion #region 创建复位方法的xml public void CreateHomeXmlNode(int index, MethodHome methodHome, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); //xeformX.InnerText = methodHome.status; xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodHome.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodHome.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); //xeformX.InnerText = methodHome.strIndex; xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("arm"); xeKey.AppendChild(xeformX); XmlElement xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodHome.armText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodHome.armValue; xeformX.AppendChild(xeformX1); root.AppendChild(xeKey);//挂载父节点 } #endregion #region 创建备注方法的xml public void CreateRemarkXmlNode(int index, MethodRemark methodRemark, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); //xeformX.InnerText = methodRemark.status; xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodRemark.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodRemark.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); //xeformX.InnerText = methodRemark.strIndex; xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("title"); xeformX.InnerText = methodRemark.title; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("remark"); xeformX.InnerText = methodRemark.remark; xeKey.AppendChild(xeformX); root.AppendChild(xeKey);//挂载父节点 } #endregion #region 创建结束的xml public void CreateEndXmlNode(int index, MethodEnd methodEnd, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); //xeformX.InnerText = methodEnd.status; xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodEnd.name; //"Method_End"; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); //xeformX.InnerText = methodEnd.strIndex; xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodEnd.label; //"Method_End"; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("isGoHome"); xeformX.InnerText = methodEnd.isGoHome.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("isTipsOff"); xeformX.InnerText = methodEnd.isTipsOff.ToString(); xeKey.AppendChild(xeformX); root.AppendChild(xeKey);//挂载父节点 } #endregion #region 创建拍照方法的xml public void CreateTakePhotoXmlNode(int index, MethodTakePhoto methodTakePhoto, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); //xeformX.InnerText = methodTakePhoto.status; xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodTakePhoto.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodTakePhoto.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); //xeformX.InnerText = methodTakePhoto.strIndex; xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("ismanualconfig"); xeformX.InnerText = methodTakePhoto.ismanualconfig.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("bacteriaids"); if (methodTakePhoto.bacteriaids != null) { xeformX.InnerText = methodTakePhoto.bacteriaids.ToString(); } xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("gapValue"); xeformX.InnerText = methodTakePhoto.gapValue.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("bacteriacolor"); xeKey.AppendChild(xeformX); XmlElement xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodTakePhoto.colorText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodTakePhoto.colorValue; xeformX.AppendChild(xeformX1); // 识别方法:0:成像系统自动挑选菌落; 1:人工挑选菌落 xeformX = xmlDoc.CreateElement("identification"); xeformX.InnerText = methodTakePhoto.identification.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("choiceTimes"); xeformX.InnerText = methodTakePhoto.choiceTimes.ToString(); xeKey.AppendChild(xeformX); //xeformX = xmlDoc.CreateElement("barcode"); //xeformX.InnerText = methodTakePhoto.barcode.ToString(); //xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("labware"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodTakePhoto.coatingLabwareText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodTakePhoto.coatingLabwareValue; xeformX.AppendChild(xeformX1); root.AppendChild(xeKey);//挂载父节点 } public void CreateTakePhotoForElectroXmlNode(int index, MethodTakePhotoForElectro methodTakePhotoForElectro, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); //xeformX.InnerText = methodTakePhoto.status; xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodTakePhotoForElectro.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodTakePhotoForElectro.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); //xeformX.InnerText = methodTakePhoto.strIndex; xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); // 识别方法:0:成像系统自动挑选菌落; 1:人工挑选菌落 xeformX = xmlDoc.CreateElement("identification"); xeformX.InnerText = methodTakePhotoForElectro.identification.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("labware"); xeKey.AppendChild(xeformX); XmlElement xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodTakePhotoForElectro.gumLabwareText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodTakePhotoForElectro.gumLabwareValue; xeformX.AppendChild(xeformX1); root.AppendChild(xeKey);//挂载父节点 } #endregion #region 创建挑选方法的xml public void CreateChoiceXmlNode(int index, MethodChoice methodChoice, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); //xeformX.InnerText = methodChoice.status; xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodChoice.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodChoice.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); //xeformX.InnerText = methodChoice.strIndex; xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("channels"); string chs = string.Empty; if (methodChoice.channels != null) { if (methodChoice.channels.Length != 0) { for (int i = 0; i < methodChoice.channels.Length; i++) { chs += methodChoice.channels[i] + ","; } chs = chs.Substring(0, chs.Length - 1); } } xeformX.InnerText = chs; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("position"); xeKey.AppendChild(xeformX); XmlElement xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodChoice.positionText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodChoice.positionValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("arm"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodChoice.armText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodChoice.armValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("headType"); xeformX.InnerText = methodChoice.headType; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("labwaretip"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodChoice.labwaretipText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodChoice.labwaretipValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("bacteria"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodChoice.bacteriaText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodChoice.bacteriaValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("filePath"); xeformX.InnerText = methodChoice.filePath; xeKey.AppendChild(xeformX); //DataTable转化成节点 CreateTransferFileDataTable(methodChoice, xeKey, out xeKey); xeformX = xmlDoc.CreateElement("sourceLabware"); xeformX.InnerText = methodChoice.sourceLabware; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("sourceWell"); xeformX.InnerText = methodChoice.sourceWell; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("beginLine"); xeformX.InnerText = methodChoice.beginLine; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("startPos"); xeformX.InnerText = methodChoice.startPos; xeKey.AppendChild(xeformX); root.AppendChild(xeKey);//挂载父节点 } public void CreateTransferFileDataTable(MethodChoice methodChoice, XmlElement xeKeyR, out XmlElement xeKey) { XmlElement xeformXBase = xmlDoc.CreateElement("transferDataTable"); DataTable dt = methodChoice.transferDataTable; if (dt != null) { for (int i = 0; i < dt.Columns.Count; i++) { XmlElement xeformX = xmlDoc.CreateElement(dt.Columns[i].ColumnName); xeformXBase.AppendChild(xeformX); for (int j = 0; j < dt.Rows.Count; j++) { XmlElement xeformX1 = xmlDoc.CreateElement("node"); xeformX1.InnerText = dt.Rows[j][i].ToString(); xeformX.AppendChild(xeformX1); } } } xeKey = xeKeyR; xeKey.AppendChild(xeformXBase); } #endregion #region 创建涂布方法的xml public void CreateCoatingXmlNode(int index, MethodCoating methodCoating, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); //xeformX.InnerText = methodCoating.status; xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodCoating.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodCoating.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); //xeformX.InnerText = methodCoating.strIndex; xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("labware"); xeKey.AppendChild(xeformX); XmlElement xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodCoating.labwareText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodCoating.labwareValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("position"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodCoating.positionText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodCoating.positionValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("arm"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodCoating.armText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodCoating.armValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("headType"); xeformX.InnerText = methodCoating.headType; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("channels"); string chs = string.Empty; if (methodCoating.channels != null) { if (methodCoating.channels.Length != 0) { for (int i = 0; i < methodCoating.channels.Length; i++) { chs += methodCoating.channels[i] + ","; } chs = chs.Substring(0, chs.Length - 1); } } xeformX.InnerText = chs; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("coatingmode"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodCoating.coatingmodeText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodCoating.coatingmodeValue.ToString(); xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("wellarray"); xeformX.InnerText = methodCoating.wellarray; xeKey.AppendChild(xeformX); root.AppendChild(xeKey);//挂载父节点 } #endregion #region 创建涂布文件移液方法的xml public void CreateCoatingFileXmlNode(int index, MethodCoatingFile methodCoatingFile, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodCoatingFile.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodCoatingFile.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("arm"); xeKey.AppendChild(xeformX); XmlElement xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodCoatingFile.armText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodCoatingFile.armValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("labwaretip"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodCoatingFile.labwaretipText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodCoatingFile.labwaretipValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("channels"); string chs = string.Empty; if (methodCoatingFile.channels != null) { if (methodCoatingFile.channels.Length != 0) { for (int i = 0; i < methodCoatingFile.channels.Length; i++) { chs += methodCoatingFile.channels[i] + ","; } chs = chs.Substring(0, chs.Length - 1); } } xeformX.InnerText = chs; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("filePath"); xeformX.InnerText = methodCoatingFile.filePath; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("beginLine"); xeformX.InnerText = methodCoatingFile.beginLine.ToString(); xeKey.AppendChild(xeformX); //DataTable转化成节点 CreateTransferFileDataTable(methodCoatingFile, xeKey); xeformX = xmlDoc.CreateElement("sourceLabware"); xeformX.InnerText = methodCoatingFile.sourceLabware; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("sourceWell"); xeformX.InnerText = methodCoatingFile.sourceWell; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("destinationLabware"); xeformX.InnerText = methodCoatingFile.destinationLabware; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("destinationWell"); xeformX.InnerText = methodCoatingFile.destinationWell; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("bacteria"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodCoatingFile.bacteriaText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodCoatingFile.bacteriaValue; xeformX.AppendChild(xeformX1); // 涂布方式 xeformX = xmlDoc.CreateElement("coatingmodeValue"); xeformX.InnerText = methodCoatingFile.coatingModeValue.ToString(); xeKey.AppendChild(xeformX); // 涂布方式为上下移动时的距离 xeformX = xmlDoc.CreateElement("shakeDistanceValue"); xeformX.InnerText = methodCoatingFile.shakeDistanceValue.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("shakeCountValue"); xeformX.InnerText = methodCoatingFile.shakeCountValue.ToString(); xeKey.AppendChild(xeformX); // 挑选类别:1:单选; 2:穿刺; 3:吸液; xeformX = xmlDoc.CreateElement("choiceCategory"); xeformX.InnerText = methodCoatingFile.choiceCategory.ToString(); xeKey.AppendChild(xeformX); // 多块目标板涂布前要挑菌 xeformX = xmlDoc.CreateElement("pickEveryTime"); xeformX.InnerText = methodCoatingFile.pickEveryTime.ToString().ToLower(); xeKey.AppendChild(xeformX); // 多块目标板挑菌前要换枪头 xeformX = xmlDoc.CreateElement("pickAgoChangeTipEveryTime"); xeformX.InnerText = methodCoatingFile.pickAgoChangeTipEveryTime.ToString().ToLower(); xeKey.AppendChild(xeformX); // 同时挑菌的通道数量 xeformX = xmlDoc.CreateElement("coatingCount"); xeformX.InnerText = methodCoatingFile.coatingCount.ToString(); xeKey.AppendChild(xeformX); // 涂布自动开关盖 xeformX = xmlDoc.CreateElement("autoOpenCloseCoverCoating"); xeformX.InnerText = methodCoatingFile.autoOpenCloseCoverCoating.ToString().ToLower(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidid"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodCoatingFile.liquididText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodCoatingFile.liquididValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("liquidrangeid"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodCoatingFile.liquidrangeidText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodCoatingFile.liquidrangeidValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("liquidpid"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodCoatingFile.liquidpidText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodCoatingFile.liquidpidValue; xeformX.AppendChild(xeformX1); #region 超声探测 xeformX = xmlDoc.CreateElement("enableUltrasonic"); xeformX.InnerText = methodCoatingFile.isEnableultrasonic.ToString().ToLower(); xeKey.AppendChild(xeformX); if (methodCoatingFile.isEnableultrasonic) { // 构建圆形皿 CreateUltrasonicDishObjectDataTable(methodCoatingFile, xeKey); // 构建非圆形皿 CreateUltrasonicObjectDataTable(methodCoatingFile, xeKey); } #endregion #region 吸液 // 创建创建挑菌前环境设置的xml CreateChoiceAgoAspirateChildXmlNode(xmlDoc, xeKey, methodCoatingFile.choiceAgoAspirateData); #endregion #region 混合 // 吸液是否开启混合 xeformX = xmlDoc.CreateElement("enableMix"); xeformX.InnerText = methodCoatingFile.bMix.ToString(); xeKey.AppendChild(xeformX); // 混合体积 xeformX = xmlDoc.CreateElement("mixvolume"); xeformX.InnerText = methodCoatingFile.mixvolume.ToString(); xeKey.AppendChild(xeformX); // 混合次数 xeformX = xmlDoc.CreateElement("mixcount"); xeformX.InnerText = methodCoatingFile.mixcount.ToString(); xeKey.AppendChild(xeformX); #region 混合时,吸液参数 xeformX = xmlDoc.CreateElement("mixAspiratePosition"); xeKey.AppendChild(xeformX); // 混合时,吸液距离类型名称 xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodCoatingFile.mixAspiratePositionText; xeformX.AppendChild(xeformX1); // 混合时,吸液距离类型Id xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodCoatingFile.mixAspiratePositionValue.ToString(); xeformX.AppendChild(xeformX1); // 混合时,吸液距离 xeformX = xmlDoc.CreateElement("mixAspirateDistance"); xeformX.InnerText = methodCoatingFile.mixAspirateDistance.ToString(); xeKey.AppendChild(xeformX); // 混合时,吸液速度 xeformX = xmlDoc.CreateElement("mixAspirateSpeed"); xeformX.InnerText = methodCoatingFile.mixAspirateSpeed.ToString(); xeKey.AppendChild(xeformX); #endregion #region 混合时,排液参数 xeformX = xmlDoc.CreateElement("mixDispensePosition"); xeKey.AppendChild(xeformX); // 混合时,排液距离类型 xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodCoatingFile.mixDispensePositionText; xeformX.AppendChild(xeformX1); // 混合时,排液距离类型 xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodCoatingFile.mixDispensePositionValue.ToString(); xeformX.AppendChild(xeformX1); // 混合时,排液距离 xeformX = xmlDoc.CreateElement("mixDispenseDistance"); xeformX.InnerText = methodCoatingFile.mixDispenseDistance.ToString(); xeKey.AppendChild(xeformX); // 混合时,排液速度 xeformX = xmlDoc.CreateElement("mixDispenseSpeed"); xeformX.InnerText = methodCoatingFile.mixDispenseSpeed.ToString(); xeKey.AppendChild(xeformX); #endregion #endregion // 涂布调节高度 xeformX = xmlDoc.CreateElement("coatingOffset"); xeformX.InnerText = methodCoatingFile.coatingOffset.ToString(); xeKey.AppendChild(xeformX); root.AppendChild(xeKey);//挂载父节点 } #region 创建设置变量方法的xml public void CreateSetVariableXmlNode(int index, MethodSetVariable methodSetVariable, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); //xeformX.InnerText = methodPauseMove.status; xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodSetVariable.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodSetVariable.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); //xeformX.InnerText = methodPauseMove.strIndex; xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("enablepopwin"); xeformX.InnerText = methodSetVariable.enablepopwin.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("variablename"); xeformX.InnerText = methodSetVariable.variablename; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("variablevalue"); xeformX.InnerText = methodSetVariable.variablevalue; xeKey.AppendChild(xeformX); root.AppendChild(xeKey);//挂载父节点 } #endregion #region 创建变量计算方法的xml public void CreateVarCalcXmlNode(int index, MethodVarCalc method, MethodEx mi) { #region 共有 XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); //xeformX.InnerText = method.status; xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = method.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = method.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); //xeformX.InnerText = method.strIndex; xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); #endregion // 计算结果 xeformX = xmlDoc.CreateElement("calcResult"); xeformX.InnerText = method.calcResult.ToString(); xeKey.AppendChild(xeformX); // 计算值1 xeformX = xmlDoc.CreateElement("calcValue1"); xeformX.InnerText = method.calcValue1.ToString(); xeKey.AppendChild(xeformX); // 计算值2 xeformX = xmlDoc.CreateElement("calcValue2"); xeformX.InnerText = method.calcValue2.ToString(); xeKey.AppendChild(xeformX); // 计算符 xeformX = xmlDoc.CreateElement("calcOperator"); xeformX.InnerText = method.calcOperator.ToString(); xeKey.AppendChild(xeformX); root.AppendChild(xeKey);//挂载父节点 } #endregion #region 创建子方法 方法的xml public void CreateSubMethodXmlNode(int index, MethodSubMethod method, MethodEx mi) { #region 共有 XmlElement xeKey = xmlDoc.CreateElement("method"); XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = method.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = method.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("comment"); xeformX.InnerText = method.comment; xeKey.AppendChild(xeformX); #endregion // 文件路径 xeformX = xmlDoc.CreateElement("filePath"); xeformX.InnerText = method.filePath.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("isConcurrence"); xeformX.InnerText = method.isConcurrence.ToString(); xeKey.AppendChild(xeformX); root.AppendChild(xeKey);//挂载父节点 } #endregion #region 创建文件变量导入方法的xml public void CreateVariableImportXmlNode(int index, MethodVariableImport methodVariableImport, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodVariableImport.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodVariableImport.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("filePath"); xeformX.InnerText = methodVariableImport.filePath; xeKey.AppendChild(xeformX); //DataTable转化成节点 CreateTransferFileDataTable(methodVariableImport, xeKey); root.AppendChild(xeKey);//挂载父节点 } public void CreateTransferFileDataTable(MethodVariableImport methodVariableImport, XmlElement xeKey) { XmlElement xeformXBase = xmlDoc.CreateElement("transferDataTable"); DataTable dt = methodVariableImport.transferDataTable; if (dt != null) { for (int i = 0; i < dt.Columns.Count; i++) { XmlElement xeformX = xmlDoc.CreateElement(dt.Columns[i].ColumnName); xeformXBase.AppendChild(xeformX); for (int j = 0; j < dt.Rows.Count; j++) { XmlElement xeformX1 = xmlDoc.CreateElement("node"); xeformX1.InnerText = dt.Rows[j][i].ToString(); xeformX.AppendChild(xeformX1); } } } xeKey.AppendChild(xeformXBase); } #endregion #region 创建IfStart方法的xml public void CreateIfStartXmlNode(int index, MethodIfElse methodIfElse, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); //xeformX.InnerText = methodLoop.status; xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodIfElse.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); //xeformX.InnerText = methodLoop.strIndex; xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("endIndex"); xeformX.InnerText = methodIfElse.endIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodIfElse.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("variableName"); xeformX.InnerText = methodIfElse.variableName; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("variableValue"); xeformX.InnerText = methodIfElse.variableValue; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("logicCondition"); xeformX.InnerText = ((int)methodIfElse.logicCondition).ToString(); xeKey.AppendChild(xeformX); root.AppendChild(xeKey);//挂载父节点 } #endregion #region 创建IfEnd结束的xml public void CreateIfEndXmlNode(int index, string strIndex) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = "Method_ifend"; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); xeformX.InnerText = strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = "if结束"; xeKey.AppendChild(xeformX); root.AppendChild(xeKey);//挂载父节点 } #endregion #region 创建循环结束的xml public void CreateElseEndXmlNode(int index, string strIndex) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = "Method_elseend"; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); xeformX.InnerText = strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = "else结束"; xeKey.AppendChild(xeformX); root.AppendChild(xeKey);//挂载父节点 } #endregion /// /// 创建吸液的xml /// /// /// /// private void CreateChoiceAgoAspirateChildXmlNode(XmlDocument xmlDoc, XmlElement xeKey, MethodChoiceAgoAspirateChild choiceAgoAspirateData) { XmlElement xeformX = xmlDoc.CreateElement("bEnableBeforeAspirate"); xeformX.InnerText = choiceAgoAspirateData.bEnableBeforeAspirate.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("wellarray"); xeformX.InnerText = choiceAgoAspirateData.wellarray; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("labwareAspirate"); xeKey.AppendChild(xeformX); XmlElement xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = choiceAgoAspirateData.labwareText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = choiceAgoAspirateData.labwareValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("positionAspirate"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = choiceAgoAspirateData.positionText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = choiceAgoAspirateData.positionValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("wellvolume"); xeformX.InnerText = choiceAgoAspirateData.wellvolume.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidid1"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = choiceAgoAspirateData.liquididText1; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = choiceAgoAspirateData.liquididValue1; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("liquidrangeid1"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = choiceAgoAspirateData.liquidrangeidText1; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = choiceAgoAspirateData.liquidrangeidValue1; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("liquidpid1"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = choiceAgoAspirateData.liquidpidText1; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = choiceAgoAspirateData.liquidpidValue1; xeformX.AppendChild(xeformX1); } /// /// 构建非圆形皿 /// /// /// /// public void CreateUltrasonicObjectDataTable(MethodCoatingFile methodTransferFile, XmlElement xeKey) { XmlElement xeformXBase = xmlDoc.CreateElement("ultrasonicObject"); List dt = methodTransferFile.ultrasonicObjectList; if (dt != null) { for (int i = 0; i < dt.Count; i++) { XmlElement xeformX = xmlDoc.CreateElement("Dish" + dt[i].labwareText); xeformXBase.AppendChild(xeformX); XmlElement xeformX1 = xmlDoc.CreateElement("labwareText"); xeformX1.InnerText = dt[i].labwareText.ToString(); xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("labwareValue"); xeformX1.InnerText = dt[i].labwareValue.ToString(); xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("rowNum"); xeformX1.InnerText = dt[i].rowNum.ToString(); xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("columnNum"); xeformX1.InnerText = dt[i].columnNum.ToString(); xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("closeTopVal"); xeformX1.InnerText = dt[i].closeTopVal.ToString(); xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("closeLeftVal"); xeformX1.InnerText = dt[i].closeLeftVal.ToString(); xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("xAxisVal"); xeformX1.InnerText = dt[i].xAxisVal.ToString(); xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("yAxisVal"); xeformX1.InnerText = dt[i].yAxisVal.ToString(); xeformX.AppendChild(xeformX1); } } xeKey.AppendChild(xeformXBase); } /// /// 构建圆形皿 /// /// /// private void CreateUltrasonicDishObjectDataTable(MethodCoatingFile methodTransferFile, XmlElement xeKey) { XmlElement xeformXBase = xmlDoc.CreateElement("ultrasonicDishObject"); List dt = methodTransferFile.ultrasonicDishObjectList; if (dt != null) { for (int i = 0; i < dt.Count; i++) { XmlElement xeformX = xmlDoc.CreateElement("Lab" + dt[i].labwareText); xeformXBase.AppendChild(xeformX); XmlElement xeformX1 = xmlDoc.CreateElement("labwareText"); xeformX1.InnerText = dt[i].labwareText.ToString(); xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("labwareValue"); xeformX1.InnerText = dt[i].labwareValue.ToString(); xeformX.AppendChild(xeformX1); XmlElement xeformPoint = xmlDoc.CreateElement("pointList"); for (int j = 0; j < dt[i].pointList.Count; j++) { XmlElement xeformNew = xmlDoc.CreateElement("point"); xeformPoint.AppendChild(xeformNew); XmlElement xeformX2 = xmlDoc.CreateElement("xAxisVal"); xeformX2.InnerText = dt[i].pointList[j].dropdown_id.ToString(); xeformNew.AppendChild(xeformX2); xeformX2 = xmlDoc.CreateElement("yAxisVal"); xeformX2.InnerText = dt[i].pointList[j].dropdown_name.ToString(); xeformNew.AppendChild(xeformX2); } xeformX.AppendChild(xeformPoint); xeformXBase.AppendChild(xeformX); } } xeKey.AppendChild(xeformXBase); } private void CreateTransferFileDataTable(MethodCoatingFile methodTransferFile, XmlElement xeKey) { XmlElement xeformXBase = xmlDoc.CreateElement("transferDataTable"); DataTable dt = methodTransferFile.transferDataTable; if (dt != null) { for (int i = 0; i < dt.Columns.Count; i++) { XmlElement xeformX = xmlDoc.CreateElement(dt.Columns[i].ColumnName); xeformXBase.AppendChild(xeformX); for (int j = 0; j < dt.Rows.Count; j++) { XmlElement xeformX1 = xmlDoc.CreateElement("node"); xeformX1.InnerText = dt.Rows[j][i].ToString(); xeformX.AppendChild(xeformX1); } } } xeKey.AppendChild(xeformXBase); } #endregion #region 创建涂布报告移液方法的xml public void CreateCoatingReportXmlNode(int index, MethodCoatingReport methodCoatingReport, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); //xeformX.InnerText = methodCoatingReport.status; xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodCoatingReport.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodCoatingReport.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); //xeformX.InnerText = methodCoatingReport.strIndex; xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("filePath"); xeformX.InnerText = methodCoatingReport.filePath; xeKey.AppendChild(xeformX); //DataTable转化成节点 CreateReportColumnDataTable(methodCoatingReport, xeKey, out xeKey); xeformX = xmlDoc.CreateElement("filePostfix"); xeformX.InnerText = methodCoatingReport.filePostfix; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("fileName"); xeformX.InnerText = methodCoatingReport.fileName; xeKey.AppendChild(xeformX); root.AppendChild(xeKey);//挂载父节点 } public void CreateReportColumnDataTable(MethodCoatingReport methodTransferFile, XmlElement xeKeyR, out XmlElement xeKey) { XmlElement xeformXBase = xmlDoc.CreateElement("transferDataTable"); List dt = methodTransferFile.reportColumns; if (dt != null) { XmlElement xeformX = xmlDoc.CreateElement("序号"); xeformXBase.AppendChild(xeformX); for (int j = 0; j < dt.Count; j++) { XmlElement xeformX1 = xmlDoc.CreateElement("node"); xeformX1.InnerText = dt[j].reportcolumn_id.ToString(); xeformX.AppendChild(xeformX1); } xeformX = xmlDoc.CreateElement("字段名"); xeformXBase.AppendChild(xeformX); for (int j = 0; j < dt.Count; j++) { XmlElement xeformX1 = xmlDoc.CreateElement("node"); xeformX1.InnerText = dt[j].reportcolumn_name.ToString(); xeformX.AppendChild(xeformX1); } xeformX = xmlDoc.CreateElement("列名"); xeformXBase.AppendChild(xeformX); for (int j = 0; j < dt.Count; j++) { XmlElement xeformX1 = xmlDoc.CreateElement("node"); xeformX1.InnerText = dt[j].reportcolumn_name.ToString(); xeformX.AppendChild(xeformX1); } } xeKey = xeKeyR; xeKey.AppendChild(xeformXBase); } #endregion #region 创建挑选转板方法的xml public void CreateChoiceAndTransferXmlNode(int index, MethodChoiceAndTransfer methodChoice, MethodEx mi) { #region Common XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodChoice.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodChoice.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); #endregion #region 机械臂 xeformX = xmlDoc.CreateElement("arm"); xeKey.AppendChild(xeformX); XmlElement xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodChoice.armText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodChoice.armValue; xeformX.AppendChild(xeformX1); #endregion #region 通道 xeformX = xmlDoc.CreateElement("channels"); if (methodChoice.channels != null) { xeformX.InnerText = string.Join(",", methodChoice.channels); } xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("headType"); xeformX.InnerText = methodChoice.headType; xeKey.AppendChild(xeformX); #endregion #region 菌落信息 xeformX = xmlDoc.CreateElement("bacteria"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodChoice.bacteriaText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodChoice.bacteriaValue; xeformX.AppendChild(xeformX1); #endregion #region 挑菌方式 xeformX = xmlDoc.CreateElement("choiceMode"); xeformX.InnerText = methodChoice.choiceMode.ToString(); xeKey.AppendChild(xeformX); #endregion #region 挑菌耗材 xeformX = xmlDoc.CreateElement("choiceLabware"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodChoice.choiceLabwareText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodChoice.choiceLabwareValue; xeformX.AppendChild(xeformX1); #endregion #region 枪头耗材 xeformX = xmlDoc.CreateElement("labwaretip"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodChoice.tipsLabwareText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodChoice.tipsLabwareValue; xeformX.AppendChild(xeformX1); #endregion #region 自动开关盖 xeformX = xmlDoc.CreateElement("autoOpenCloseCover"); xeformX.InnerText = methodChoice.autoOpenCloseCover.ToString(); xeKey.AppendChild(xeformX); #endregion #region 挑菌调节高度 xeformX = xmlDoc.CreateElement("choiceOffset"); xeformX.InnerText = methodChoice.choiceOffset.ToString(); xeKey.AppendChild(xeformX); #endregion #region 超声探测 xeformX = xmlDoc.CreateElement("isEnableultrasonic"); xeformX.InnerText = methodChoice.isEnableultrasonic.ToString().ToLower(); xeKey.AppendChild(xeformX); // 创建超声子页面数据 CreateUltrasonicChildXmlNode(xmlDoc, xeKey, methodChoice.ultrasonicData); #endregion #region 挑菌前吸液 // 创建创建挑菌前环境设置的xml CreateChoiceAgoAspirateChildXmlNode(xmlDoc, xeKey, methodChoice.choiceAgoAspirateData); #endregion root.AppendChild(xeKey);//挂载父节点 } #endregion #region 创建涂布转板方法的xml public void CreateCoatingAndTransferXmlNode(int index, MethodCoatingAndTransfer methodCoating, MethodEx mi) { #region Common XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodCoating.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodCoating.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); #endregion #region 机械臂 xeformX = xmlDoc.CreateElement("arm"); xeKey.AppendChild(xeformX); XmlElement xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodCoating.armText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodCoating.armValue; xeformX.AppendChild(xeformX1); #endregion #region 通道 xeformX = xmlDoc.CreateElement("channels"); if (methodCoating.channels != null) { xeformX.InnerText = string.Join(",", methodCoating.channels); } xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("headType"); xeformX.InnerText = methodCoating.headType; xeKey.AppendChild(xeformX); #endregion #region 涂布方式 xeformX = xmlDoc.CreateElement("coatingMode"); xeformX.InnerText = methodCoating.coatingModeValue.ToString(); xeKey.AppendChild(xeformX); #endregion #region 涂布数量 xeformX = xmlDoc.CreateElement("coatingCount"); xeformX.InnerText = methodCoating.coatingCount.ToString(); xeKey.AppendChild(xeformX); #endregion #region 接种耗材A xeformX = xmlDoc.CreateElement("coatingLabware"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodCoating.coatingLabwareAText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodCoating.coatingLabwareAValue; xeformX.AppendChild(xeformX1); #endregion #region 接种耗材B //xeformX = xmlDoc.CreateElement("coatingLabwareB"); //xeKey.AppendChild(xeformX); //xeformX1 = xmlDoc.CreateElement("text"); //xeformX1.InnerText = methodCoating.coatingLabwareBText; //xeformX.AppendChild(xeformX1); //xeformX1 = xmlDoc.CreateElement("value"); //xeformX1.InnerText = methodCoating.coatingLabwareBValue; //xeformX.AppendChild(xeformX1); #endregion #region 自动开关盖 xeformX = xmlDoc.CreateElement("autoOpenCloseCover"); xeformX.InnerText = methodCoating.autoOpenCloseCover.ToString(); xeKey.AppendChild(xeformX); #endregion #region 涂布方式:上下相关 // 距底距离:mm xeformX = xmlDoc.CreateElement("distanceFromBottom"); xeformX.InnerText = methodCoating.distanceFromBottom.ToString(); xeKey.AppendChild(xeformX); // 上下移动时的距离:mm xeformX = xmlDoc.CreateElement("shakeDistanceValue"); xeformX.InnerText = methodCoating.shakeDistanceValue.ToString(); xeKey.AppendChild(xeformX); // 上下移动时次数 xeformX = xmlDoc.CreateElement("shakeCountValue"); xeformX.InnerText = methodCoating.shakeCountValue.ToString(); xeKey.AppendChild(xeformX); #endregion root.AppendChild(xeKey);//挂载父节点 } #endregion #region 创建超声探测方法的xml public void CreateUltrasonicXmlNode(int index, MethodUltrasonic methodUltrasonic, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); //xeformX.InnerText = methodCoatingFile.status; xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodUltrasonic.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodUltrasonic.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); // 创建超声子页面数据 CreateUltrasonicChildXmlNode(xmlDoc, xeKey, methodUltrasonic.ultrasonicData); root.AppendChild(xeKey);//挂载父节点 } /// /// 创建超声子页面数据 /// /// /// /// private void CreateUltrasonicChildXmlNode(XmlDocument xmlDoc, XmlElement xeKey, MethodUltrasonicChild ultrasonicData) { #region 耗材信息 XmlElement xeformX = xmlDoc.CreateElement("labware"); xeKey.AppendChild(xeformX); XmlElement xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = ultrasonicData.labwareText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = ultrasonicData.labwareValue; xeformX.AppendChild(xeformX1); #endregion #region 板位信息 xeformX = xmlDoc.CreateElement("position"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = ultrasonicData.positionText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = ultrasonicData.positionValue; xeformX.AppendChild(xeformX1); #endregion #region 圆形皿 xeformX = xmlDoc.CreateElement("xDishAxisVal"); xeformX.InnerText = ultrasonicData.xDishAxisVal.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("yDishAxisVal"); xeformX.InnerText = ultrasonicData.yDishAxisVal.ToString(); xeKey.AppendChild(xeformX); // 获取圆形皿多个探测点 CreateUltrasonicDishDataTable(ultrasonicData, xeKey); #endregion #region 非圆形皿 xeformX = xmlDoc.CreateElement("rowNum"); xeformX.InnerText = ultrasonicData.rowNum.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("columnNum"); xeformX.InnerText = ultrasonicData.columnNum.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("closeTopVal"); xeformX.InnerText = ultrasonicData.closeTopVal.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("closeLeftVal"); xeformX.InnerText = ultrasonicData.closeLeftVal.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("xAxisVal"); xeformX.InnerText = ultrasonicData.xAxisVal.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("yAxisVal"); xeformX.InnerText = ultrasonicData.yAxisVal.ToString(); xeKey.AppendChild(xeformX); #endregion } // 获取圆形皿多个探测点 private void CreateUltrasonicDishDataTable(MethodUltrasonicChild ultrasonicData, XmlElement xeKey) { XmlElement xeformXBase = xmlDoc.CreateElement("pointList"); ObservableCollection dt = ultrasonicData.pointList; if (dt != null) { for (int i = 0; i < 2; i++) { XmlElement xeformX; if (i == 0) { xeformX = xmlDoc.CreateElement("xOffset"); xeformXBase.AppendChild(xeformX); } else { xeformX = xmlDoc.CreateElement("yOffset"); xeformXBase.AppendChild(xeformX); } for (int j = 0; j < dt.Count; j++) { XmlElement xeformX1 = xmlDoc.CreateElement("node"); if (i == 0) // 距中心点X轴偏移 { xeformX1.InnerText = dt[j].dropdown_id.ToString(); } // 距中心点Y轴偏移 else { xeformX1.InnerText = dt[j].dropdown_name.ToString(); } xeformX.AppendChild(xeformX1); } } } xeKey.AppendChild(xeformXBase); } #endregion #region 创建第三设备方法的xml public void CreateThirdPartXmlNode(int index, MethodThirdPart methodThirdPart, MethodEx mEx) { #region Base XmlElement xeKey = xmlDoc.CreateElement("method"); // 创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mEx.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); xeformX.InnerText = (mEx.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodThirdPart.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodThirdPart.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); xeformX.InnerText = mEx.strIndex; xeKey.AppendChild(xeformX); #endregion xeformX = xmlDoc.CreateElement("isThirdPart"); xeformX.InnerText = true.ToString(); xeKey.AppendChild(xeformX); #region Device XmlElement xeformPoint = xmlDoc.CreateElement("device"); XmlElement xmlElt = xmlDoc.CreateElement("id"); xmlElt.InnerText = methodThirdPart.device==null?"": methodThirdPart.device.Id; xeformPoint.AppendChild(xmlElt); xmlElt = xmlDoc.CreateElement("name"); xmlElt.InnerText = methodThirdPart.device.Name; xeformPoint.AppendChild(xmlElt); xmlElt = xmlDoc.CreateElement("communicateType"); xmlElt.InnerText = methodThirdPart.device.CommunicateType.ToString(); xeformPoint.AppendChild(xmlElt); xeKey.AppendChild(xeformPoint); #endregion #region DeviceMethod xeformPoint = xmlDoc.CreateElement("method"); xmlElt = xmlDoc.CreateElement("id"); xmlElt.InnerText = methodThirdPart.deviceMethodValue; xeformPoint.AppendChild(xmlElt); xmlElt = xmlDoc.CreateElement("name"); xmlElt.InnerText = methodThirdPart.deviceMethodText; xeformPoint.AppendChild(xmlElt); xeKey.AppendChild(xeformPoint); #endregion // Socket-TCP标准协议 if (mEx.device.CommunicateType == EnumManagement.GetEnumValue(CommunicateTypeEnum.Socket)) { // 创建Socket-TCP标准协议数据 CreateThirdPartSocketXmlNode(xmlDoc, xeKey, methodThirdPart); } else { } root.AppendChild(xeKey);//挂载父节点 } /// /// 创建Socket-TCP标准协议数据 /// /// /// /// private void CreateThirdPartSocketXmlNode(XmlDocument xmlDoc, XmlElement xeKey, MethodThirdPart methodThirdPart) { XmlElement xeformPoint = xmlDoc.CreateElement("paramtersSocket"); foreach (var ParametersItem in methodThirdPart.methodParametersData) { XmlElement xeformNew = xmlDoc.CreateElement("paramtersGroup"); xeformPoint.AppendChild(xeformNew); XmlElement xmlElt = xmlDoc.CreateElement("id"); xmlElt.InnerText = ParametersItem.Id; xeformNew.AppendChild(xmlElt); xmlElt = xmlDoc.CreateElement("name"); xmlElt.InnerText = ParametersItem.ParameterName; xeformNew.AppendChild(xmlElt); xmlElt = xmlDoc.CreateElement("value"); xmlElt.InnerText = ParametersItem.Value; xeformNew.AppendChild(xmlElt); } xeKey.AppendChild(xeformPoint); } #endregion #region 创建梯度稀释方法的xml public void CreateDilutionXmlNode(int index, MethodDilution methodDilution, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodDilution.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodDilution.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); #region 机械臂 xeformX = xmlDoc.CreateElement("arm"); xeKey.AppendChild(xeformX); XmlElement xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodDilution.armText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodDilution.armValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("headType"); xeformX.InnerText = methodDilution.headType; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("channels"); xeformX.InnerText = string.Join(",", methodDilution.channels); xeKey.AppendChild(xeformX); #endregion #region 吸头盒 xeformX = xmlDoc.CreateElement("labwaretip"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodDilution.labwaretipText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodDilution.labwaretipValue; xeformX.AppendChild(xeformX1); #endregion #region 选择目标板 相关 xeformX = xmlDoc.CreateElement("position"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodDilution.positionTextGradientDilution; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodDilution.positionValueGradientDilution; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("labware"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodDilution.labwareTextGradientDilution; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodDilution.labwareValueGradientDilution; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("wellarray"); xeformX.InnerText = methodDilution.wellarrayGradientDilution; xeKey.AppendChild(xeformX); // 体积 xeformX = xmlDoc.CreateElement("volume"); xeformX.InnerText = methodDilution.volume.ToString(); xeKey.AppendChild(xeformX); #region 液体 // 液体类型 xeformX = xmlDoc.CreateElement("liquidType"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodDilution.liquidTypeTextGradientDilution; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodDilution.liquidTypeValueGradientDilution; xeformX.AppendChild(xeformX1); // 液体范围 xeformX = xmlDoc.CreateElement("liquidRange"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodDilution.liquidRangeTextGradientDilution; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodDilution.liquidRangeValueGradientDilution; xeformX.AppendChild(xeformX1); // 液体 xeformX = xmlDoc.CreateElement("liquid"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodDilution.liquidTextGradientDilution; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodDilution.liquidValueGradientDilution; xeformX.AppendChild(xeformX1); #endregion // 稀释方向 xeformX = xmlDoc.CreateElement("dilutionDirection"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodDilution.dilutionDirectionText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = EnumManagement.GetEnumValue(methodDilution.dilutionDirectionValue).ToString(); xeformX.AppendChild(xeformX1); // 更换Tip xeformX = xmlDoc.CreateElement("changeTipsValue"); xeformX.InnerText = methodDilution.changeTipsValueGradientDilution; xeKey.AppendChild(xeformX); // 舍弃选中范围最后一行或最后一列多余的体积 xeformX = xmlDoc.CreateElement("isDiscardLastVolume"); xeformX.InnerText = methodDilution.isDiscardLastVolume.ToString(); xeKey.AppendChild(xeformX); #endregion #region 梯度稀释设置 相关 xeformX = xmlDoc.CreateElement("positionDilution"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodDilution.positionTextAddDiluent; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodDilution.positionValueAddDiluent; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("labwareDilution"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodDilution.labwareTextAddDiluent; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodDilution.labwareValueAddDiluent; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("wellarrayDilution"); xeformX.InnerText = methodDilution.wellarrayAddDiluent; xeKey.AppendChild(xeformX); // 稀释倍数 xeformX = xmlDoc.CreateElement("dilutionFactor"); xeformX.InnerText = methodDilution.dilutionFactor.ToString(); xeKey.AppendChild(xeformX); #region 液体 // 液体类型 xeformX = xmlDoc.CreateElement("liquidTypeDilution"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodDilution.liquidTypeTextAddDiluent; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodDilution.liquidTypeValueAddDiluent; xeformX.AppendChild(xeformX1); // 液体范围 xeformX = xmlDoc.CreateElement("liquidRangeDilution"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodDilution.liquidRangeTextAddDiluent; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodDilution.liquidRangeValueAddDiluent; xeformX.AppendChild(xeformX1); // 液体 xeformX = xmlDoc.CreateElement("liquidDilution"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodDilution.liquidTextAddDiluent; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodDilution.liquidValueAddDiluent; xeformX.AppendChild(xeformX1); #endregion #region 混合 xeformX = xmlDoc.CreateElement("enableMix"); xeformX.InnerText = methodDilution.bMix.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("mixvolume"); xeformX.InnerText = methodDilution.mixvolume.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("mixcount"); xeformX.InnerText = methodDilution.mixcount.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("mixAspiratePosition"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodDilution.mixAspiratePositionText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodDilution.mixAspiratePositionValue.ToString(); xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("mixAspirateDistance"); xeformX.InnerText = methodDilution.mixAspirateDistance.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("mixAspirateSpeed"); xeformX.InnerText = methodDilution.mixAspirateSpeed.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("mixDispensePosition"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodDilution.mixDispensePositionText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodDilution.mixDispensePositionValue.ToString(); xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("mixDispenseDistance"); xeformX.InnerText = methodDilution.mixDispenseDistance.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("mixDispenseSpeed"); xeformX.InnerText = methodDilution.mixDispenseSpeed.ToString(); xeKey.AppendChild(xeformX); #endregion // 更换Tip xeformX = xmlDoc.CreateElement("changeTipsValueDilution"); xeformX.InnerText = methodDilution.changeTipsValueAddDiluent; xeKey.AppendChild(xeformX); // 目标板选中范围的首行或首列加入稀释液 xeformX = xmlDoc.CreateElement("isTargetSelectRangeFirstAddDiluent"); xeformX.InnerText = methodDilution.isTargetSelectRangeFirstAddDiluent.ToString(); xeKey.AppendChild(xeformX); #endregion root.AppendChild(xeKey);//挂载父节点 } #endregion #region 创建文件切胶方法的xml public void CreateFileElectroCutGumXmlNode(int index, MethodElectroFile methodElectroFile, MethodEx mi) { XmlElement xeKey = xmlDoc.CreateElement("method");//创建子节点,并且设置子节点的属性 XmlAttribute xeType = xmlDoc.CreateAttribute("id"); xeType.InnerText = index.ToString(); xeKey.SetAttributeNode(xeType); XmlElement xeformX = xmlDoc.CreateElement("isrun"); xeformX.InnerText = mi.method_isrun; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("status"); xeformX.InnerText = (mi.isEnabled ? "enable" : "disable"); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("name"); xeformX.InnerText = methodElectroFile.name; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("comment"); xeformX.InnerText = methodElectroFile.comment; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("label"); xeformX.InnerText = methodElectroFile.label; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("strIndex"); xeformX.InnerText = mi.strIndex; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("arm"); xeKey.AppendChild(xeformX); XmlElement xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodElectroFile.armText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodElectroFile.armValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("headType"); xeformX.InnerText = methodElectroFile.headType; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("labwaretip"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodElectroFile.labwaretipText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodElectroFile.labwaretipValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("channels"); string chs = string.Empty; if (methodElectroFile.channels != null) { if (methodElectroFile.channels.Length != 0) { for (int i = 0; i < methodElectroFile.channels.Length; i++) { chs += methodElectroFile.channels[i] + ","; } chs = chs.Substring(0, chs.Length - 1); } } xeformX.InnerText = chs; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("filePath"); xeformX.InnerText = methodElectroFile.filePath; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("beginLine"); xeformX.InnerText = methodElectroFile.beginLine.ToString(); xeKey.AppendChild(xeformX); //DataTable转化成节点 CreateTransferFileDataTable(methodElectroFile, xeKey); xeformX = xmlDoc.CreateElement("sourceLabware"); xeformX.InnerText = methodElectroFile.sourceLabware; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("sourceWell"); xeformX.InnerText = methodElectroFile.sourceWell; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("destinationLabware"); xeformX.InnerText = methodElectroFile.destinationLabware; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("destinationWell"); xeformX.InnerText = methodElectroFile.destinationWell; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("dpsVolume"); xeformX.InnerText = methodElectroFile.destVolume; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("tipSet"); xeformX.InnerText = methodElectroFile.tipSet; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("changeTipsMode"); xeformX.InnerText = methodElectroFile.changeTipsMode.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("changeToTipText"); xeformX.InnerText = methodElectroFile.changeToTipText; xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("changeToTipValue"); xeformX.InnerText = methodElectroFile.changeToTipValue.ToString(); xeKey.AppendChild(xeformX); xeformX = xmlDoc.CreateElement("liquidid"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodElectroFile.liquididText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodElectroFile.liquididValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("liquidrangeid"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodElectroFile.liquidrangeidText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodElectroFile.liquidrangeidValue; xeformX.AppendChild(xeformX1); xeformX = xmlDoc.CreateElement("liquidpid"); xeKey.AppendChild(xeformX); xeformX1 = xmlDoc.CreateElement("text"); xeformX1.InnerText = methodElectroFile.liquidpidText; xeformX.AppendChild(xeformX1); xeformX1 = xmlDoc.CreateElement("value"); xeformX1.InnerText = methodElectroFile.liquidpidValue; xeformX.AppendChild(xeformX1); root.AppendChild(xeKey);//挂载父节点 } public void CreateTransferFileDataTable(MethodElectroFile methodElectroFile, XmlElement xeKey) { XmlElement xeformXBase = xmlDoc.CreateElement("transferDataTable"); DataTable dt = methodElectroFile.transferDataTable; if (dt != null) { for (int i = 0; i < dt.Columns.Count; i++) { XmlElement xeformX = xmlDoc.CreateElement("subnode"); XmlAttribute xeType = xmlDoc.CreateAttribute("columnname"); xeType.InnerText = dt.Columns[i].ColumnName.ToString(); xeformX.SetAttributeNode(xeType); xeformXBase.AppendChild(xeformX); for (int j = 0; j < dt.Rows.Count; j++) { XmlElement xeformX1 = xmlDoc.CreateElement("node"); xeformX1.InnerText = dt.Rows[j][i].ToString(); xeformX.AppendChild(xeformX1); } } } xeKey.AppendChild(xeformXBase); } #endregion #region 保存方法xml对象 public bool SaveXml(string filePath) { bool bIsOk = false; try { if (xmlDoc.SelectNodes("root/method").Count > 0) { xmlDoc.Save(filePath); bIsOk = true; } } catch (Exception e) { LoggerHelper.ErrorLog("ERROR:", e); bIsOk = false; } return bIsOk; } #endregion #region 读取方法序列xml对象文件返回xmlDoc对象 /// /// 读取方法序列xml对象文件返回xmlDoc对象 /// /// 文件路径 /// xmlDoc对象 public XmlDocument ReadMethodFile(string fileName) { XmlDocument xmlDocument = new XmlDocument(); xmlDocument.Load(fileName); return xmlDocument; } #endregion } }