示例#1
0
        private void SetNonLaneDetectors()
        {
            List <Models.DirectionType> directions = db.DirectionTypes.ToList();
            var detectionstypeslist = db.DetectionTypes.ToList();

            foreach (MOE.Common.Data.Signals.Graph_DetectorsRow row in DetectorsTable)
            {
                if (row.Det_Channel > 0)
                {
                    var detector = CreateNewDetector(row, detectionstypeslist);
                    var signal   = SignalsList.Where(s => s.SignalID == row.SignalID).FirstOrDefault();
                    if (signal != null)
                    {
                        var approach = signal.Approaches
                                       .Where(a => a.DirectionType.Description == row.Direction && a.ProtectedPhaseNumber == Convert.ToInt32(row.Phase))
                                       .FirstOrDefault();
                        if (approach == null)
                        {
                            approach = CreateNewApproach(row, directions);
                            signal.Approaches.Add(approach);
                        }
                        if (approach.Detectors == null)
                        {
                            approach.Detectors = new List <Models.Detector>();
                        }
                        approach.Detectors.Add(detector);
                    }
                }
            }
        }
示例#2
0
        //Загрузить список сигналов, возвращает ошибку или ""
        public string LoadSignals()
        {
            StartAtom(Atom.LoadSignals);
            CountsToZero();
            if (State == State.Closed)
            {
                AddError("Копилятор уже был закрыт");
            }
            else if (State == State.Empty)
            {
                AddError("Проект не загружен");
            }
            else
            {
                try
                {
                    var objectsId = new DicI <ObjectSignal>();
                    Signals.Clear();
                    SignalsList.Clear();
                    //using (var db = new DaoDb(_projectFile))
                    using (var db = new DaoDb(_objectsFile)) //ab\
                    {
                        using (var reco = new ReaderAdo(db, "SELECT CodeObject, NameObject, TagObject, ObjectId, CommName FROM Objects ORDER BY ObjectId"))
                        {
                            AddEvent("Открыт рекордсет объектов");
                            Procent = 5;
                            while (reco.Read())
                            {
                                var curo = new ObjectSignal(reco, false);
                                Objects.Add(curo.Code, curo);
                                objectsId.Add(curo.Id, curo);
                            }
                            AddEvent("Объекты загружены");
                        }
                        Thread.Sleep(50);

                        Procent = 20;
                        using (var recs = new ReaderAdo(db, "SELECT ObjectId, Default, CodeSignal, NameSignal, Units, DataType, ConstValue, SourceName, ReceiverName, Inf, FullCode FROM Signals ORDER BY ObjectId, SignalId"))
                        {
                            int i = 0, n = recs.RecordCount("SELECT Count(*) FROM Signals");
                            Procent = 30;
                            AddEvent("Открыт рекордсет сигналов");
                            if (n != 0)
                            {
                                while (recs.Read())
                                {
                                    var sig = new Signal(recs, objectsId, false);
                                    SignalsList.Add(sig);
                                    Signals.Add(sig.FullCode, sig);
                                    if (sig.Default && objectsId.ContainsKey(sig.ObjectId))
                                    {
                                        Signals.Add(objectsId[sig.ObjectId].Code, sig);
                                    }
                                    if (n > 20 && i % (n / 15) == 0)
                                    {
                                        Procent = (i++ *70) / n + 30;
                                    }
                                }
                            }
                        }
                        AddEvent("Сигналы загружены");
                    }
                }
                catch (Exception ex)
                {
                    //ab
                    //AddError("Ошибка загрузки сигналов", ex);
                    AddError("Ошибка загрузки сигналов: " + ex.Message, ex);
                    //\ab
                }
            }
            return(FinishAtom(State.Signals, State.Project, "Проект: " + _code + @";  Сигналов: " + SignalsList.Count));
        }
示例#3
0
        public void SaveSignalsToDB()
        {
            db.Signals.AddRange(SignalsList.Distinct());

            db.SaveChanges();
        }
示例#4
0
 public void SaveSignalsToDB()
 {
     db.Signals.AddRange(SignalsList.Distinct());
     Console.WriteLine("Saving Signals");
     db.SaveChanges();
 }
示例#5
0
        private void SetApproaches()
        {
            Console.WriteLine("Setting up New Approaches");


            List <Models.DirectionType> directions = (from r in db.DirectionTypes
                                                      select r).ToList();

            foreach (MOE.Common.Data.Signals.Graph_DetectorsRow row in DetectorsTable)
            {
                var signal = SignalsList.Where(s => s.SignalID == row.SignalID).First();
                if (signal.Approaches == null)
                {
                    signal.Approaches = new List <MOE.Common.Models.Approach>();
                }
                Models.Approach approach;
                if (row.Phase == "0")
                {
                    approach = signal.Approaches
                               .Where(s => s.DirectionType.Description == row.Direction)
                               .FirstOrDefault();
                }
                else
                {
                    approach = signal.Approaches
                               .Where(s => s.DirectionType.Description == row.Direction &&
                                      s.ProtectedPhaseNumber == Convert.ToInt32(row.Phase))
                               .FirstOrDefault();
                }

                if (approach == null)
                {
                    signal.Approaches.Add(CreateNewApproach(row, directions));
                }
                else if (approach.ProtectedPhaseNumber == 0 && row.Phase != "0")
                {
                    approach.ProtectedPhaseNumber = Convert.ToInt32(row.Phase);
                    approach.Description          = approach.DirectionType.Description +
                                                    " Phase " + approach.ProtectedPhaseNumber.ToString();
                }
                else if (approach.ProtectedPhaseNumber != 0 && row.Phase != "0" &&
                         approach.ProtectedPhaseNumber != Convert.ToInt32(row.Phase))
                {
                    signal.Approaches.Add(CreateNewApproach(row, directions));
                }

                foreach (Models.DirectionType direction in directions)
                {
                    int maxMPH = (from r in signal.Approaches
                                  where r.DirectionTypeID == direction.DirectionTypeID
                                  select r.MPH).Max() ?? 0;

                    foreach (Models.Approach a in signal.Approaches)
                    {
                        if (a.DirectionTypeID == direction.DirectionTypeID)
                        {
                            a.MPH = maxMPH;
                        }
                    }
                }
            }
        }