- Posts: 12160
- Thank you received: 0
Can you change an input pin in a .COMP?
9 years 6 months ago #90746
by rodw
Can you change an input pin in a .COMP? was created by rodw
I am writing a simple component that has a GUI screen variable as an input
In a perfect world, I also wanted to change the value using an analog value in Gcode
So, I would like the screen variable updated if a value is set by a gcode M68 command to keep everything in step like this
I get a compiler lvalue required error. So I am assuming that means input pins are read only and cannot be modifed within a component.
Is this the case and is there any workaround.?
In a perfect world, I also wanted to change the value using an analog value in Gcode
Code:
pin in float gcode_input = 95 "Gcode analog input set by M68 command";
pin in float target_volts = 95 "The target volts (default 95.0 volts) set in GUI";
Code:
target_volts = gcode_input;
I get a compiler lvalue required error. So I am assuming that means input pins are read only and cannot be modifed within a component.
Is this the case and is there any workaround.?
Please Log in to join the conversation.
9 years 6 months ago #90928
by andypugh
Replied by andypugh on topic Can you change an input pin in a .COMP?
You can use an internal value that is set by the higher (or lower) of either of the two inputs.
Or maybe have a handler in the GUI that allows the GUI value to be over-written by an M-code.
Or maybe have a handler in the GUI that allows the GUI value to be over-written by an M-code.
Please Log in to join the conversation.
9 years 6 months ago #90949
by rodw
Andy, thanks, I think the GUI approach would be best. Gmocappy uses glade and I have edited the plasma.glade XML file in the sim by hand.to tidy up a couple of things but I don't really know where to start to add a new GUI handler that overwrites the target voltage. I guess that would get done in plasma.py.
Can you give me an idea on where to start?
Would the first step be to add a screen variable for the M68 value and set the target voltage in the python file to that value?
Replied by rodw on topic Can you change an input pin in a .COMP?
andypugh wrote: You can use an internal value that is set by the higher (or lower) of either of the two inputs.
Or maybe have a handler in the GUI that allows the GUI value to be over-written by an M-code.
Andy, thanks, I think the GUI approach would be best. Gmocappy uses glade and I have edited the plasma.glade XML file in the sim by hand.to tidy up a couple of things but I don't really know where to start to add a new GUI handler that overwrites the target voltage. I guess that would get done in plasma.py.
Can you give me an idea on where to start?
Would the first step be to add a screen variable for the M68 value and set the target voltage in the python file to that value?
Please Log in to join the conversation.
- fsabbatini
- Offline
- Senior Member
-
Less
More
- Posts: 45
- Thank you received: 1
4 years 6 months ago #238958
by fsabbatini
Replied by fsabbatini on topic Can you change an input pin in a .COMP?
Sorry for responding years later but yes, there is a way,
each input pin you define is just a macro, so first just undefine temporarily, for example:
POS_CMD is an input from simple_tp.comp. I just added feedback to that component so when simple_tp is disabled i want pos_cmd=pos_fb, so what you must do is push the macro in the preprocessor stack, undefine the input pin macro, modify it as dereference access (like if you where in a "normal" c component) and then pop from the stack
#pragma push_macro("remove_pos_cmd")
#undef pos_cmd
*(__comp_inst->pos_cmd) = curr_pos;
#pragma pop_macro("remove_pos_cmd")
best regards
Franco
each input pin you define is just a macro, so first just undefine temporarily, for example:
POS_CMD is an input from simple_tp.comp. I just added feedback to that component so when simple_tp is disabled i want pos_cmd=pos_fb, so what you must do is push the macro in the preprocessor stack, undefine the input pin macro, modify it as dereference access (like if you where in a "normal" c component) and then pop from the stack
#pragma push_macro("remove_pos_cmd")
#undef pos_cmd
*(__comp_inst->pos_cmd) = curr_pos;
#pragma pop_macro("remove_pos_cmd")
best regards
Franco
Please Log in to join the conversation.
4 years 6 months ago #239237
by andypugh
Replied by andypugh on topic Can you change an input pin in a .COMP?
There is also a (kludgy) way to check if a pin is connected and set the value internally if it is not.
sourceforge.net/p/emc/mailman/message/26519176/
sourceforge.net/p/emc/mailman/message/26519176/
Please Log in to join the conversation.
Time to create page: 0.085 seconds
