private void timerUpdateGUI_Tick(object sender, EventArgs e) { timerUpdateGUI.Enabled = false; // we don't want timer to start this thread twice swGUI.Reset(); // some timers to keep track of how long gui updates are taking. swGUI.Start(); // update this timer's refresh rate from text box int newInterval = Convert.ToInt16(Convert.ToDouble(txtSaturnRefreshMs.Text)); if (newInterval > 10000 || newInterval < 1) newInterval = 100; timerUpdateGUI.Interval = newInterval; // Tell the Tag Handler what's on the GUI SetHandleTagSettings(); // Update Text Boxes txtBoxTags.Text = tagTextBoxContent; txtDebugMessages.Text = debugTextBoxContent; // Update Saturn checkbox if (!saturn.IsSaturnOpen()) { chkSaturn.Checked = false; } // Update MIDI checkbox if (!midi.IsMidiConfigOpen()) { chkMIDI.Checked = false; } // Update Bink Bonk checkbox if (!binkBonk.isBinkBonkOpen()) { chkBinkBonk.Checked = false; } // ***** this is the heart of it ****** // // Update the relevant sensor gui sections: if (readerMgr.IsInventoryRunning()) { // Sensor Processing UpdateAccelerometerGUI(); UpdateTemperatureGUI(); UpdateSOCGUI(); } // Update tag statistics - this does the grid view ArrayList newTags = handleTags.GetNewTags(); if (newTags.Count > 0) ProcessTagStats(); // Check if Read is enabled and reader is connected. If so, enable read on the Reader. if (!chkReadDisabled.Checked && readerMgr.IsConnected()) { if (chkReadAll.Checked) { readerMgr.RestartRead(new ReaderManager.ReadCmdSettings("0000", "0000000000000000", 1, 0)); } else if (chkReadSelected.Checked) { // Refresh which tag we are performing Read command on // via the selected tag in the grid view. string selectedTag = stats.GetSelectedTagID(); string mask = ""; if (selectedTag != null) { mask = mask.PadRight(selectedTag.Length * 4, '1'); readerMgr.RestartRead(new ReaderManager.ReadCmdSettings(selectedTag, mask, 1, 0)); } else { readerMgr.StopRead(); } } } else if (readerMgr.IsConnected()) readerMgr.StopRead(); // Update time info swGUI.Stop(); long picosecPerTick = (1000L * 1000L * 1000L * 1000L) / Stopwatch.Frequency; long microsecGUIrate = swGUI.ElapsedTicks * picosecPerTick / (1000L * 1000L * 1000L); //long microsecHandlerrate = swHandler.ElapsedTicks * picosecPerTick / (1000L * 1000L * 1000L); if (microsecGUIrate > peakGuiTime) peakGuiTime = microsecGUIrate; //if (microsecHandlerrate > peakHandlerTime) peakHandlerTime = microsecHandlerrate; lblGUITime.Text = "GUI Time: " + peakGuiTime.ToString() + " ms"; //lblHandlerTime.Text = "Handler Time: " + peakHandlerTime.ToString() + " ms"; //Application.DoEvents(); // removing this cut the gui handler down from 55ms to 20ms peak time // with Saturn open, and with no effect on gui responsiveness! timerUpdateGUI.Enabled = true; // re-enable this timer. }