Ejemplo n.º 1
0
 private static FXRegionInfoList GetFXRegionInfoList(XmlNode attributeNode,FXRegionType regionType)
 {
     FXRegionInfoList list = new FXRegionInfoList();
     XmlNode regionNode;
     if(regionType == FXRegionType.Param)
         regionNode = attributeNode.SelectSingleNode("ParamRegion");
     else
         regionNode = attributeNode.SelectSingleNode("SpecialRegion");
     list.From = Convert.ToInt32(regionNode.Attributes["from"].Value);
     list.Len = Convert.ToInt32(regionNode.Attributes["len"].Value);
     list.IsLoaded = false;
     list.LoadTime = DateTime.MinValue;
     XmlNodeList paramNodeList = regionNode.ChildNodes;
     foreach (XmlNode paramNode in paramNodeList)
     {
         if(paramNode.NodeType == XmlNodeType.Element)
         {
             FXRegionInfoItem info = new FXRegionInfoItem();
             info.Name = paramNode.Attributes["name"].Value;
             info.TypeValue = Convert.ToInt32(paramNode.Attributes["type"].Value);
             info.Offset = Convert.ToInt32(paramNode.Attributes["offset"].Value);
             info.Len = Convert.ToInt32(paramNode.Attributes["len"].Value);
             info.Value = null;
             list.Items.Add(info.TypeValue, info);
         }
     }
     return list;
 }
Ejemplo n.º 2
0
 /// <summary>使用这个方法获得特定FXRegionInfo的实例
 /// 
 /// </summary>
 /// <param name="fxModel">PLC的型号</param>
 /// <param name="type">区域类型:参数区域或者特殊区域</param>
 /// <param name="typeInside">参数区域或者特殊区域内部类型由FXParamType或者FXSpecialType指定</param>
 /// <returns></returns>
 public static FXRegionInfo CreateFXRegionInfo(string fxModel,FXRegionType type,int typeInside,int len)
 {
     if(type == FXRegionType.Param)
     {
         FXParamType paramType = (FXParamType)typeInside;
         if (paramType == FXParamType.Title)           //如果是PLC标题,那么返回string类型的区域信息数据
             return new FXStringRegionInfo(len);
         else if (paramType == FXParamType.MLockFrom || paramType == FXParamType.MLockTo)
             return new FXRegisterRegionInfo(fxModel, "M");
         else if (paramType == FXParamType.SLockFrom || paramType == FXParamType.SLockTo)
             return new FXRegisterRegionInfo(fxModel, "S");
         else if (paramType == FXParamType.C16LockFrom || paramType == FXParamType.C16LockTo)
             return new FXRegisterRegionInfo(fxModel, "C");
         else if (paramType == FXParamType.C32LockFrom || paramType == FXParamType.C32LockTo)
             return new FXRegisterRegionInfo(fxModel, "Cp");
         else if (paramType == FXParamType.DLockFrom || paramType == FXParamType.DLockTo)
             return new FXRegisterRegionInfo(fxModel, "D");
         else
             return new FXRegionInfo();
     }
     return null;
 }