Am 02.04.2014 um 02:26 schrieb Rod Fitzsimmons Frey <rodf...@gmail.com>:
> Thanks, Michael! I had read much of the C++ code but not that bit... I got > to SET_DIGITAL_OUTPUT_BIT and thought that was as good as it got. It > seemed at that point I might as well just execute("G64 P01") etc. I suggest to avoid recursive interpreter invocations from remaps if you can it works but, but the interpreter C++ code positively was not designed with this in mind meaning: pretty easy to get to border cases where strange things happen (hi Norbert ;) the canon route is robust - recommended - Michael > > > > > On Tue, Apr 1, 2014 at 6:53 PM, Michael Haberler <mai...@mah.priv.at> wrote: > >> here is an example for what I described below: >> >> >> http://git.linuxcnc.org/gitweb?p=linuxcnc.git;a=commit;h=d426cc90b5e1338f1a2b8ad403ea11e0a24f3b50 >> >> try 'M465 P0Q1' and 'M465 P0Q0' and watch motion.digital-out-00 >> >> - Michael >> >> Am 01.04.2014 um 22:10 schrieb Michael Haberler <mai...@mah.priv.at>: >> >>> Rod, >>> >>> Am 31.03.2014 um 21:22 schrieb Rod Fitzsimmons Frey <rodf...@gmail.com>: >>> >>>> I've looked at this and see where the bitmask, but it seems I can only >> read >>>> pins with the hal component, not set them? >>> >>> that is correct >>> >>>> How can I turn on my power drawbar valve, trigger the blow valve, etc? >>> >>> you can do pretty much everything in embedded Python what the NGC >> interpreter 'above' can do. >>> >>> So in the context of setting pins, what you can do is the same thing the >> interpreter does with M62-M65 pin operations. >>> >>> The way you do that is: you read up on the C++ code what the interpreter >> does, and do the same thing in Python >>> >>> in the context of setting pins, this means reading >> src/emc/rs274ng/interp_convert.cc Interp_convert_m() and what the canon >> calls do which result from there, for example M62 does this: >>> >>> SET_MOTION_OUTPUT_BIT(round_to_int(block->p_number)); >>> >>> now for each C++ canon all like this one there is an equivalent Python >> method emccanon.SET_MOTION_OUTPUT_BIT(p) with the same signature - see >> src/emc/rs274ng/canonmodule.cc >>> >>> >>> sorry - there is just no way to document all this - you are extending an >> interpreter written in C++, so you are expected to read the C++ internals >> and understand them before you go about it >>> >>> The embedded python code is primarily there as glue for remapped codes >> as document - with Oword subs; that is documented and works. >>> >>> If you go beyond that, you are on your own - it is possible but not >> necessarily easy. >>> >>> If you find a method which is useful, please contribute examples and >> documentation. >>> >>> - Michael >>> >>> >>>> I feel like I'm missing some obvious insight... this feeling of >>>> incompetence is very uncomfortable. >>>> >>>> >>>> On Mon, Mar 31, 2014 at 2:12 PM, Niemand Sonst <nie...@web.de> wrote: >>>> >>>>> Hallo Rod, >>>>> >>>>> my name is Norbert ;-) >>>>> >>>>> Have you taken a look to >>>>> >>>>> >>>>> >> http://www.linuxcnc.org/docs/devel/html/remap/structure.html#_optional_interpreter_features_ini_file_configuration_a_id_sub_ini_features_a >>>>> >>>>> Special section 18. >>>>> >>>>> Norbert >>>>> >>>>> Am 31.03.2014 19:42, schrieb Rod Fitzsimmons Frey: >>>>>> Thanks, Niemand! I'll try that. Where should I look for documentation >>>>> that >>>>>> would tell me features available in rs274ngc? I've looked through the >>>>>> source as best I can but don't know how you found that features=12 >>>>>> parameter. >>>>>> >>>>>> >>>>>> On Mon, Mar 31, 2014 at 11:50 AM, Niemand Sonst <nie...@web.de> >> wrote: >>>>>> >>>>>>> Rod, >>>>>>> >>>>>>> it is easy to access hal pin from ngc code, if you enable features in >>>>>>> your INI [RS274NGC] with FEATURES = 12 (enables INI and Hal reading) >>>>>>> And the needed pins can be created in a python handler file. You >> might >>>>>>> want to check gmoccapy and gmoccapy_tool_sensor.ini for an example, >>>>>>> please see also /macros(change.ngc for INI and Hal checking. >>>>>>> >>>>>>> Norbert >>>>>>> >>>>>>> Am 31.03.2014 17:39, schrieb Rod Fitzsimmons Frey: >>>>>>>> Oh! But it works now! I can move the spindle where I want it, I >> can >>>>>>> setp >>>>>>>> on the pins to release the tool, etc. M6T1 does exactly that with >> this >>>>>>>> code. I just can't signal to EMC that the tool has been changed, >> so on >>>>>>> the >>>>>>>> *next* call to M6 it reports that the current tool is -1. >>>>>>>> >>>>>>>> But I readily accept that even if it is moving, I *shouldn't* do it >>>>> this >>>>>>>> way. I can use the ngc code if necessary, but I couldn't find a >> way to >>>>>>>> access the signals from my spindle... i went this way so I could >> create >>>>>>> the >>>>>>>> pins I needed to detect if the tool was secure, etc. >>>>>>>> >>>>>>>> The documentation seemed to suggest a full toolchanger could be done >>>>> with >>>>>>>> only python, I'm just not grokking how to structure that. >>>>>>>> >>>>>>>> >>>>>>>> On Mon, Mar 31, 2014 at 11:30 AM, Michael Haberler < >> mai...@mah.priv.at >>>>>>>> wrote: >>>>>>>> >>>>>>>>> Am 31.03.2014 um 17:15 schrieb Rod Fitzsimmons Frey < >>>>> rodf...@gmail.com >>>>>>>> : >>>>>>>>>> Thanks! >>>>>>>>>> >>>>>>>>>> .ini file: http://pastebin.com/VsnQFuzt >>>>>>>>>> .hal file: http://pastebin.com/RHEJYqJB >>>>>>>>>> hal file hook (hal_racktoolchange): http://pastebin.com/njTUZAqS >>>>>>>>>> tool change python code: http://pastebin.com/1EZy0Pur >>>>>>>>> this is a normal userland HAL comp, not embedded in the interpreter >>>>>>>>> you write: >>>>>>>>> >>>>>>>>> * # These libraries not found - copied from stdglue.py >>>>>>>>> * import emccanon >>>>>>>>> * from interpreter import * >>>>>>>>> >>>>>>>>> those are available only _within_ the interpreter, you cannot use >> them >>>>>>> in >>>>>>>>> a normal userland HALcomp >>>>>>>>> >>>>>>>>> oh I see what you are trying to do: interpreter.execute("G53 G1 X%i >>>>> Y%i >>>>>>>>> F%i" % (x_pos, y_pos, rack_params["Z_RETRACT_SPEED"])) >>>>>>>>> >>>>>>>>> well this will not work (unfortunately), this is the reason: >>>>>>>>> >>>>>>>>> task and motion can handle one running interpreter at a time only; >> you >>>>>>> try >>>>>>>>> to use a second one from outside - even if it were possible to do >>>>> that, >>>>>>> the >>>>>>>>> commands it generated would be ignored because task wouldnt listen >> to >>>>>>> them, >>>>>>>>> it listens only to the interpreter built into milltask >>>>>>>>> >>>>>>>>> so any sequenced move operations involving the interpreter must >> come >>>>>>> from >>>>>>>>> the running program - that was one of the reasons why remapping >>>>> enables >>>>>>>>> calling on NGC subroutines to do just that >>>>>>>>> >>>>>>>>> sorry, you need to remain with the setup as outlined in the >>>>>>>>> manualtoolchange example; you can replace some ngc by python, but >> you >>>>>>> cant >>>>>>>>> move that code outside the interp into another halcomp >>>>>>>>> >>>>>>>>> >>>>>>>>> - Michael >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>>> Console output: http://pastebin.com/jNHZbxAE >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Mon, Mar 31, 2014 at 10:59 AM, Michael Haberler < >>>>> mai...@mah.priv.at >>>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>>> Am 31.03.2014 um 16:03 schrieb Rod Fitzsimmons Frey < >>>>>>> rodf...@gmail.com >>>>>>>>>> : >>>>>>>>>>>> Hey! After a couple days away I'm back at this. And >> immediately >>>>>>>>>>> stalled! >>>>>>>>>>>> :) >>>>>>>>>>>> >>>>>>>>>>>> stdglue.py returns INTERP_ERROR and other constants that I just >>>>> can't >>>>>>>>>>> seem >>>>>>>>>>>> to locate! When I try to >>>>>>>>>>>> >>>>>>>>>>>> import emccanon >>>>>>>>>>>> from interpreter import * >>>>>>>>>>>> >>>>>>>>>>>> in my own handler code linuxcnc complains that neither of those >>>>>>> modules >>>>>>>>>>> can >>>>>>>>>>>> be found. I've gone through the source looking for the >> constants >>>>> but >>>>>>>>> no >>>>>>>>>>>> luck. >>>>>>>>>>>> >>>>>>>>>>>> Any advice? >>>>>>>>>>> yes: please upload your complete configuration, all related files >>>>> and >>>>>>>>>>> pastebin any error messages >>>>>>>>>>> >>>>>>>>>>> - Michael >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>> On Wed, Mar 26, 2014 at 3:15 PM, Michael Haberler < >>>>>>> mai...@mah.priv.at >>>>>>>>>>>> wrote: >>>>>>>>>>>> >>>>>>>>>>>>>> Am 26.03.2014 um 16:53 schrieb Rod Fitzsimmons Frey < >>>>>>>>> rodf...@gmail.com >>>>>>>>>>>> : >>>>>>>>>>>>>> Hi! I'm merrily trying to remap M6 using the guidelines at >>>>>>>>>>>>>> >>>>>>> >>>>> >> http://linuxcnc.org/docs/devel/html/remap/structure.html#_configuring_iocontrol_with_a_remapped_m6 >>>>>>>>>>>>> . >>>>>>>>>>>>>> I'm trying to use all-python to implement my rack toolchanger. >>>>>>>>>>>>>> >>>>>>>>>>>>>> I have some stuff working - change_epilog in stdglue.py is >>>>> called, >>>>>>> my >>>>>>>>>>>>> code >>>>>>>>>>>>>> executes and moves the spindle to the correct location for the >>>>> new >>>>>>>>>>> tool, >>>>>>>>>>>>>> etc. But change_epilog isn't called. I put a print statement >> as >>>>>>> the >>>>>>>>>>>>> first >>>>>>>>>>>>>> line in both change_prolog and change_epilog - the former is >>>>>>> executed >>>>>>>>>>> but >>>>>>>>>>>>>> the latter is not. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Perhaps as a result of change_epilog not getting called, my >>>>> current >>>>>>>>>>> tool >>>>>>>>>>>>> is >>>>>>>>>>>>>> never changed from -1. (Although that could be something >> else if >>>>>>>>>>>>> there's a >>>>>>>>>>>>>> step I'm missing in my toolchange code.) >>>>>>>>>>>>>> >>>>>>>>>>>>>> My ini file line is >>>>>>>>>>>>>> REMAP=M6 modalgroup=6 prolog=change_prolog >> epilog=change_epilog >>>>>>>>>>>>>> py=toolchange >>>>>>>>>>>>>> >>>>>>>>>>>>>> and the epilog signature (unchanged from src) is >>>>>>>>>>>>>> def change_epilog(self, **words): >>>>>>>>>>>>>> >>>>>>>>>>>>>> Any advice? >>>>>>>>>>>>> yes >>>>>>>>>>>>> >>>>>>>>>>>>> what you are doing is an all-python remapped code >>>>>>>>>>>>> >>>>>>>>>>>>> now the prolog and epilog Python handlers are there to extract >>>>>>>>>>> parameters, >>>>>>>>>>>>> and set the environment for a _ngc_ remap function >>>>>>>>>>>>> >>>>>>>>>>>>> if you are doing all-python you can collapse all code into a >>>>> single >>>>>>>>>>> python >>>>>>>>>>>>> remap body (all code will go into py=toolchange) >>>>>>>>>>>>> >>>>>>>>>>>>> so just drop the prolog and epilog handlers, do it all in >>>>>>> toolchange() >>>>>>>>>>> and >>>>>>>>>>>>> you should be fine >>>>>>>>>>>>> >>>>>>>>>>>>> there was a problem with three python handlers in sequence; not >>>>> sure >>>>>>>>> if >>>>>>>>>>> it >>>>>>>>>>>>> is mentioned in the docs or just the code; since the separate >> pre- >>>>>>> and >>>>>>>>>>> post >>>>>>>>>>>>> handlers dont make sense anyway I avoided the issue by not >> calling >>>>>>>>> them >>>>>>>>>>>>> let me know if you get stuck - just push your config and coce >>>>>>>>> beforehand >>>>>>>>>>>>> so I can have a look >>>>>>>>>>>>> >>>>>>>>>>>>> - Michael >>>>>>>>>>>>>> Thanks! >>>>>>>>>>>>>> Rod >>>>>>>>>>>>>> >>>>>>> >>>>> >> ------------------------------------------------------------------------------ >>>>>>>>>>>>>> Learn Graph Databases - Download FREE O'Reilly Book >>>>>>>>>>>>>> "Graph Databases" is the definitive new guide to graph >> databases >>>>>>> and >>>>>>>>>>>>> their >>>>>>>>>>>>>> applications. Written by three acclaimed leaders in the field, >>>>>>>>>>>>>> this first edition is now available. Download your free book >>>>> today! >>>>>>>>>>>>>> http://p.sf.net/sfu/13534_NeoTech >>>>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>>>> Emc-users mailing list >>>>>>>>>>>>>> Emc-users@lists.sourceforge.net >>>>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/emc-users >>>>>>>>>>>>> >>>>>>> >>>>> >> ------------------------------------------------------------------------------ >>>>>>>>>>>>> Learn Graph Databases - Download FREE O'Reilly Book >>>>>>>>>>>>> "Graph Databases" is the definitive new guide to graph >> databases >>>>> and >>>>>>>>>>> their >>>>>>>>>>>>> applications. Written by three acclaimed leaders in the field, >>>>>>>>>>>>> this first edition is now available. Download your free book >>>>> today! >>>>>>>>>>>>> http://p.sf.net/sfu/13534_NeoTech >>>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>>> Emc-users mailing list >>>>>>>>>>>>> Emc-users@lists.sourceforge.net >>>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/emc-users >>>>>>>>>>>>> >>>>>>> >>>>> >> ------------------------------------------------------------------------------ >>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>> Emc-users mailing list >>>>>>>>>>>> Emc-users@lists.sourceforge.net >>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/emc-users >>>>>>>>>>> >>>>>>>>>>> >>>>>>> >>>>> >> ------------------------------------------------------------------------------ >>>>>>>>>>> _______________________________________________ >>>>>>>>>>> Emc-users mailing list >>>>>>>>>>> Emc-users@lists.sourceforge.net >>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/emc-users >>>>>>>>>>> >>>>>>> >>>>> >> ------------------------------------------------------------------------------ >>>>>>>>>> _______________________________________________ >>>>>>>>>> Emc-users mailing list >>>>>>>>>> Emc-users@lists.sourceforge.net >>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/emc-users >>>>>>>>> >>>>>>>>> >>>>>>> >>>>> >> ------------------------------------------------------------------------------ >>>>>>>>> _______________________________________________ >>>>>>>>> Emc-users mailing list >>>>>>>>> Emc-users@lists.sourceforge.net >>>>>>>>> https://lists.sourceforge.net/lists/listinfo/emc-users >>>>>>>>> >>>>>>> >>>>> >> ------------------------------------------------------------------------------ >>>>>>>> _______________________________________________ >>>>>>>> Emc-users mailing list >>>>>>>> Emc-users@lists.sourceforge.net >>>>>>>> https://lists.sourceforge.net/lists/listinfo/emc-users >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>> >> ------------------------------------------------------------------------------ >>>>>>> _______________________________________________ >>>>>>> Emc-users mailing list >>>>>>> Emc-users@lists.sourceforge.net >>>>>>> https://lists.sourceforge.net/lists/listinfo/emc-users >>>>>>> >>>>>> >>>>> >> ------------------------------------------------------------------------------ >>>>>> _______________________________________________ >>>>>> Emc-users mailing list >>>>>> Emc-users@lists.sourceforge.net >>>>>> https://lists.sourceforge.net/lists/listinfo/emc-users >>>>>> >>>>> >>>>> >>>>> >>>>> >> ------------------------------------------------------------------------------ >>>>> _______________________________________________ >>>>> Emc-users mailing list >>>>> Emc-users@lists.sourceforge.net >>>>> https://lists.sourceforge.net/lists/listinfo/emc-users >>>>> >>>> >> ------------------------------------------------------------------------------ >>>> _______________________________________________ >>>> Emc-users mailing list >>>> Emc-users@lists.sourceforge.net >>>> https://lists.sourceforge.net/lists/listinfo/emc-users >>> >>> >>> >> ------------------------------------------------------------------------------ >>> _______________________________________________ >>> Emc-users mailing list >>> Emc-users@lists.sourceforge.net >>> https://lists.sourceforge.net/lists/listinfo/emc-users >> >> >> >> ------------------------------------------------------------------------------ >> _______________________________________________ >> Emc-users mailing list >> Emc-users@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/emc-users >> > ------------------------------------------------------------------------------ > _______________________________________________ > Emc-users mailing list > Emc-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/emc-users ------------------------------------------------------------------------------ _______________________________________________ Emc-users mailing list Emc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/emc-users