private bool bUpdateDichrgChrgCycleTableFields(int iSelectedFromList) { bool bRet = false; AutomotiveBattery.stDischrgChrgCycle stdchchrgOneCycle = default(AutomotiveBattery.stDischrgChrgCycle); // check for an error if (iSelectedFromList < m_batBattery.iGetNumStartingCycles()) { // get selected discharge-charge cycle structure stdchchrgOneCycle = m_batBattery.dctGetBatChrgCyclByIdx(iSelectedFromList); // now update individual fileds // battery charge in : Q_in(when fully charged OR when ended recording) - Q_in(when starter off) ChrgInTextBox14.Text = ((stdchchrgOneCycle.stbtdtmWhenFullyCharged.liQIn) / 1000.0).ToString("0000"); long liTemp = stdchchrgOneCycle.stbtdtmWhenFullyCharged.liQIn - stdchchrgOneCycle.stbtdtmStarterOn.liQIn; // battery charge out: Q_out(when fully charged OR when ended recording) - Q_out(when started recording OR when starter on) ChrgOutTextBox13.Text = ((stdchchrgOneCycle.stbtdtmStarterOffAfterOn.liQOut) / 1000.0).ToString("0000"); long liTemp2 = (stdchchrgOneCycle.stbtdtmWhenFullyCharged.liQOut - stdchchrgOneCycle.stbtdtmStarterOn.liQOut) / 1000; // computed cranking Amperes ComputedCATextBox11.Text = stdchchrgOneCycle.dblCA.ToString("0000"); // computed battery resistance BattResOhmsTextBox10.Text = stdchchrgOneCycle.dblBatteryResistance.ToString("0.#00"); // maximum discharge current (likely starter current) MaxDchrgCurrTextBox8.Text = stdchchrgOneCycle.dblMaxDischrgCurrent.ToString("000"); // battery temperature TemperTextBox9.Text = stdchchrgOneCycle.stbtdtmStarterOn.dblBattTemp.ToString("+#.#;-#.#;0"); if (true == stdchchrgOneCycle.bIsFullyRecharged) { // compute time it took to re-charge battery afte starting the engine (in minutes) TimeSpan tspChargingDur; tspChargingDur = stdchchrgOneCycle.stbtdtmWhenFullyCharged.dtBattDateTime.Subtract(stdchchrgOneCycle.stbtdtmStarterOffAfterOn.dtBattDateTime); RechrgDuraTextBox15.Text = tspChargingDur.Minutes.ToString(); } else { RechrgDuraTextBox15.Text = ""; }; // battery fully recharged check box FullyRechargdCheckBox1.Checked = stdchchrgOneCycle.bIsFullyRecharged; // battery coulombs needed to start engine : Q_out(when starter was off) - Q_out(when starter was ON) BattCoulmbsRelzdTextBox12.Text = stdchchrgOneCycle.dblCoulmbsToStartEngine.ToString("0"); // starter motor run duration StrtMtrRanDurTextBox7.Text = stdchchrgOneCycle.tmspnStrMotorRunDur.Seconds.ToString("0") + "." + stdchchrgOneCycle.tmspnStrMotorRunDur.Milliseconds.ToString("00"); bRet = true; } ; return(bRet); } // end of bUpdateDichrgChrgCycleTableFields()
} // end of bUpdateDichrgChrgCycleTableFields() public bool bUpdateListBoxAndCntFromMmapDschrgChrgCycles() { bool bRet = false; int iNumOfDchrgChrgCycles = m_batBattery.iGetNumStartingCycles(); if (iNumOfDchrgChrgCycles == 0) { bRet = false; } else { m_lstDischrgChrgCycles.Clear(); m_lstDischrgChrgCycles = null; // discard old list // initialize listbox view - first create a list of items m_lstDischrgChrgCycles = new List <DateTime>(iNumOfDchrgChrgCycles); // no add battery charge-discharge datetime stamps to the list for (int k = 0; k < iNumOfDchrgChrgCycles; k++) { DateTime dtmTempElem = m_batBattery.dtmGetBatChrgCyclDatTimByIdx(k); m_lstDischrgChrgCycles.Add(dtmTempElem); // Debug.WriteLine("Form1() ctor: adding ["+k.ToString() + "] starting cycle "+dtmTempElem.ToString() + " to listbox"); } ; // DischrgChrgClcListBox1.DataSource=null; // disconnect from old data source DischrgChrgClcListBox1.DataSource = m_lstDischrgChrgCycles; // reconnect to the same datasource, but with different data // update counter fields as well DischargeChargeCyclesTextBox16.Text = iNumOfDchrgChrgCycles.ToString(); // initialy select the last one into table fields // int iStrtMtrCycleToSelect=iNumOfDchrgChrgCycles-1; int iStrtMtrCycleToSelect = 0; if (iNumOfDchrgChrgCycles > 0) { DischrgChrgClcListBox1.SetSelected(iStrtMtrCycleToSelect, true); bUpdateDichrgChrgCycleTableFields(iStrtMtrCycleToSelect); } ; AutomotiveBattery.stDischrgChrgCycle stdchchrgOneTempCycle = default(AutomotiveBattery.stDischrgChrgCycle); // output table for resistance versus temperature diagram // Debug only option for (int k = 0; k < iNumOfDchrgChrgCycles; k++) { stdchchrgOneTempCycle = m_batBattery.dctGetBatChrgCyclByIdx(k); Debug.WriteLine("[" + k.ToString() + "] R=" + stdchchrgOneTempCycle.dblBatteryResistance.ToString("0.000") + " Ohm, temp=" + stdchchrgOneTempCycle.stbtdtmStarterOn.dblBattTemp.ToString("+#.0;-#.0") + " °C"); } ; }; return(bRet); }