예제 #1
0
        }  //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);
        }