BUG in emccanon.cc
- dinodf
- Offline
- Senior Member
Less
More
- Posts: 44
- Thank you received: 9
29 Dec 2022 16:50 #260502
by dinodf
BUG in emccanon.cc was created by dinodf
Dear,
I am trying to understand the correct way to remap M6 in python. If someone have infos may help me?
Reading the emccanon.cc on line 3274 there is the WAIT function, it return 0 or -1 not wait_type if timeout didn't occur, it is correct?
Regards
Dino
I am trying to understand the correct way to remap M6 in python. If someone have infos may help me?
Reading the emccanon.cc on line 3274 there is the WAIT function, it return 0 or -1 not wait_type if timeout didn't occur, it is correct?
/*! \function WAIT
program execution and interpreting is stopped until the input selected by
index changed to the needed state (specified by wait_type).
Return value: either wait_type if timeout didn't occur, or -1 otherwise. */
int WAIT(int index, /* index of the motion exported input */
int input_type, /*DIGITAL_INPUT or ANALOG_INPUT */
int wait_type, /* 0 - immediate, 1 - rise, 2 - fall, 3 - be high, 4 - be low */
double timeout) /* time to wait [in seconds], if the input didn't change the value -1 is returned */
{
if (input_type == DIGITAL_INPUT) {
if ((index < 0) || (index >= EMCMOT_MAX_DIO))
return -1;
} else if (input_type == ANALOG_INPUT) {
if ((index < 0) || (index >= EMCMOT_MAX_AIO))
return -1;
}
EMC_AUX_INPUT_WAIT wait_msg;
flush_segments();
wait_msg.index = index;
wait_msg.input_type = input_type;
wait_msg.wait_type = wait_type;
wait_msg.timeout = timeout;
interp_list.append(wait_msg);
return 0;
}
Regards
Dino
Please Log in or Create an account to join the conversation.
- andypugh
- Offline
- Moderator
Less
More
- Posts: 23162
- Thank you received: 4860
08 Jan 2023 00:30 #261220
by andypugh
Replied by andypugh on topic BUG in emccanon.cc
Can you explain further? I don't understand the link between a python remap and the emccanon WAIT function.
All the code above does is check that the input values are valid and then create an EMC_AUX_INPUT_WAIT object that is added to the motion queue. It is not the code that performs the waiting and returns the result of the wait. The code above just returns a -1 to indicate an invalid input to the interpreter.
The message is then parsed here:
github.com/LinuxCNC/linuxcnc/blob/master...emctaskmain.cc#L1924
And the actual inout checking is done here:
github.com/LinuxCNC/linuxcnc/blob/master...emctaskmain.cc#L2749
All the code above does is check that the input values are valid and then create an EMC_AUX_INPUT_WAIT object that is added to the motion queue. It is not the code that performs the waiting and returns the result of the wait. The code above just returns a -1 to indicate an invalid input to the interpreter.
The message is then parsed here:
github.com/LinuxCNC/linuxcnc/blob/master...emctaskmain.cc#L1924
And the actual inout checking is done here:
github.com/LinuxCNC/linuxcnc/blob/master...emctaskmain.cc#L2749
Please Log in or Create an account to join the conversation.
- dinodf
- Offline
- Senior Member
Less
More
- Posts: 44
- Thank you received: 9
13 Jan 2023 00:09 #261756
by dinodf
Replied by dinodf on topic BUG in emccanon.cc
Hi,
maybe I have not understand the code.
In the comment "Return value: either wait_type if timeout didn't occur, or -1 otherwise." but in the function the return is 0 or -1 never
wait_type, /* 0 - immediate, 1 - rise, 2 - fall, 3 - be high, 4 - be low */
But it work so I think I am in wrong...
Regards
maybe I have not understand the code.
In the comment "Return value: either wait_type if timeout didn't occur, or -1 otherwise." but in the function the return is 0 or -1 never
wait_type, /* 0 - immediate, 1 - rise, 2 - fall, 3 - be high, 4 - be low */
But it work so I think I am in wrong...
Regards
Please Log in or Create an account to join the conversation.
- andypugh
- Offline
- Moderator
Less
More
- Posts: 23162
- Thank you received: 4860
13 Jan 2023 16:00 #261802
by andypugh
Replied by andypugh on topic BUG in emccanon.cc
Yes, the return value from the code you found is only used to report an error if t there is a problem adding the command to the motion queue.
The documented return value is actually set in emctaskmain.cc
The documented return value is actually set in emctaskmain.cc
The following user(s) said Thank You: dinodf
Please Log in or Create an account to join the conversation.
Time to create page: 0.057 seconds