/// <summary> /// 加载XML文档 /// </summary> /// <param name="p_str_ProtocolName">协议名称</param> private void LoadXmlData(string p_str_ProtocolName) { if (p_str_ProtocolName == "") { return; } CLDC_DataCore.DataBase.clsXmlControl xmlNode = new CLDC_DataCore.DataBase.clsXmlControl(System.Windows.Forms.Application.StartupPath + CLDC_DataCore.Const.Variable.CONST_CARRIER); if (xmlNode.Count() == 0) { return; } System.Xml.XmlNode xnd_FindXmlNode = null; if (p_str_ProtocolName != "") { xnd_FindXmlNode = CLDC_DataCore.DataBase.clsXmlControl.FindSencetion(xmlNode.toXmlNode(), CLDC_DataCore.DataBase.clsXmlControl.XPath(string.Format("R,CarrierName,{0}", p_str_ProtocolName))); } if (xnd_FindXmlNode == null) { return; } #region ----------------------------加载协议文件信息---------------------------------------------------------------------- this.m_str_ProtocolName = xnd_FindXmlNode.Attributes["CarrierName"].Value; //协议名称 this.m_str_CarrierType = CLDC_DataCore.DataBase.clsXmlControl.getNodeAttributeValue(xnd_FindXmlNode, "CarrierType"); //协议类型 this.m_str_ReadType = CLDC_DataCore.DataBase.clsXmlControl.getNodeAttributeValue(xnd_FindXmlNode, "RdType"); //抄表器类型 this.m_str_CommuType = CLDC_DataCore.DataBase.clsXmlControl.getNodeAttributeValue(xnd_FindXmlNode, "CommuType"); //通讯方式 this.m_str_BaudRate = CLDC_DataCore.DataBase.clsXmlControl.getNodeAttributeValue(xnd_FindXmlNode, "BaudRate"); //波特率 this.m_str_ComPort = CLDC_DataCore.DataBase.clsXmlControl.getNodeAttributeValue(xnd_FindXmlNode, "Comm"); //端口号 this.m_int_CmdTime = int.Parse(CLDC_DataCore.DataBase.clsXmlControl.getNodeAttributeValue(xnd_FindXmlNode, "CmdTime")); //命令延时(ms) this.m_int_ByteTime = int.Parse(CLDC_DataCore.DataBase.clsXmlControl.getNodeAttributeValue(xnd_FindXmlNode, "ByteTime")); //字节延时(ms) if (xnd_FindXmlNode.Attributes.Count > 8) { this.RouterID = byte.Parse(CLDC_DataCore.DataBase.clsXmlControl.getNodeAttributeValue(xnd_FindXmlNode, "RouterID")); } xnd_FindXmlNode = CLDC_DataCore.DataBase.clsXmlControl.FindSencetion(xnd_FindXmlNode, CLDC_DataCore.DataBase.clsXmlControl.XPath("Prjs")); //转到项目数据节点 this.m_bln_Loading = true; //改写加载标志,表示加载协议成功 #endregion ---------------------------------------------------------------------------------------------------------------- }
/// <summary> /// 获取协议唯一标志组合名称列表 /// </summary> /// <returns></returns> public static Dictionary <string, string> GetProtocolDictionary() { CLDC_DataCore.DataBase.clsXmlControl _XmlNode = new CLDC_DataCore.DataBase.clsXmlControl(System.Windows.Forms.Application.StartupPath + CLDC_DataCore.Const.Variable.CONST_CARRIER); if (_XmlNode.Count() == 0) { return(new Dictionary <string, string>()); } Dictionary <string, string> _ReturnNames = new Dictionary <string, string>(); return(_ReturnNames); }
/// <summary> /// 移除一个谐波方案 /// </summary> /// <param name="FaName">方案名称</param> public void Remove(string FaName) { if (!IsFaName(FaName)) { return; } CLDC_DataCore.DataBase.clsXmlControl _Xml = new CLDC_DataCore.DataBase.clsXmlControl(System.Windows.Forms.Application.StartupPath + CLDC_DataCore.Const.Variable.CONST_XIEBO); _Xml.RemoveChild(CLDC_DataCore.DataBase.clsXmlControl.XPath(string.Format("{0},{1},{2}", "R", "Name", FaName))); _Xml.SaveXml(); _FaName.Remove(FaName); XieBoCol.Remove(FaName); return; }
/// <summary> /// 移除一个协议节点 /// </summary> /// <param name="p_str_ProtocolName">协议名称</param> /// <returns></returns> private static bool Remove(string p_str_ProtocolName) { if (p_str_ProtocolName == "") { return(false); } CLDC_DataCore.DataBase.clsXmlControl xmlNode = new CLDC_DataCore.DataBase.clsXmlControl(System.Windows.Forms.Application.StartupPath + CLDC_DataCore.Const.Variable.CONST_CARRIER); if (xmlNode.Count() == 0) { return(false); } if (p_str_ProtocolName != "") { xmlNode.RemoveChild(CLDC_DataCore.DataBase.clsXmlControl.XPath(string.Format("R,CarrierName,{0}", p_str_ProtocolName))); } xmlNode.SaveXml(); return(true); }
/// <summary> /// 方案存储 /// </summary> /// <param name="FaName">方案名称</param> /// <param name="Items">项目列表</param> public void Save(string FaName, List <CLDC_DataCore.Struct.StXieBo> Items) { this.Remove(FaName); CLDC_DataCore.DataBase.clsXmlControl _XmlNode = new CLDC_DataCore.DataBase.clsXmlControl(); _XmlNode.appendchild("", "R", "Name", FaName); for (int i = 0; i < Items.Count; i++) { if (CLDC_DataCore.DataBase.clsXmlControl.FindSencetion(_XmlNode.toXmlNode(), CLDC_DataCore.DataBase.clsXmlControl.XPath(string.Format("{0},{1},{2}", "C", "Name", (int)Items[i].YuanJian))) == null) //如果元件节点不存在,则追加一个 { _XmlNode.appendchild("", "C", "Name", ((int)Items[i].YuanJian).ToString()); } if (CLDC_DataCore.DataBase.clsXmlControl.FindSencetion(_XmlNode.toXmlNode(), CLDC_DataCore.DataBase.clsXmlControl.XPath(string.Format("{0},{1},{2}|{3},{4},{5}", "C", "Name", (int)Items[i].YuanJian, "D", "Name", Items[i].IsUb ? "U" : "I"))) == null) //如果电流电压节点不存在,则追加一个 { _XmlNode.appendchild(CLDC_DataCore.DataBase.clsXmlControl.XPath(string.Format("{0},{1},{2}", "C", "Name", ((int)Items[i].YuanJian).ToString())), "D", "Name", Items[i].IsUb ? "U" : "I"); } XmlNode _Node = CLDC_DataCore.DataBase.clsXmlControl.FindSencetion(_XmlNode.toXmlNode(), CLDC_DataCore.DataBase.clsXmlControl.XPath(string.Format("{0},{1},{2}|{3},{4},{5}", "C", "Name", ((int)Items[i].YuanJian).ToString(), "D", "Name", Items[i].IsUb ? "U" : "I"))); //获取电流电压节点 _Node = CLDC_DataCore.DataBase.clsXmlControl.RemoveChildNode(_Node, CLDC_DataCore.DataBase.clsXmlControl.XPath(string.Format("{0},{1},{2}", "E", "Cs", Items[i].Num.ToString()))); //在电流电电压节点下移除存在相同的谐波次数的节点 _Node.AppendChild(CLDC_DataCore.DataBase.clsXmlControl.CreateXmlNode("E", "Cs", Items[i].Num.ToString(), "Fd", Items[i].Extent.ToString(), "Xw", Items[i].Xw.ToString())); //追加谐波项目节点 } CLDC_DataCore.DataBase.clsXmlControl _SaveXml = new CLDC_DataCore.DataBase.clsXmlControl(System.Windows.Forms.Application.StartupPath + CLDC_DataCore.Const.Variable.CONST_XIEBO); //获取谐波方案XML文档 _SaveXml.appendchild(_XmlNode.toXmlNode()); //追加当前方案 _SaveXml.SaveXml(); //存储方案 _FaName.Add(FaName); XieBoCol.Add(FaName, Items); }
/// <summary> /// 获取载波协议名称列表 /// </summary> /// <returns></returns> public static List <string> GetProtocolNameList() { CLDC_DataCore.DataBase.clsXmlControl xmlControl = new CLDC_DataCore.DataBase.clsXmlControl(System.Windows.Forms.Application.StartupPath + CLDC_DataCore.Const.Variable.CONST_CARRIER); if (xmlControl.Count() == 0) { return(new List <string>()); } List <string> protocolNames = new List <string>(); System.Xml.XmlNode xmlNode = xmlControl.toXmlNode(); for (int i = 0; i < xmlNode.ChildNodes.Count; i++) { protocolNames.Add(xmlNode.ChildNodes[i].Attributes["CarrierName"].Value); } xmlNode = null; xmlControl = null; return(protocolNames); }