These three functions are called into action when a query is to be sent. The first, query_refresh, calls the .change_int method and reset_deadbands functions to prepare for the query, then sends the query with send_query.
/*-------------------------------------------------------------------- * Function: query_refresh * Returns: t or nil * Description: Sets the interpolator, resets the deadband, and sends a * query. Used by callbacks on the four interpolator buttons, * the Update display button, and a timer on the Record button. *------------------------------------------------------------------*/ function query_refresh(button, title_string) { if (title_string) hw.change_int(button, title_string); reset_deadbands(); send_query(hw.int_set, hw.Text, hw.PtHist, hw.YHistEnt, hw.StartEnt, hw.DurEnt, hw.XHistEnt, hw.IntEnt, hw.GapEnt, button); }
The reset_deadbands function is needed whenever a non-deadband button is pressed. Any of the non-deadband buttons sends a new query, and since the data from only one deadband query can be displayed in the text widget at a time, we have chosen to always start with a full data set (no deadband), and delete all past deadband traces to avoid confusion in the display. This is done using the CwGraphClearTrace convenience function of the CwGraph widget.
/*-------------------------------------------------------------------- * Function: reset_deadbands * Returns: an integer * Description: Clears all traces and sets the Full data set (no deadband) * option. Called when non-deadband buttons are activated. *------------------------------------------------------------------*/ function reset_deadbands() { hw.DBBut.flags = cons(Pt_SET, nil); hw.DBPBut.flags = cons(Pt_SET, nil); if(!undefined_p(GraphWidget)) { CwGraphClearTrace (GraphWidget, 0); CwGraphClearTrace (GraphWidget, 1); CwGraphClearTrace (GraphWidget, 2); } hw.DBNoneBut.flags = Pt_SET; }
We also need to erase the trace of deadband query when its corresponding button is untoggled. That's what the db_prep_query function does. And when the button is toggled on, it sends a query using the send_query function.
/*-------------------------------------------------------------------- * Function: db_prep_query * Returns: t or nil * Description: Sends a query when a Deadband button is toggled on, and * erases the corresponding graph trace when a Deadband button * is untoggled. *------------------------------------------------------------------*/ function db_prep_query(button) { if ((button.flags & Pt_SET) != 0) send_query(hw.int_set, hw.Text, hw.PtHist, hw.YHistEnt, hw.StartEnt, hw.DurEnt, hw.XHistEnt, hw.IntEnt, hw.GapEnt, button); else { if(!undefined_p(GraphWidget)) { if(button == hw.DBNoneBut) CwGraphClearTrace (GraphWidget, 0); else if(button == hw.DBBut) CwGraphClearTrace (GraphWidget, 1); else if(button == hw.DBPBut) CwGraphClearTrace (GraphWidget, 2); } } }
Copyright © 1995-2010 by Cogent Real-Time Systems, Inc. All rights reserved.