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

Reply via email to