コード例 #1
0
    public void obtenerSemaforos()
    {
        Dictionary <string, Object> dic = new Dictionary <string, Object>();

        dic.Add("@accion", 2);
        dic.Add("@idModulo", 4);
        dic.Add("@idSemaforo", 0);
        dic.Add("@english", 0);

        DataTable dt = dataaccess.executeStoreProcedureDataTable("spr_get_Semaforos", dic);

        arregloSemaforos = new Semaforo[dt.Rows.Count];
        int cont = 0;

        foreach (DataRow row in dt.Rows)
        {
            arregloSemaforos[cont] = new Semaforo();

            arregloSemaforos[cont].ID        = Convert.ToInt32(row["idSemaforo"]);
            arregloSemaforos[cont].MODULO    = Convert.ToInt32(row["idModulo"]);
            arregloSemaforos[cont].INICIAL   = Convert.ToInt32(row["iInicial"]);
            arregloSemaforos[cont].FINAL     = Convert.ToInt32(row["iFinal"]);
            arregloSemaforos[cont].COLOR_HEX = row["vColorHex"].ToString();
            arregloSemaforos[cont].CONTADOR  = 0;

            cont++;
        }
    }
コード例 #2
0
        private void ThreadBody()
        {
            while (true)
            {
                //inicio de zona segura
                Semaforo.WaitOne();//se adquiere el permiso de entrar que lo da el semaforo
                var primero = Datos.Personas.FirstOrDefault();
                //Thread.Sleep(10);
                switch (Id)
                {
                case 1:
                    Datos.Caja1 = primero;
                    break;

                case 2:
                    Datos.Caja2 = primero;
                    break;

                case 3:
                    Datos.Caja3 = primero;
                    break;
                }

                if (Datos.Personas.Any())
                {
                    Datos.Personas.RemoveAt(0);
                }
                Semaforo.Release();//fin de zona segura

                Thread.Sleep(duracion);
            }
        }
コード例 #3
0
    private void FiltraSemaforos(List <Semaforo> semaforos)
    {
        if (semaforos.Count <= 0)
        {
            return;
        }

        semaforos = semaforos.OrderBy(x => Vector3.Distance(biarticulado.PosicaoReferencia().position, x.transform.position)).ToList();
        foreach (var item in semaforos)
        {
            semaforo_angulo = Vector3.Angle(biarticulado.PosicaoReferencia().forward, item.transform.forward);
            semaforo_dot    = Vector3.Dot((item.transform.position - biarticulado.PosicaoReferencia().position).normalized, biarticulado.PosicaoReferencia().forward);
            if (semaforo_angulo <= anguloDeVarredura &&
                semaforo_dot > 0)
            {
                semaforoProximo = item;
                break;
            }
        }

        if (!semaforoProximo)
        {
            semaforo_angulo = float.NaN;
            semaforo_dot    = float.NaN;
        }
    }
コード例 #4
0
        public void Execute(IJobExecutionContext context)
        {
            if (semaforo.EstaProcesando == false)
            {
                semaforo.EstaProcesando = true;

                try
                {
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
                finally
                {
                    if (semaforo.EstaProcesando == true)
                    {
                        Semaforo.setInstance("ProcesoExtractFTP");
                        if (semaforo.CantidadArchivosConError > 0)
                        {
                            Semaforo.setInstance("ProcesoExtractFTP");
                        }
                    }
                }
            }
        }
コード例 #5
0
 public void Put(Semaforo semaforo)
 {
     if (ApplicationDbContext.applicationDbContext.Semaforos.Count(e => e.Id == semaforo.Id) == 0)
     {
         throw new NoEncontradoException("No he encontrado la entidad");
     }
     ApplicationDbContext.applicationDbContext.Entry(semaforo).State = EntityState.Modified;
 }
コード例 #6
0
        public IHttpActionResult GetPlantilla(long id)
        {
            Semaforo plantilla = semaforosService.Get(id);

            if (plantilla == null)
            {
                return(NotFound());
            }

            return(Ok(plantilla));
        }
コード例 #7
0
        public IHttpActionResult PostPlantilla(Semaforo semaforo)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            semaforo = semaforosService.Create(semaforo);

            return(CreatedAtRoute("DefaultApi", new { id = semaforo.Id }, semaforo));
        }
コード例 #8
0
        public Semaforo Delete(long id)
        {
            Semaforo semaforo = ApplicationDbContext.applicationDbContext.Semaforos.Find(id);

            if (semaforo == null)
            {
                throw new NoEncontradoException("No he encontrado la entidad");
            }

            ApplicationDbContext.applicationDbContext.Semaforos.Remove(semaforo);
            return(semaforo);
        }
コード例 #9
0
ファイル: ProcesoFila.cs プロジェクト: gabskatze/SO_Cajero
        private void ThreadBody()
        {
            while (true)
            {
                Semaforo.WaitOne(); //inicio de zona segura. Solo se puede accesar un hilo a la vez
                string nombre = GeneradorNombres.GenerarNombreCompleto();
                Datos.Personas.Add(nombre);
                Semaforo.Release();//fin de zona segura

                Thread.Sleep(duracion);
            }
        }
コード例 #10
0
    private void ProcuraObstaculos()
    {
        Collider[]      colliders = Physics.OverlapSphere(biarticulado.PosicaoReferencia().position, Mathf.Max(biarticulado.distanciaDeFrenagem, conAuto.dyn_distDeParada));
        List <Semaforo> semaforos = new List <Semaforo>();

        foreach (var item in colliders)
        {
            semaforoProximo = item.GetComponent <Semaforo>();
            if (!semaforoProximo)
            {
                semaforoProximo = item.GetComponentInParent <Semaforo>();
            }
            if (semaforoProximo)
            {
                semaforos.Add(semaforoProximo);
            }
        }

        FiltraSemaforos(semaforos);
    }
コード例 #11
0
    //private void IdentificaObstaculoMaisProximo()
    //{

    //}

    private void ReagirAosObstaculos()      //TODO ADICIONAR FUTURAMENTE FORMAS DE REAGIR A DIVERSOS OUTROS TIPOS DE OBSTÁCULOS
    {
        if (!biarticulado.paradoEmPonto)
        {
            if (semaforoProximo)
            {
                if (semaforoProximo.estaAberto)
                {
                    biarticulado.obstaculoPresente  = false;
                    biarticulado.veiculoSendoParado = false;
                    biarticulado.parando_Obstaculo  = false;
                }
                else
                {
                    biarticulado.obstaculoPresente = true;
                    if (Vector3.Distance(biarticulado.PosicaoReferencia().position, semaforoProximo.transform.position) <= distanciaDeSeguranca)
                    {
                        biarticulado.veiculoSendoParado = true;
                        biarticulado.parando_Obstaculo  = true;
                        semaforoParadaAtual             = semaforoProximo;
                    }
                    else
                    {
                        biarticulado.veiculoSendoParado = false;
                        biarticulado.parando_Obstaculo  = false;
                    }
                }
            }

            //Este if serve para impedir que o véículo pare no meio de um cruzamento quando o semáforo que acabou de atravessar se fechar durante a travessia.
            if (biarticulado.obstaculoPresente && ((semaforoParadaAtual && semaforoParadaAtual.estaAberto) || !semaforoProximo))
            {
                semaforoParadaAtual            = null;
                biarticulado.obstaculoPresente = false;
                if (biarticulado.veiculoSendoParado)
                {
                    biarticulado.veiculoSendoParado = false;
                }
            }
        }
    }
コード例 #12
0
ファイル: Program.cs プロジェクト: JavierGH2019/Clases
        static void Main(string[] args)
        {
            Console.WriteLine("Seleccione ejercicio a evaluar");
            Console.WriteLine("Presione 1 para ejercicio semaforo-----");
            Console.WriteLine("Presione 2 para ejercicio buenas noches-----");
            int opcion = int.Parse(Console.ReadLine());

            if (opcion == 1)
            {
                Semaforo OSemaforo = new Semaforo();
                Console.WriteLine("Digite su nombre: ");
                string Nombre = Console.ReadLine();
                OSemaforo.EstadoSemaforo(Nombre);
                Console.ReadKey();
            }
            else if (opcion == 2)
            {
                Console.WriteLine("Digite su Nombre: ");
                string Nombre = Console.ReadLine();
                Console.WriteLine("Digite su Apellido: ");
                string Apellido = Console.ReadLine();
                Console.WriteLine("Digite su Direccion: ");
                string Direccion = Console.ReadLine();

                Saludo OSaludo = new Saludo();
                OSaludo.Nombre1    = Nombre;
                OSaludo.Apellido1  = Apellido;
                OSaludo.Direccion1 = Direccion;

                Console.WriteLine("Buenas noches: " + OSaludo.Nombre1 + "  " + OSaludo.Apellido1 + " Tu vives en " + OSaludo.Direccion1);
                Console.ReadKey();
            }
            else
            {
                Console.WriteLine("Solo puede elegir ejercicio 1 o 2");
                Console.ReadKey();
            }
        }
コード例 #13
0
        private static void Initialize()
        {
            Semaforo semaforo = new Semaforo();

            Carro carro     = new Carro();
            Carro carroFiat = new Carro();
            Moto  moto      = new Moto();

            semaforo.OnSemaforoColorUpdated += carro.Update;
            semaforo.OnSemaforoColorUpdated += moto.Update;
            semaforo.OnSemaforoColorUpdated += carroFiat.Update;

            semaforo.Acionar(CoresSemaforo.Verde);
            CoresSemaforo cor = CoresSemaforo.Verde;

            do
            {
                Console.WriteLine("Escolha 1 para Verde, 2 para Amarelo e 3 para Vermelho ou 0 para sair.");
                string color = Console.ReadLine();
                cor = (CoresSemaforo)int.Parse(color);
                semaforo.Acionar(cor);
            } while (cor != CoresSemaforo.Unknown);
        }
コード例 #14
0
        public IHttpActionResult PutPlantilla(long id, Semaforo semaforo)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != semaforo.Id)
            {
                return(BadRequest());
            }

            try
            {
                semaforosService.Put(semaforo);
            }
            catch (NoEncontradoException)
            {
                return(NotFound());
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
コード例 #15
0
        public void bloquearDocumento(string documento, string documentoId)
        {
            try
            {
                MongoClient    client = new MongoClient(getConnection());
                IMongoDatabase db     = client.GetDatabase("Usuarios");

                IMongoCollection <Semaforo> CollectionSemaforo = db.GetCollection <Semaforo>("Semaforo");

                Semaforo item = new Semaforo();
                item.Empresa     = getKeyToken("empresa", "token");
                item.Documento   = documento;
                item.DocumentoId = documentoId;
                item.Usuario     = getKeyToken("user", "token");
                item.usuarioId   = getKeyToken("id", "token");

                CollectionSemaforo.InsertOne(item);
            }
            catch (Exception ex)
            {
                throw;
            }
        }
コード例 #16
0
        public void DisponibilidadDocumento(string documento, string documentoId)
        {
            try
            {
                MongoClient    client = new MongoClient(getConnection());
                IMongoDatabase db     = client.GetDatabase("Usuarios");

                IMongoCollection <Semaforo> CollectionSemaforo = db.GetCollection <Semaforo>("Semaforo");

                string Empresa = getKeyToken("empresa", "token");

                Semaforo item = CollectionSemaforo.Find <Semaforo>(d => d.Empresa == Empresa && d.DocumentoId == documentoId && d.Documento == documento).FirstOrDefault();

                if (item != null)
                {
                    throw new Exception("Este documento se encuentra en uso por el usuario: " + item.Usuario);
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
        public void Execute(IJobExecutionContext context)
        {
            if (semaforo.EstaProcesando == false)
            {
                semaforo.EstaProcesando = true;

                try
                {
                    DescargaAutomaticaActualizacionBLL descargaAutomaticaActualizacionBll = new DescargaAutomaticaActualizacionBLL();
                    EmailBLL emailBll = new EmailBLL();
                    Task     tarea1   = new Task(() => descargaAutomaticaActualizacionBll.ExtraerInformacionPaginaSoporte());
                    Task     tarea2   = new Task(() => emailBll.EnvioArchivoActualizacionSoftware());
                    tarea1.Start();
                    tarea2.Start();
                    Task.WaitAll(tarea1);
                }
                catch (Exception e)
                {
                    Logger log = LogManager.GetLogger("Error");
                    log.Error(e.Message.ToString());

                    EmailBLL managerEmail = new EmailBLL();
                    managerEmail.EnviarMailAdmin("ERROR: " + e.Message.ToString(), "Envío notificación Descarga Automatica CEPET");
                }
                finally
                {
                    if (semaforo.EstaProcesando == true)
                    {
                        Semaforo.setInstance("EnvioNotificacionDescargaAutomaticaActualizacion");
                        if (semaforo.CantidadArchivosConError > 0)
                        {
                            Semaforo.setInstance("EnvioNotificacionDescargaAutomaticaActualizacion");
                        }
                    }
                }
            }
        }
コード例 #18
0
ファイル: PanelDecontrol.cs プロジェクト: TarekMulla/cra
        public void LoadControls(String panelName)
        {
            //Cargamos la configuracion
            var configuracion = ProyectoCraft.Base.Configuracion.Configuracion.Instance();
            var opcion        = configuracion.GetValue("Semaforos_Brasil_Enabled"); //puede retornar un true, false o null

            var pathxml = "";

            Path = opcion.HasValue && opcion.Value.Equals(true) ? @"panel de control/Brasil" : @"panel de control/Chile";

            pathxml = System.IO.Path.Combine(Application.StartupPath, string.Format(
                                                 @Path + "/panel de control/{0}", panelName));

            var xmldoc = new XmlDocument();

            xmldoc.Load(pathxml);

            var panelNodes = xmldoc.SelectNodes("/panel/panel");

            foreach (XmlNode panelNode in panelNodes)
            {
                var size = new Size(Convert.ToInt16(panelNode.Attributes["width"].Value),
                                    Convert.ToInt16(panelNode.Attributes["heigth"].Value));
                var location = new Point(Convert.ToInt16(panelNode.Attributes["x"].Value),
                                         Convert.ToInt16(panelNode.Attributes["y"].Value));

                var panelContainer = new PanelContainer(panelNode.Attributes["title"].Value, location, size);

                var xmlnodes = panelNode.SelectNodes("control");
                foreach (XmlNode xmlnode in xmlnodes)
                {
                    if (!String.IsNullOrEmpty(xmlnode.InnerText.Trim()))
                    {
                        MyControl myControl       = null;
                        var       xmldocControles = new XmlDocument();
                        xmldocControles.Load(System.IO.Path.Combine(Application.StartupPath, string.Format(
                                                                        @Path + "/controles/{0}", xmlnode.InnerText.Trim())));
                        var TypeOfControl = xmldocControles.SelectSingleNode("/control").Attributes["type"].Value;
                        size = new Size(Convert.ToInt16(xmlnode.Attributes["width"].Value),
                                        Convert.ToInt16(xmlnode.Attributes["heigth"].Value));
                        location = new Point(Convert.ToInt16(xmlnode.Attributes["x"].Value),
                                             Convert.ToInt16(xmlnode.Attributes["y"].Value));
                        switch (TypeOfControl.ToUpper())
                        {
                        case "DIGITALGAUGE":
                            myControl = new DigitalGauge(xmldocControles, location, size);
                            break;

                        case "LINEARGAUGE":
                            myControl = new LinearGauge(xmldocControles, location, size);
                            break;

                        case "SEMAFORO":
                            myControl = new Semaforo(xmldocControles, location, size);
                            break;

                        case "GRAFICOBARRA3D":
                            myControl = new GraficoBarra3D(xmldocControles, location, size);
                            break;

                        case "SEMAFORO_V2":
                            myControl = new SemaforoV2(xmldocControles, location, size);
                            break;
                        }
                        if (myControl != null)
                        {
                            panelContainer.Controles.Add(myControl);
                        }
                    }
                }
                PanelContainers.Add(panelContainer);
            }
        }
コード例 #19
0
 public Semaforo Create(Semaforo semaforo)
 {
     return(ApplicationDbContext.applicationDbContext.Semaforos.Add(semaforo));
 }
コード例 #20
0
        public void CarregaMapaSimulacao(string CaminhoArquivoSimulacao)
        {
            Entrada DadosEntrada = new Entrada();;

            using (StreamReader file = new StreamReader(CaminhoArquivoSimulacao))
            {
                if (file == null)
                {
                    throw new Exception($"Arquivo {CaminhoArquivoSimulacao} não foi encontrado!");
                }
                string conteudoArquivo = file.ReadToEnd();
                DadosEntrada = JsonConvert.DeserializeObject <Entrada>(conteudoArquivo);
                file.Close();
            }
            if (DadosEntrada == null)
            {
                throw new Exception("Não foi possível realizar a serialização do arquivo de entrada de dados");
            }

            #region ProcessaEntrada
            int auxId = 0;

            /// grafo e ruas
            foreach (var item in DadosEntrada.Ruas)
            {
                grafo.AdicionaAresta(item.VerticeOrigem, item.VerticeDestino, item.Distancia, auxId);
                Aresta aresta       = grafo.ObtenhaAresta(item.VerticeOrigem, item.VerticeDestino);
                Rua    ruaAdicionar = new Rua()
                {
                    Comprimento      = aresta.Peso,
                    NumeroFaixas     = item.NumeroVias,
                    IdAresta         = aresta.Id,
                    VelocidadeMaxima = item.VelocidadeMaxima,
                    Id        = auxId++,
                    Descricao = $"Rua sentido {aresta.Origem} até {aresta.Destino}",
                };
                ruaAdicionar.PreparaRua();
                RuasSimulacao.Add(ruaAdicionar);
            }

            /// comprimento veiculos
            foreach (var item in DadosEntrada.ComprimentosVeiculos)
            {
                if (item <= 0)
                {
                    throw new Exception("Um comprimento não pode ser menor ou igual a zero");
                }
                geradorVeiculos.AdicionarComprimentoPossivel(item);
            }

            /// velocidade inicial
            foreach (var item in DadosEntrada.VelocidadeInicial)
            {
                if (item <= 0)
                {
                    throw new Exception("A velocidade inicial não pode ser menor ou igual a zero");
                }
                geradorVeiculos.AdicionarVelocidadePossivel(item);
            }

            /// Semaforos
            auxId = 0;
            foreach (var item in DadosEntrada.Semaforos)
            {
                Semaforo auxSema = new Semaforo()
                {
                    Id                  = auxId++,
                    TempoAberto         = item.TempoAberto,
                    TempoAmarelo        = item.TempoAmarelo,
                    TempoFechado        = item.TempoFechado,
                    EstadoSemaforo      = Entidades.Enuns.EstadosSemaforo.ABERTO,
                    ProximoTempoAberto  = item.TempoAberto,
                    ProximoTempoFechado = item.TempoFechado,
                    TempoAtual          = 0
                };
                auxSema.LogSemaforos.Add(new LogSemaforos {
                    InstanteTempo = 0,
                    TempoAberto   = item.TempoAberto,
                    TempoFechado  = item.TempoFechado
                });

                Rua RuaOrigem  = GetRua(item.VerticeOrigemOrigem, item.VerticeDestinoOrigem);
                Rua RuaDestino = GetRua(item.VerticeOrigemDestino, item.VerticeDestinoDestino);
                if (item.VerticeOrigemDestino == item.VerticeDestinoDestino && RuaDestino == null)//Ultimo semáforo e sem rua depois do semáforo
                {
                    throw new Exception("Não existe uma rua após o último semáforo.");
                }
                if (RuaOrigem == null || RuaDestino == null)
                {
                    throw new Exception("Rua de Origem/Destino não foi encontrada.");
                }
                auxSema.RuasOrigem.Add(RuaOrigem.Id);
                auxSema.RuasDestino.Add(RuaDestino.Id);
                Semaforos.Add(auxSema);
            }
            // taxa de geracao veiculos
            TaxaGeracao.AddRange(DadosEntrada.TaxasGeracao.OrderBy((x) => x.Vertice).Select((x) => x.Taxa));
            if (TaxaGeracao.Count != grafo.NumeroVertices)
            {
                throw new Exception("Quantidade de taxas de geração está inclopeta");
            }
            #endregion ProcessaEntrada
        }
コード例 #21
0
 public void Put(Semaforo semaforo)
 {
     semaforosRepository.Put(semaforo);
 }
コード例 #22
0
ファイル: PanelDecontrol.cs プロジェクト: TarekMulla/cra
        public void LoadControls(String panelName)
        {
            //Cargamos la configuracion
            var configuracion = ProyectoCraft.Base.Configuracion.Configuracion.Instance();
            var opcion = configuracion.GetValue("Semaforos_Brasil_Enabled"); //puede retornar un true, false o null

            var pathxml = "";

            Path = opcion.HasValue && opcion.Value.Equals(true) ? @"panel de control/Brasil" : @"panel de control/Chile";

            pathxml = System.IO.Path.Combine(Application.StartupPath, string.Format(
                                                 @Path + "/panel de control/{0}", panelName));

            var xmldoc = new XmlDocument();
            xmldoc.Load(pathxml);

            var panelNodes = xmldoc.SelectNodes("/panel/panel");
            foreach (XmlNode panelNode in panelNodes) {

                var size = new Size(Convert.ToInt16(panelNode.Attributes["width"].Value),
                                            Convert.ToInt16(panelNode.Attributes["heigth"].Value));
                var location = new Point(Convert.ToInt16(panelNode.Attributes["x"].Value),
                                         Convert.ToInt16(panelNode.Attributes["y"].Value));

                var panelContainer = new PanelContainer(panelNode.Attributes["title"].Value, location, size);

                var xmlnodes = panelNode.SelectNodes("control");
                foreach (XmlNode xmlnode in xmlnodes) {
                    if (!String.IsNullOrEmpty(xmlnode.InnerText.Trim())) {
                        MyControl myControl = null;
                        var xmldocControles = new XmlDocument();
                        xmldocControles.Load(System.IO.Path.Combine(Application.StartupPath, string.Format(
                            @Path + "/controles/{0}", xmlnode.InnerText.Trim())));
                        var TypeOfControl = xmldocControles.SelectSingleNode("/control").Attributes["type"].Value;
                        size = new Size(Convert.ToInt16(xmlnode.Attributes["width"].Value),
                                            Convert.ToInt16(xmlnode.Attributes["heigth"].Value));
                        location = new Point(Convert.ToInt16(xmlnode.Attributes["x"].Value),
                                                 Convert.ToInt16(xmlnode.Attributes["y"].Value));
                        switch (TypeOfControl.ToUpper()) {
                            case "DIGITALGAUGE":
                                myControl = new DigitalGauge(xmldocControles, location, size);
                                break;
                            case "LINEARGAUGE":
                                myControl = new LinearGauge(xmldocControles, location, size);
                                break;
                            case "SEMAFORO":
                                myControl = new Semaforo(xmldocControles, location, size);
                                break;
                            case "GRAFICOBARRA3D":
                                myControl = new GraficoBarra3D(xmldocControles, location, size);
                                break;
                            case "SEMAFORO_V2":
                                myControl = new SemaforoV2(xmldocControles, location, size);
                                break;
                        }
                        if (myControl != null)
                            panelContainer.Controles.Add(myControl);
                    }
                }
                PanelContainers.Add(panelContainer);
            }
        }
コード例 #23
0
 public Semaforo Create(Semaforo semaforo)
 {
     return(semaforosRepository.Create(semaforo));
 }