________________________________
From: Nicklas SB Karlsson <[email protected]>
Sent: December 8, 2018 4:23 PM
To: EMC developers
Subject: Re: [Emc-developers] how to catch errors with waitcomplete command in
python
>No real idea but an exception is a common method to handle errors, it might
>however be a problem in a real time system.
In this case the python is a bit of a red herring...
I'm using python to call the wait_complete() function but it actually is
programmed in C++
Here is the function:
static int emcWaitCommandComplete(pyCommandChannel *s, double timeout) {
double start = etime();
do {
double now = etime();
if(s->s->peek() == EMC_STAT_TYPE) {
EMC_STAT *stat = (EMC_STAT*)s->s->get_address();
int serial_diff = stat->echo_serial_number - s->serial;
if (serial_diff > 0) {
return RCS_DONE;
}
if (serial_diff == 0 &&
( stat->status == RCS_DONE || stat->status == RCS_ERROR )) {
return stat->status;
}
}
esleep(fmin(timeout - (now - start), EMC_COMMAND_DELAY));
} while (etime() - start < timeout);
return -1;
}
It seems to decide if the command is done by it's serial number.
But it does check it's status.
It seems the RCS is probably a message frame that NML uses.
so maybe we could inject the commands error code into the
stat-> structure.
I just haven't been able to follow the code enough.
Thanks
Chris M
_______________________________________________
Emc-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/emc-developers