} //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); }