Beispiel #1
0
        /// <summary>
        /// Check the state of the bus response for any alarm conditions.
        /// </summary>
        /// <param name="busState">MetroResponse from the KCM api</param>
        /// <returns>This routine only writes to console</returns>
        public static void EvaluateAndPrint(MetroResponse busState)
        {
            int latFenceN = 47000000; //it has left the staging area and started southbound
            int latFenceS = 47000000; //too late i missed it

            foreach (var aBus in busState.result.First().RealTimeResults.ToArray())
            {
                if (latFenceN < aBus.Lat)
                {
                    if (busInHolding.ContainsKey(aBus.VehicleNumber))
                    {
                        busInHolding[aBus.VehicleNumber] = new System.Drawing.Point(aBus.Lon, aBus.Lat);
                    }
                    else
                    {
                        busInHolding.Add(aBus.VehicleNumber, new System.Drawing.Point(aBus.Lon, aBus.Lat));
                    }
                }
                else if (latFenceS < aBus.Lat)
                {
                    if (busInHolding.ContainsKey(aBus.VehicleNumber))
                    {
                        busInHolding.Remove(aBus.VehicleNumber);
                    }

                    if (busApproaching.ContainsKey(aBus.VehicleNumber))
                    {
                        busApproaching[aBus.VehicleNumber] = new System.Drawing.Point(aBus.Lon, aBus.Lat);
                    }
                    else
                    {
                        busApproaching.Add(aBus.VehicleNumber, new System.Drawing.Point(aBus.Lon, aBus.Lat));
                    }
                }
                else
                {
                    if (busInHolding.ContainsKey(aBus.VehicleNumber))
                    {
                        busInHolding.Remove(aBus.VehicleNumber);
                    }
                    if (busApproaching.ContainsKey(aBus.VehicleNumber))
                    {
                        busApproaching.Remove(aBus.VehicleNumber);
                    }
                }
            }

            Console.WriteLine($"{busInHolding.Count()} in staging area");
            foreach (var x in busApproaching.Keys)
            {
                Console.WriteLine($"{x} \t {getDistance(busApproaching[x], new System.Drawing.Point(busApproaching[x].X, latFenceS)) }\t{DateTime.Now}");
            }
        }
Beispiel #2
0
        private static MetroResponse getBusState(String StopId)
        {
            HttpWebRequest wr = (HttpWebRequest)HttpWebRequest.Create(@"https://tripplanner.kingcounty.gov/InfoWeb");

            wr.ContentType = "application/json; charset=utf-8";
            wr.Method      = "POST";

            MetroRequest req = new MetroRequest
            {
                method  = "GetBusTimes",
                version = "1.1",
                _params = new Params
                {
                    LinesRequest = new Linesrequest
                    {
                        Client                  = "MobileWeb",
                        GetStopTimes            = "1",
                        GetStopTripInfo         = "1",
                        NumStopTimes            = 150,
                        NumTimesPerLine         = 10,
                        Radius                  = "0",
                        StopId                  = StopId,
                        SuppressLinesUnloadOnly = "1"
                    }
                }
            };

            using (var streamWriter = new StreamWriter(wr.GetRequestStream()))
            {
                string json = JsonSerializer.Serialize(req);

                streamWriter.Write(json);
                streamWriter.Flush();
            }

            MetroResponse resp = null;
            var           hr   = (HttpWebResponse)wr.GetResponse();

            using (var streamReader = new StreamReader(hr.GetResponseStream()))
            {
                resp = JsonSerializer.Deserialize <MetroResponse>(streamReader.ReadToEnd());
            }
            hr.Close();
            return(resp);
        }