/// <summary> /// Recepción de datos del puerto serial enviados por arduino /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) { //-------------------------Recepción de datos del arduino------------------------------ _bufferint = serialPort1.ReadLine(); //-------------Convirtiendo valores recibidos a datos tipo double------------------ bool valnum1 = double.TryParse(_bufferint, out _data1); //-------------------Muestreo de datos para filtrar errores de medición------------- if (valnum1) // Validando que el dato recibido sea un número { _dataHcsr04 = _data1; ErrorIntegral(_dataHcsr04 * 0.017); _sumHcsr04 = _sumHcsr04 + _dataHcsr04; _contador++; } //--------------Promediando datos del muestreo y calculando distancias------------------ if (_contador == 29) { _promHcsr04 = _sumHcsr04 / 30; _contador = 0; _sumHcsr04 = 0; _sumTime = 0; _distanceHcsr04 = _promHcsr04 * 0.017; ErrorProporcional(_distanceHcsr04); ErrorDerivativo(_distanceHcsr04); //-------------Mandando distancia sensada por el sensor al monitor------------------ BufferContentHcsr04(Math.Round(_distanceHcsr04, 1).ToString()); BufferOutEp(Ep.ToString()); BufferOutEint(Ei.ToString()); BufferOutEderiv(Ed.ToString()); BufferOutPwm(_pwmPid.ToString()); //-----------------Envio de datos al arduino y graficación--------------------------- serialPort1_SenddataProportional(_distanceHcsr04); Updategraph(i++, _distanceHcsr04); serialPort1.DiscardInBuffer(); //-----------------Añadiendo datos a lista para su ingreso al excel------------------- Posiciones.Add(_distanceHcsr04); Errores.Add(Ep); if (i > 100) { i = 0; } } }
private void bemalteEierCB(XcoQueue<Ei> source, Ei entry) { this.Invoke(new Action(() => { textBox3.AppendText(entry.ToString() + " bemalt" + Environment.NewLine); })); }