private ResultadoAcao VerificaBotao()
        {
            ResultadoAcao result = new ResultadoAcao();

            byte[] buttons = State.GetButtons();

            if (!buttons.Any(a => a == 128))
            {
                result.Mensagem = "Nenhum botão pressionado";
                return(result);
            }

            // botao A do controle do Xbox
            if (buttons[0] == 128)
            {
                result = Carro.AcenderFarol();
            }

            // botao B do controle do Xbox
            if (buttons[1] == 128)
            {
                result = Carro.ApagarFarol();
            }

            return(result);
        }
Пример #2
0
        private ResultadoAcao VerificaSensoresLed()
        {
            ResultadoAcao resultado = new ResultadoAcao();

            if (Sensores == null)
            {
                resultado.Mensagem  = "Lista de sensores nula, inicialize a lista e adicione um sensor de LED Farol Frontal.";
                resultado.Resultado = ResultadoAcaoEnum.Erro;
                return(resultado);
            }

            if (Sensores.Count == 0)
            {
                resultado.Mensagem  = "Lista de sensores vazia, adicione um sensor de LED Farol Frontal.";
                resultado.Resultado = ResultadoAcaoEnum.Erro;
                return(resultado);
            }

            if (!Sensores.Any(a => a.TipoSensor == TipoSensorEnum.Led))
            {
                resultado.Mensagem =
                    "Lista de sensores não apresenta nenhum sensor de LED Farol Frontal, adicione um sensor de LED Farol Frontal.";
                resultado.Resultado = ResultadoAcaoEnum.Erro;
                return(resultado);
            }

            return(resultado);
        }
Пример #3
0
        private ResultadoAcao EnviarDadosFarol(bool ligar)
        {
            ResultadoAcao resultadoEnviaDadosFarol = new ResultadoAcao();

            foreach (var farolFrontal in Sensores.Where(a => a.TipoSensor == TipoSensorEnum.Led).Cast <FarolFrontal>())
            {
                if (ligar)
                {
                    farolFrontal.LigarFarol();
                }
                else
                {
                    farolFrontal.DesligarFarol();
                }

                var codificar = farolFrontal.Codificar();

                var resultadoEnviarDados = Comunicacao.EnviarDados(codificar);
                if (resultadoEnviarDados.Resultado != ResultadoAcaoEnum.Sucesso)
                {
                    resultadoEnviaDadosFarol = resultadoEnviarDados;
                    return(resultadoEnviaDadosFarol);
                }

                resultadoEnviaDadosFarol.Mensagem += codificar + "enviado.\r\n";
            }

            return(resultadoEnviaDadosFarol);
        }
Пример #4
0
        /// <summary>
        /// Enviar comando com separador de linha para o microcontrolador
        /// </summary>
        /// <param name="comando">comando para que será implementado no microcrontrolador</param>
        /// <returns>Resultado do envio</returns>
        public ResultadoAcao EnviarLinhaDados(string comando)
        {
            ResultadoAcao resultadoAcao = VerificaPortaSerialIsOpen();

            if (resultadoAcao.Resultado == ResultadoAcaoEnum.Sucesso)
            {
                _serialPort.WriteLine(comando);
            }

            return(resultadoAcao);
        }
Пример #5
0
        private static ResultadoAcao VerificaPortaSerialIsOpen()
        {
            var resultadoAcao = new ResultadoAcao();

            if (!_serialPort.IsOpen)
            {
                resultadoAcao.Mensagem  = "Porta Serial não aberta. Por favor, chame o método AbrirPorta().";
                resultadoAcao.Resultado = ResultadoAcaoEnum.Erro;
            }

            return(resultadoAcao);
        }
Пример #6
0
        /// <summary>
        /// Obtem Distancia do primeiro sensor ultrassom
        /// </summary>
        /// <param name="numeroSensor">Numero do sensor de ultrassom</param>
        /// <returns>Retorna objeto padrao de resultado, caso tenha sucesso, retorna a distancia enviada pelo microcontrolador</returns>
        public ResultadoAcao <decimal> ObterDistanciaUltrassom(int numeroSensor)
        {
            var resultado = new ResultadoAcao <decimal>();

            if (Sensores == null)
            {
                resultado.Mensagem      = "Lista de sensores nula, inicialize a lista e adicione um sensor de ULTRASSOM.";
                resultado.Resultado     = ResultadoAcaoEnum.Erro;
                resultado.ObjetoRetorno = -1;
                return(resultado);
            }

            if (Sensores.Count == 0)
            {
                resultado.Mensagem      = "Lista de sensores vazia, adicione um sensor de ULTRASSOM.";
                resultado.Resultado     = ResultadoAcaoEnum.Erro;
                resultado.ObjetoRetorno = -1;
                return(resultado);
            }

            if (!Sensores.Any(a => a.TipoSensor == TipoSensorEnum.Ultrassom))
            {
                resultado.Mensagem      = "Lista de sensores não apresenta nenhum sensor de ULTRASSOM, adicione um sensor de ULTRASSOM.";
                resultado.Resultado     = ResultadoAcaoEnum.Erro;
                resultado.ObjetoRetorno = -1;
                return(resultado);
            }

            Ultrassom sensor = numeroSensor == 0
                                                                   ? Sensores.First(a => a.TipoSensor == TipoSensorEnum.Ultrassom) as Ultrassom
                                                                   : Sensores.Where(a => a.TipoSensor == TipoSensorEnum.Ultrassom).Cast <Ultrassom>().FirstOrDefault(b => b.NumeroSensor == numeroSensor);

            if (sensor == null)
            {
                resultado.Mensagem      = "Não existe este número de sensor de ULTRASSOM.";
                resultado.Resultado     = ResultadoAcaoEnum.Erro;
                resultado.ObjetoRetorno = -1;
                return(resultado);
            }

            throw new NotImplementedException("Implementar metodo de envio e retorno da distancia");
        }
Пример #7
0
        private ResultadoAcao VerificaMotores()
        {
            var resultado = new ResultadoAcao(ResultadoAcaoEnum.Sucesso, string.Empty);

            if (Motores == null)
            {
                resultado.Mensagem  = "Lista de motores nula, inicialize a lista com os motores.";
                resultado.Resultado = ResultadoAcaoEnum.Erro;
                return(resultado);
            }

            if (Motores.Count == 0)
            {
                resultado.Mensagem  = "Lista de motores vazia, adicione motores na lista com os motores.";
                resultado.Resultado = ResultadoAcaoEnum.Erro;
                return(resultado);
            }

            return(resultado);
        }
Пример #8
0
        /// <summary>
        /// Abre porta serial para transmitir os dados
        /// </summary>
        /// <returns>Retorna Sucesso caso porta esteja ou seja aberta</returns>
        public ResultadoAcao AbrirPorta()
        {
            var resultadoAcao = new ResultadoAcao(ResultadoAcaoEnum.Sucesso, string.Format("Serial {0} aberta com sucesso", _serialPort.PortName));

            if (_serialPort.IsOpen)
            {
                resultadoAcao.Mensagem = string.Format("Porta {0} já está aberta", _serialPort.PortName);
            }

            try
            {
                _serialPort.Open();

                _serialPort.WriteBufferSize = 8;
            }
            catch (Exception exception)
            {
                resultadoAcao.Mensagem = exception.Message;

                resultadoAcao.Resultado = ResultadoAcaoEnum.Erro;
            }

            return resultadoAcao;
        }
Пример #9
0
        /// <summary>
        /// Abre porta serial para transmitir os dados
        /// </summary>
        /// <returns>Retorna Sucesso caso porta esteja ou seja aberta</returns>
        public ResultadoAcao AbrirPorta()
        {
            var resultadoAcao = new ResultadoAcao(ResultadoAcaoEnum.Sucesso, string.Format("Serial {0} aberta com sucesso", _serialPort.PortName));

            if (_serialPort.IsOpen)
            {
                resultadoAcao.Mensagem = string.Format("Porta {0} já está aberta", _serialPort.PortName);
                return(resultadoAcao);
            }

            try
            {
                _serialPort.WriteBufferSize = 8;
                _serialPort.Open();
            }
            catch (Exception exception)
            {
                resultadoAcao.Mensagem = exception.Message;

                resultadoAcao.Resultado = ResultadoAcaoEnum.Erro;
            }

            return(resultadoAcao);
        }
Пример #10
0
        private static ResultadoAcao VerificaPortaSerialIsOpen()
        {
            var resultadoAcao = new ResultadoAcao();

            if (!_serialPort.IsOpen)
            {
                resultadoAcao.Mensagem = "Porta Serial não aberta. Por favor, chame o método AbrirPorta().";
                resultadoAcao.Resultado = ResultadoAcaoEnum.Erro;
            }

            return resultadoAcao;
        }
Пример #11
0
        /// <summary>
        /// Recebe Dados do tipo de comunicação
        /// </summary>
        /// <returns>Dados retornados</returns>
        public ResultadoAcao<string> ReceberDados()
        {
            var resultadoAcao = new ResultadoAcao<string>();

            resultadoAcao.ObjetoRetorno = _serialPort.ReadLine();

            return resultadoAcao;
        }
Пример #12
0
        /// <summary>
        /// Acende Farol Frontal
        /// </summary>
        /// <returns>Resultado da acao de acender o farol</returns>
        public ResultadoAcao AcenderFarol()
        {
            var resultado = new ResultadoAcao();

            var verificacaoSensoresLed = VerificaSensoresLed();

            if (verificacaoSensoresLed.Resultado == ResultadoAcaoEnum.Erro)
            {
                return verificacaoSensoresLed;
            }

            throw new NotImplementedException("Implementar metodo que acende os farois");
        }
Пример #13
0
        private ResultadoAcao VerificaSensoresLed()
        {
            ResultadoAcao resultado = new ResultadoAcao();
            if (Sensores == null)
            {
                resultado.Mensagem = "Lista de sensores nula, inicialize a lista e adicione um sensor de LED Farol Frontal.";
                resultado.Resultado = ResultadoAcaoEnum.Erro;
                return resultado;
            }

            if (Sensores.Count == 0)
            {
                resultado.Mensagem = "Lista de sensores vazia, adicione um sensor de LED Farol Frontal.";
                resultado.Resultado = ResultadoAcaoEnum.Erro;
                return resultado;
            }

            if (!Sensores.Any(a => a.TipoSensor == TipoSensorEnum.Led))
            {
                resultado.Mensagem =
                    "Lista de sensores não apresenta nenhum sensor de LED Farol Frontal, adicione um sensor de LED Farol Frontal.";
                resultado.Resultado = ResultadoAcaoEnum.Erro;
                return resultado;
            }

            return resultado;
        }
Пример #14
0
        private ResultadoAcao VerificaMotores()
        {
            var resultado = new ResultadoAcao(ResultadoAcaoEnum.Sucesso, string.Empty);

            if (Motores == null)
            {
                resultado.Mensagem = "Lista de motores nula, inicialize a lista com os motores.";
                resultado.Resultado = ResultadoAcaoEnum.Erro;
                return resultado;
            }

            if (Motores.Count == 0)
            {
                resultado.Mensagem = "Lista de motores vazia, adicione motores na lista com os motores.";
                resultado.Resultado = ResultadoAcaoEnum.Erro;
                return resultado;
            }

            return resultado;
        }
Пример #15
0
        /// <summary>
        /// Obtem Distancia do primeiro sensor ultrassom
        /// </summary>
        /// <param name="numeroSensor">Numero do sensor de ultrassom</param>
        /// <returns>Retorna objeto padrao de resultado, caso tenha sucesso, retorna a distancia enviada pelo microcontrolador</returns>
        public ResultadoAcao<decimal> ObterDistanciaUltrassom(int numeroSensor)
        {
            var resultado = new ResultadoAcao<decimal>();

            if (Sensores == null)
            {
                resultado.Mensagem = "Lista de sensores nula, inicialize a lista e adicione um sensor de ULTRASSOM.";
                resultado.Resultado = ResultadoAcaoEnum.Erro;
                resultado.ObjetoRetorno = -1;
                return resultado;
            }

            if (Sensores.Count == 0)
            {
                resultado.Mensagem = "Lista de sensores vazia, adicione um sensor de ULTRASSOM.";
                resultado.Resultado = ResultadoAcaoEnum.Erro;
                resultado.ObjetoRetorno = -1;
                return resultado;
            }

            if (!Sensores.Any(a => a.TipoSensor == TipoSensorEnum.Ultrassom))
            {
                resultado.Mensagem = "Lista de sensores não apresenta nenhum sensor de ULTRASSOM, adicione um sensor de ULTRASSOM.";
                resultado.Resultado = ResultadoAcaoEnum.Erro;
                resultado.ObjetoRetorno = -1;
                return resultado;
            }

            Ultrassom sensor = numeroSensor == 0
                                   ? Sensores.First(a => a.TipoSensor == TipoSensorEnum.Ultrassom) as Ultrassom
                                   : Sensores.Where(a => a.TipoSensor == TipoSensorEnum.Ultrassom).Cast<Ultrassom>().FirstOrDefault(b => b.NumeroSensor == numeroSensor);

            if (sensor == null)
            {
                resultado.Mensagem = "Não existe este número de sensor de ULTRASSOM.";
                resultado.Resultado = ResultadoAcaoEnum.Erro;
                resultado.ObjetoRetorno = -1;
                return resultado;
            }

            throw new NotImplementedException("Implementar metodo de envio e retorno da distancia");
        }