Beispiel #1
0
        /// <summary>
        /// 外部接口设置VOBC状态信息
        /// </summary>
        /// <param name="ip">产品设备IP信息</param>
        /// <param name="Port">端口信息</param>
        /// <param name="vInfo">VOBC状态信息类实例</param>
        /// <returns></returns>
        public bool SetProductVobcStateInfo(string ip, int Port, VOBCStateInfoClass vInfo)
        {
            bool reValue = false;

            foreach (IProduct product in this)
            {
                if (product.Ip == ip && product.Port == Convert.ToString(Port))
                {
                    //防护 必须是VOBC产品
                    if (product is VOBCProduct)
                    {
                        (product as VOBCProduct).VobcStateInfo = vInfo;

                        reValue = true;
                    }
                    else
                    {
                        reValue = false;
                    }
                }
                else
                {
                    reValue = false;
                }
            }

            return(reValue);
        }
        /// <summary>
        /// VOBC设备预检
        /// </summary>
        /// <param name="vobc">VOBC产品车载状态信息</param>
        /// <returns>预检失败原因明细</returns>
        private string PreCheck(VOBCStateInfoClass vInfo, VOBCStateInfoClass oppovInfo)
        {
            string failReason = String.Empty;

            //未进行状态获取操作
            if (null == vInfo)
            {
                failReason = "未完成‘状态获取’操作或未获取到状态";
            }
            else if (null == oppovInfo)
            {
                failReason = "未完成对端‘状态获取’操作或未获取到对端状态";
            }
            //ATP状态
            else if (vInfo.AtpStatus != "正常")
            {
                failReason = "预检ATP状态为:" + vInfo.AtpStatus;
            }
            //ATO状态
            else if (vInfo.AtoStatus != "正常")
            {
                failReason = "预检ATO状态为:" + vInfo.AtoStatus;
            }
            //MMI状态
            else if (vInfo.MmiStatus != "正常")
            {
                failReason = "预检MMI状态为:" + vInfo.MmiStatus;
            }
            //CCOV状态
            else if (vInfo.AtpTftpStatus != "正常")
            {
                failReason = "预检CCOV状态为:" + vInfo.AtpTftpStatus;
            }
            else if (vInfo.PreResult != true)
            {
                //通控给出的总预检结果
                failReason = "本端预检失败";

                //零速
                if (vInfo.IsSteady != true)
                {
                    failReason = "预检车辆非0速";
                }
                //车辆位置
                else if (vInfo.TrainPosition != "无位置")
                {
                    failReason = "预检车辆:" + vInfo.TrainPosition;
                }
                else
                {
                    //TODO
                }
            }
            else if (oppovInfo.PreResult != true)
            {
                //对端通控给出的总预检结果
                failReason = "对端预检失败";
            }
            else
            {
                //什么都不做
            }
            return(failReason);
        }