Esempio n. 1
0
        public static void section_data_1min_task()
        {
            WriteLine("section_data_1min_task started!");

            while (true)
            {
                try
                {
                    System.Net.WebRequest req = System.Net.HttpWebRequest.Create(QYTask.Settings1.Default.TIMCC_uri);

                    System.IO.Stream stream = req.GetResponse().GetResponseStream();
                    System.IO.TextReader rd = new System.IO.StreamReader(stream);
                    System.IO.TextWriter wr = new System.IO.StreamWriter(Util.CPath(AppDomain.CurrentDomain.BaseDirectory + "tmp.xml"));
                    wr.Write(rd.ReadToEnd());
                    wr.Flush();
                    wr.Close();
                    rd.Close();
                    stream.Close();
                    wr.Dispose();
                    rd.Dispose();
                    stream.Dispose();

                    Ds ds = five_min_section_parser(Util.CPath(AppDomain.CurrentDomain.BaseDirectory + "tmp.xml"));
                    // Curr5minSecDs.Dispose();
                    Curr5minSecDs = ds;

                    string dest;
                    if ((dest = getSaveDirFileName(ds.tblFileAttr[0].time)) != "")   // new 5 min data
                    {
                        WriteLine("section_data_1min_task: new section data->" + ds.tblFileAttr[0][0].ToString());

                        System.IO.File.Copy(Util.CPath(AppDomain.CurrentDomain.BaseDirectory + "tmp.xml"), dest);
                        if (OnNewTravelData != null)
                        {
                            // QYTask.Ds ds1 = new QYTask.Ds();
                            calcuate_travel_time();
                            ////ds1.Merge(RGSConfDs.tblRGSMain);
                            ////ds1.Merge(RGSConfDs.tblRGS_Config);
                            OnNewTravelData(RGSConfDs);
                            try
                            {
                                NotifyDisplayTask();
                            }
                            catch (Exception ex)
                            {
                                Console.WriteLine("section_data_1min_task:" + ex.Message);
                            }
                        }

                    }

                }
                catch (Exception ex)
                {
                    WriteLine("section_data_1min_task:" + ex.Message + ex.StackTrace);

                    try
                    {
                        if (Curr5minSecDs == null || System.Math.Abs(((TimeSpan)(System.DateTime.Now - Curr5minSecDs.tblFileAttr[0].time)).Minutes) >= 20)
                        {
                            lock (RGSConfDs.tblRGS_Config)
                            {
                                foreach (QYTask.Ds.tblRGS_ConfigRow r in RGSConfDs.tblRGS_Config.Rows)
                                {
                                    r.RowError = "Timcc 連線資料異常!";
                                    r.mode = 1; //手動
                                    Console.WriteLine("寫入 RowErr");

                                }
                                if (OnNewTravelData != null)
                                {

                                    try
                                    {
                                        DataSet ds1 = new DataSet();

                                        ds1.Tables.Add(Util.getPureDataTable(RGSConfDs.tblRGS_Config));
                                        OnNewTravelData(ds1);
                                        NotifyDisplayTask();
                                    }
                                    catch (Exception ex1)
                                    {
                                        Console.WriteLine("section_data_1min_task:" + ex1.StackTrace);
                                    }
                                }
                            }
                            System.Console.WriteLine("Timcc 連線異常!");
                        }
                    }
                    catch (Exception ex1)
                    {
                        Console.WriteLine(ex1.Message);
                    }

                }

                Util.GC();

                System.Threading.Thread.Sleep(60 * 1000);
            }
        }
Esempio n. 2
0
        public static Ds five_min_section_parser(string uri)
        {
            System.Xml.XmlReader rd = null;
            Ds ds = new Ds();

            using (rd = System.Xml.XmlTextReader.Create(uri))
            {
                while (rd.Read())
                {

                    if (rd.Name == "traffic_data" && rd.NodeType == System.Xml.XmlNodeType.Element)
                    {
                        Ds.tblSecTrafficDataRow r = ds.tblSecTrafficData.NewtblSecTrafficDataRow();

                        string dir = "";
                        switch (System.Convert.ToString(rd["directionId"]))
                        {
                            case "1":
                                dir = "E";
                                break;
                            case "2":
                                dir = "W";
                                break;
                            case "3":
                                dir = "S";
                                break;
                            case "4":
                                dir = "N";
                                break;
                        }
                        r.directionId = dir;
                        r.end_location = System.Convert.ToString(rd["end_location"]);
                        r.end_milepost = System.Convert.ToUInt32(rd["end_milepost"]);
                        r.expresswayId = rd["expresswayId"].ToString();
                        r.freewayId = rd["freewayId"].ToString();
                        r.from_location = rd["from_location"].ToString();
                        r.from_milepost = System.Convert.ToUInt32(rd["from_milepost"]);
                        r.section_lower_limit = System.Convert.ToUInt32(rd["section_lower_limit"]);
                        r.section_upper_limit = System.Convert.ToUInt32(rd["section_upper_limit"]);
                        r.travel_time = System.Convert.ToSingle(rd["travel_time"]);

                        ds.tblSecTrafficData.AddtblSecTrafficDataRow(r);

                    }
                    else if (rd.Name == "file_attribute" && rd.NodeType == System.Xml.XmlNodeType.Element)

                        ds.tblFileAttr.AddtblFileAttrRow(System.Convert.ToDateTime(rd["time"]));

                }
                rd.Close();

            }
            return ds;
        }