My guess is that the commented out Interp::synch() should be something like:
GET_EXTERNAL_QUEUE_EMPTY(); // possibly check that this returns true
set_probe_data(&_setup);
_setup.probe_flag = OFF;
In other words, duplicate the code at the beginning of Interp::read. My
guess is that we should also have the code (from read) that checks and
handles the toolchange_flag and the input_flag (also from the beginning
of Interp::read).
Ken
Michael Haberler wrote:
narrowing down more, I tentatively have the condition where the interpreter should wait for a G38 to finish - I'm looking for a suggestion how to make it actually wait
Interp::synch() isnt it - any suggestions?
-Michael
rs274_pre.cc near line 25
logDebug("!!!KL Open file is:%s:", _setup.filename);
logDebug("MDImode = %d", MDImode);
while(MDImode && _setup.call_level) // we are still in a subroutine
{
status = read(0); // reads from current file and calls parse
logDebug("status = %d\n",status);
if (status != INTERP_OK)
{
return status;
}
int exec_status = execute();
/* the following condition is true if a G38 was issued and
* the next interpreter read should wait for it to finish
*/
if ((exec_status == INTERP_EXECUTE_FINISH) &&
(_setup.probe_flag == ON)) {
printf("execute(%s) returns INTERP_EXECUTE_FINISH , probe_flag
ON\n",
_setup.blocktext);
/* this doesnt work: Interp::synch();
*/
}
}
Am 10.05.2010 um 01:55 schrieb Michael Haberler:
I've looked into this a bit more - it is definitely a race condition.
The interpreter inner loop which reads and executes a o-word block fails to
wait for a G38 to finish and immediately executes the next command which
explains the erratic coordinate results observed thereafter (near
emc/rs274ngc/rs274ngc_pre.cc line 241). It also behaves differently from normal
main loop executing an .ngc file (no calls to
emcTaskPlanSynch(),emcTaskPlanClearWait(),emcTaskPlanRead() etc).
------------------------------------------------------------------------------
_______________________________________________
Emc-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/emc-developers