private void btnStart_Click(object sender, EventArgs e) { double value = 0.0; int valid = 0; if (!m_obd2Interface.Connected) { MessageBox.Show("A vehicle connection must first be established. \n\n" + "Please enable communications and check all wiring connections.", "Connection Required", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } else { int count = 0; do { OBD2Response response1 = m_obd2Interface.getResponse(new OBD2Request("010D")); OBD2Response response2 = m_obd2Interface.getResponse(new OBD2Request("010C")); OBD2Response response3 = m_obd2Interface.getResponse(new OBD2Request("010D")); if (response1 != null && response2 != null && response3 != null) { double value1 = response1.getValue(0).MetricValue; double value2 = response3.getValue(0).MetricValue; double value3 = response2.getValue(0).MetricValue; double totalSeconds = response2.Date.Subtract(response1.Date).TotalSeconds; TimeSpan timeSpan = response3.Date.Subtract(response1.Date); value = (totalSeconds / timeSpan.TotalSeconds * (value2 - value1) + value1) / value3 + value; ++valid; } progressBar.Value = count; count += 5; }while (count < 100); lblRatio.Text = (value / (double)valid).ToString("0.000000"); } }