private void ProcessThread(string rawData, Business.Arrays.SensorData resultTable) { // Se verifica que el mensaje sea para SDA. if (rawData.StartsWith("SDA: ")) rawData = rawData.Remove(0, 5); else return; // Se separan los datos string[] rawColumnsData = rawData.Split(' '); Business.Arrays.GenericArray<Business.Measurement> receivedData = new Business.Arrays.GenericArray<Business.Measurement>(); Business.MeasureUnit measureInfo; Business.Measurement newMeasure; // Se convierten los datos a double for (int i = 0; i < rawColumnsData.Length; ++i) { try { double processedData = Convert.ToDouble(rawColumnsData[i]); measureInfo = new Business.MeasureUnit(resultTable.Columns[i].Measure, resultTable.Columns[i].Unit); newMeasure = new Business.Measurement(measureInfo); newMeasure.Value = processedData; receivedData.Add(newMeasure); } catch (Exception ex) { RuntimeLogs.SendLog(ex.Message, "Processing.Process(string, ref Business.Arrays.SensorData )"); } } resultTable.AddRow(receivedData); }
// ComunicaciĆ³n private DataTable SensorDataDataTableFormat(Business.Arrays.SensorData data) { DataTable result = new DataTable(); for (int i = 0; i < data.Columns.Size; ++i) { string columnName = data.Columns[i].Measure.Name + " (" + data.Columns[i].Unit.Name + ")"; int tr = 1; while (result.Columns.Contains(columnName)) { columnName = data.Columns[i].Measure.Name + tr.ToString() + " (" + data.Columns[i].Unit.Name + ")"; tr++; } result.Columns.Add(columnName, typeof(double)); } return(result); }
public DataTable SensorsListToDataTable(SDA_Core.Business.Arrays.SensorDataArray data) { DataTable result = new DataTable(); result.Columns.Add("Name", typeof(string)); result.Columns.Add("Column count", typeof(int)); for (int i = 0; i < data.List.Size; ++i) { Business.Arrays.SensorData sensor = data.List[i]; DataRow newRow = result.NewRow(); newRow[0] = sensor.SensorName; newRow[1] = sensor.Columns.Size; result.Rows.Add(newRow); } return(result); }
public void SensorDataToDataTable(ref DataTable data, Business.Arrays.SensorData information) { int init = data.Rows.Count, last = information.Rows; if (data.Columns.Count == 0) { data = SensorDataDataTableFormat(information); } for (int i = init; i < last; ++i) { DataRow newRow = data.NewRow(); for (int j = 0; j < information.Columns.Size; ++j) { try { newRow[j] = information.Columns[j].List[i].Value; } catch { break; } } data.Rows.Add(newRow); } }
/// <summary> /// ES: Procesa datos recogidos por Arduino SDA. /// </summary> /// <param name="rawData">ES: String con los datos sin procesar.</param> /// <param name="resultTable">ES: SensorDataArray donde se almacenaran los resultados</param> /// <param name="clearTable">ES: Indicar 'true' si se quiere limpiar los datos de la tabla</param> public void Process(string rawData, Business.Arrays.SensorData resultTable) { ThreadStart ts = delegate { ProcessThread(rawData, resultTable); }; new Thread(ts).Start(); }