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

Reply via email to