public object Create(object p)
 {
     try
     {
         DadoColetado r = (context.DadoColetado.Add((DadoColetado)p)).Entity;
         context.SaveChanges();
         Program.connection.StartAsync().ContinueWith(task =>
         {
             if (task.IsFaulted)
             {
                 Console.WriteLine("There was an error opening the connection:{0}", task.Exception.GetBaseException());
             }
             else
             {
                 string valorLido  = ((DadoColetado)p).ValorLido.ToString() + DateTime.Now.Second;
                 string medidor    = ((DadoColetado)p).Hwid;
                 string tipoMedida = ((Grandeza) new GrandezaRepository(new LPTContext()).Read(((DadoColetado)p).TipoDeGrandeza)).Descricao;
                 Program.connection.InvokeAsync <string>("SendMessage", medidor, tipoMedida, valorLido).ContinueWith(task1 => {
                     if (task1.IsFaulted)
                     {
                         Console.WriteLine("There was an error calling send: {0}", task1.Exception.GetBaseException());
                     }
                 });
             }
         }).Wait();
         Program.connection.StopAsync();
         return(r);
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
         return(null);
     }
 }
 public IActionResult Update(int IdDadoColetado, [FromBody] DadoColetado newObject)
 {
     try {
         var c = repositorio.Update(IdDadoColetado, newObject);
         return(this.Ok(c));
     }
     catch (Exception ex) {
         Console.WriteLine(ex.Message);
         return(BadRequest());
     }
 }
 public IActionResult Create([FromBody] DadoColetado t)
 {
     try {
         var c = repositorio.Create(t);
         Console.WriteLine("ok ");
         return(this.Ok(c));
     }
     catch (Exception) {
         Console.WriteLine("erro");
         return(BadRequest());
     }
 }
 public IActionResult Create([FromBody] DadoColetado t)
 {
     try {
         t.Experimento = Program.experimentoAtivo; // Os dados sao recebidos e o idExperimento é "settado" com base no experimento ativo
         var c = repositorio.Create(t);
         Console.WriteLine("ok ");
         return(this.Ok(c));
     }
     catch (Exception) {
         Console.WriteLine("erro");
         return(BadRequest());
     }
 }
 public object Read(int idDadoColetado)
 {
     try
     {
         DadoColetado r = (from p in context.DadoColetado where p.IdDadoColetado == idDadoColetado select p).FirstOrDefault <DadoColetado>();
         return(r);
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
         return(null);
     }
 }
 public object Update(int idDadoColetado, object newObject)
 {
     try
     {
         DadoColetado r = (from p in context.DadoColetado where p.IdDadoColetado == idDadoColetado select p).FirstOrDefault <DadoColetado>();
         foreach (var att in ((DadoColetado)newObject).GetType().GetProperties())
         {
             if (!att.Name.Equals("idDadoColetado"))
             {
                 r.GetType().GetProperty(att.Name).SetValue(r, att.GetValue(newObject));
             }
         }
         context.Entry(r).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
         context.SaveChanges();
         return(r);
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
         return(null);
     }
 }
Example #7
0
        private static void EnviaDados()
        {
            while (true)
            {
                //simula a leitura dos dados a cada 1000 milisegundos
                Thread.Sleep(1000);

                switch (((SensorSettings)sensorSettingsRepo.Read()).State)
                {
                //verifica o estado de operacao do medidor
                case 0:    //offline - standby
                {
                    //System.Console.Clear();
                    break;
                }

                case 1:    //on - enviando dados ao servidor de dados
                {
                    var temp = new DadoColetado();
                    temp.Experimento = 0;
                    temp.ColetadoEm  = DateTime.Now;
                    temp.Hwid        = ((SensorSettings)sensorSettingsRepo.Read()).HWID;

                    var valorReal = 0.0;

                    /*
                     *  converte o valor lido em valor real, assumindo que seja um polinomio A*x + B*x^2 + C*x^3 etc etc
                     *  OS coeficientes sao os elementos da lista CalibrationParameters, os expoentes sao os indices dos elementos na  lista e o X é
                     *  a variavel ValorLido.
                     *
                     *  caso polinomios nao sejam a melhor aproximacao, uma nova abordagem deve ser feita e implementada aqui!
                     */

                    foreach (var coef in sensorSettings.CalibrationParameters)
                    {
                        int    idx = sensorSettings.CalibrationParameters.ToList().IndexOf(coef);
                        double pot = Math.Pow(Int32.Parse(DadoLido), idx);
                        valorReal += coef * pot;
                    }
                    // fim da funcao que converte valorlido em valor real
                    temp.ValorLido      = valorReal;
                    temp.IdDadoColetado = 0;
                    temp.TipoDeGrandeza = ((SensorSettings)sensorSettingsRepo.Read()).OperationType;

                    client.Headers["Content-type"] = "application/json";
                    MemoryStream ms = new MemoryStream();
                    DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(DadoColetado));
                    ser.WriteObject(ms, temp);
                    byte[] data = client.UploadData(
                        ((SensorSettings)sensorSettingsRepo.Read()).ServersIP + "/LPT/AcquiredData",
                        "POST",
                        ms.ToArray()
                        );
                    ms = new MemoryStream(data);
                    DadoColetado returned = ser.ReadObject(ms) as DadoColetado;
                    System.Console.WriteLine(returned.Experimento + " -- " + temp.Experimento);
                    System.Console.WriteLine("Enviando " + ((SensorSettings)sensorSettingsRepo.Read()).OperationType + ":" + DadoLido);
                    break;
                }

                case 2:     //calibrate - enviando dados raw para o servidor de dados afim de realizar a calibracao do medidor
                {
                    var temp = new DadoColetado();
                    temp.Experimento    = 0;
                    temp.ColetadoEm     = DateTime.Now;
                    temp.Hwid           = ((SensorSettings)sensorSettingsRepo.Read()).HWID;
                    temp.ValorLido      = Int32.Parse(DadoLido);
                    temp.IdDadoColetado = 0;
                    temp.TipoDeGrandeza = ((SensorSettings)sensorSettingsRepo.Read()).OperationType;

                    client.Headers["Content-type"] = "application/json";
                    MemoryStream ms = new MemoryStream();
                    DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(DadoColetado));
                    ser.WriteObject(ms, temp);
                    byte[] data = client.UploadData(
                        ((SensorSettings)sensorSettingsRepo.Read()).ServersIP + "/LPT/AcquiredData",
                        "POST",
                        ms.ToArray()
                        );
                    ms = new MemoryStream(data);
                    DadoColetado returned = ser.ReadObject(ms) as DadoColetado;
                    System.Console.WriteLine(returned.Experimento + " -- " + temp.Experimento);
                    System.Console.WriteLine("Enviando " + ((SensorSettings)sensorSettingsRepo.Read()).OperationType + ":" + DadoLido);
                    break;
                }
                }
            }
        }