Am 02.04.2014 um 02:26 schrieb Rod Fitzsimmons Frey <[email protected]>:
> 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 <[email protected]> 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 <[email protected]>:
>>
>>> Rod,
>>>
>>> Am 31.03.2014 um 21:22 schrieb Rod Fitzsimmons Frey <[email protected]>:
>>>
>>>> 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 <[email protected]> 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 <[email protected]>
>> 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 <
>> [email protected]
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Am 31.03.2014 um 17:15 schrieb Rod Fitzsimmons Frey <
>>>>> [email protected]
>>>>>>>> :
>>>>>>>>>> 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 <
>>>>> [email protected]
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> Am 31.03.2014 um 16:03 schrieb Rod Fitzsimmons Frey <
>>>>>>> [email protected]
>>>>>>>>>> :
>>>>>>>>>>>> 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 <
>>>>>>> [email protected]
>>>>>>>>>>>> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>>> Am 26.03.2014 um 16:53 schrieb Rod Fitzsimmons Frey <
>>>>>>>>> [email protected]
>>>>>>>>>>>> :
>>>>>>>>>>>>>> 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
>>>>>>>>>>>>>> [email protected]
>>>>>>>>>>>>>> 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
>>>>>>>>>>>>> [email protected]
>>>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/emc-users
>>>>>>>>>>>>>
>>>>>>>
>>>>>
>> ------------------------------------------------------------------------------
>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>> Emc-users mailing list
>>>>>>>>>>>> [email protected]
>>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/emc-users
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>
>>>>>
>> ------------------------------------------------------------------------------
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> Emc-users mailing list
>>>>>>>>>>> [email protected]
>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/emc-users
>>>>>>>>>>>
>>>>>>>
>>>>>
>> ------------------------------------------------------------------------------
>>>>>>>>>> _______________________________________________
>>>>>>>>>> Emc-users mailing list
>>>>>>>>>> [email protected]
>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/emc-users
>>>>>>>>>
>>>>>>>>>
>>>>>>>
>>>>>
>> ------------------------------------------------------------------------------
>>>>>>>>> _______________________________________________
>>>>>>>>> Emc-users mailing list
>>>>>>>>> [email protected]
>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/emc-users
>>>>>>>>>
>>>>>>>
>>>>>
>> ------------------------------------------------------------------------------
>>>>>>>> _______________________________________________
>>>>>>>> Emc-users mailing list
>>>>>>>> [email protected]
>>>>>>>> https://lists.sourceforge.net/lists/listinfo/emc-users
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>
>> ------------------------------------------------------------------------------
>>>>>>> _______________________________________________
>>>>>>> Emc-users mailing list
>>>>>>> [email protected]
>>>>>>> https://lists.sourceforge.net/lists/listinfo/emc-users
>>>>>>>
>>>>>>
>>>>>
>> ------------------------------------------------------------------------------
>>>>>> _______________________________________________
>>>>>> Emc-users mailing list
>>>>>> [email protected]
>>>>>> https://lists.sourceforge.net/lists/listinfo/emc-users
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>> ------------------------------------------------------------------------------
>>>>> _______________________________________________
>>>>> Emc-users mailing list
>>>>> [email protected]
>>>>> https://lists.sourceforge.net/lists/listinfo/emc-users
>>>>>
>>>>
>> ------------------------------------------------------------------------------
>>>> _______________________________________________
>>>> Emc-users mailing list
>>>> [email protected]
>>>> https://lists.sourceforge.net/lists/listinfo/emc-users
>>>
>>>
>>>
>> ------------------------------------------------------------------------------
>>> _______________________________________________
>>> Emc-users mailing list
>>> [email protected]
>>> https://lists.sourceforge.net/lists/listinfo/emc-users
>>
>>
>>
>> ------------------------------------------------------------------------------
>> _______________________________________________
>> Emc-users mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/emc-users
>>
> ------------------------------------------------------------------------------
> _______________________________________________
> Emc-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/emc-users
------------------------------------------------------------------------------
_______________________________________________
Emc-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/emc-users