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); } }
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; } } } }