} //SplitDataPacket /// <summary> /// 向通讯管理机写入的数据(调用WriteDataToCmeAndGetReturnValInCell),并且取得通讯管理机的值 /// </summary> /// <param name="pointRTModel">要向通讯管理机写入的数据</param> /// <returns>通讯管理机的值:null 表示没有用取到通许管理机的值</returns> private double?GetControlReturnValue(PointRTModel pointRTModel) { double?returnVal = null; //null 表示没有用取到通许管理机的值 int devID = pointRTModel.ID.DevID; UpDataBase.RTWriteProxy.MType type = pointRTModel.ID.Type; int pointID = pointRTModel.ID.PointID; double pointVal = pointRTModel.Value; IDModel idModel = new IDModel(devID, type, pointID); IDEquipRes idEquipRes = null; //idModel对应的IDEquipRes if (_dictionMToE.ContainsKey(idModel.ToULongForIndex())) //判断_dictionMToE字典中是否存在idModel { idEquipRes = _dictionMToE[idModel.ToULongForIndex()]; } else { return(null); //没有用取到通许管理机的值 } CmeManager cmeMagr = _dicEquipIdToCmeManager[idEquipRes.EquipID]; //根据IDEquipRes找到对用的CmeManager DataPoint dataPiont = cmeMagr.CmEquipment.DicResIdToDataPoint[idEquipRes.RegID]; //根据idEquipRes.RegID找到对用的CmeManager上DataPoint //新创建的dataPiont的PointValue 默认值为null,不要漏了赋新值pointVal dataPiont.PointValue = pointVal; returnVal = cmeMagr.WriteDataToCmeAndGetReturnValInCell(dataPiont); return(returnVal); }
public void SetCmeManagerListWithXml(string xmlPath) { System.Xml.XmlDataDocument xmlDoc = new System.Xml.XmlDataDocument(); xmlDoc.Load(xmlPath); int equipId; foreach (XmlNode node1 in xmlDoc.ChildNodes) { foreach (XmlNode node2 in node1.ChildNodes) { if (node2.Name == "Equip") { equipId = int.Parse(node2.Attributes["ID"].Value.Trim()); CmeManager tmpCmeManager = new CmeManager(equipId, xmlPath); _cmeManagerList.Add(tmpCmeManager); _dicEquipIdToCmeManager.Add(equipId, tmpCmeManager); } } } }