示例#1
0
        /// <summary>
        /// Parses the fd.
        /// </summary>
        /// <param name="Fd">The fd.</param>
        /// <param name="Msg">The MSG.</param>
        private void ParseFd(FDResult Fd, string Msg)
        {
            Fd.getElements = new List <FDItem>();
            float CabinY = Regex.IsMatch(Msg, @"\s\w{2}\/[Y]\s*\/\s*(\d*\.?\d{0,2})\=\s*(\d*\.?\d{0,2})", RegexOptions.IgnoreCase) ? float.Parse(Regex.Match(Msg, @"\s\w{2}\/[Y]\s*\/\s*(\d*\.?\d{0,2})\=\s*(\d*\.?\d{0,2})", RegexOptions.IgnoreCase).Groups[1].Value) : 0.0f;

            //Fd.getMoneyType = Regex.Match(Msg, @"\/\w{2}\s*\/([A-Z]{3})", RegexOptions.IgnoreCase).Groups[1].Value;
            Fd.getOrg      = Regex.Match(Msg, @"FD\:([A-Z]{3})([A-Z]{3})\/", RegexOptions.IgnoreCase).Groups[1].Value;
            Fd.getDst      = Regex.Match(Msg, @"FD\:([A-Z]{3})([A-Z]{3})\/", RegexOptions.IgnoreCase).Groups[2].Value;
            Fd.getDistance = Regex.Match(Msg, @"\/TPM\s*(\d{1,})\s*\/", RegexOptions.IgnoreCase).Groups[1].Value;
            Fd.getBaseFare = CabinY;
            foreach (string s in Msg.Split(new char[] { '\r' }, StringSplitOptions.RemoveEmptyEntries))
            {
                if (Regex.IsMatch(s, @"^\d{1,}", RegexOptions.IgnoreCase | RegexOptions.Multiline))
                {
                    try {
                        FDItem Item = ParseItem(s, CabinY, Msg);
                        if (Fd.getElements.Contains(Item))
                        {
                            continue;
                        }
                        Fd.getElements.Add(Item);
                    }
                    catch { }
                }
            }
        }
示例#2
0
        /// <summary>
        /// 指令结果解析适配器.
        /// </summary>
        /// <param name="Msg">指令结果集合.</param>
        /// <returns></returns>
        protected override ASyncResult ResultAdapter(string Msg)
        {
            FDResult Fd = new FDResult();

            ParseFd(Fd, Msg);
            return(Fd);
        }
示例#3
0
 /// <summary>
 /// Parses the fd.
 /// </summary>
 /// <param name="Fd">The fd.</param>
 /// <param name="Msg">The MSG.</param>
 private void ParseFd(FDResult Fd, string Msg)
 {
     Fd.getElements = new List<FDItem>();
     float CabinY = Regex.IsMatch(Msg, @"\s\w{2}\/[Y]\s*\/\s*(\d*\.?\d{0,2})\=\s*(\d*\.?\d{0,2})", RegexOptions.IgnoreCase) ? float.Parse(Regex.Match(Msg, @"\s\w{2}\/[Y]\s*\/\s*(\d*\.?\d{0,2})\=\s*(\d*\.?\d{0,2})", RegexOptions.IgnoreCase).Groups[1].Value) : 0.0f;
     //Fd.getMoneyType = Regex.Match(Msg, @"\/\w{2}\s*\/([A-Z]{3})", RegexOptions.IgnoreCase).Groups[1].Value;
     Fd.getOrg = Regex.Match(Msg, @"FD\:([A-Z]{3})([A-Z]{3})\/", RegexOptions.IgnoreCase).Groups[1].Value;
     Fd.getDst = Regex.Match(Msg, @"FD\:([A-Z]{3})([A-Z]{3})\/", RegexOptions.IgnoreCase).Groups[2].Value;
     Fd.getDistance = Regex.Match(Msg, @"\/TPM\s*(\d{1,})\s*\/", RegexOptions.IgnoreCase).Groups[1].Value;
     Fd.getBaseFare = CabinY;
     foreach (string s in Msg.Split(new char[] { '\r' }, StringSplitOptions.RemoveEmptyEntries)) {
         if (Regex.IsMatch(s, @"^\d{1,}", RegexOptions.IgnoreCase | RegexOptions.Multiline)){
             try {
                 FDItem Item = ParseItem(s,CabinY,Msg);
                 if (Fd.getElements.Contains(Item))
                     continue;
                 Fd.getElements.Add(Item);
             }
             catch { }
         }
     }
 }
示例#4
0
 /// <summary>
 /// 指令结果解析适配器.
 /// </summary>
 /// <param name="Msg">指令结果集合.</param>
 /// <returns></returns>
 protected override ASyncResult ResultAdapter(string Msg)
 {
     FDResult Fd = new FDResult();
     ParseFd(Fd, Msg);
     return Fd;
 }