示例#1
0
 public IActionResult Read()
 {
     try {
         SensorSettings temp       = (SensorSettings)repositorio.Read();
         string         jsonstring = JsonConvert.SerializeObject(temp);
         return(this.Ok(jsonstring));
     }
     catch (Exception ex) {
         Console.WriteLine(ex.Message);
         return(null);
     }
 }
示例#2
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;
                }
                }
            }
        }