/// <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 { } } } }
/// <summary> /// 指令结果解析适配器. /// </summary> /// <param name="Msg">指令结果集合.</param> /// <returns></returns> protected override ASyncResult ResultAdapter(string Msg) { FDResult Fd = new FDResult(); ParseFd(Fd, Msg); return(Fd); }
/// <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 { } } } }
/// <summary> /// 指令结果解析适配器. /// </summary> /// <param name="Msg">指令结果集合.</param> /// <returns></returns> protected override ASyncResult ResultAdapter(string Msg) { FDResult Fd = new FDResult(); ParseFd(Fd, Msg); return Fd; }