Hi

I've had this idea for a while, as I posted on other cnc lists.
The proposal is to add, probably two lines of code, to echo every character,
as the G-code file is processed, to the serial port, unconditionally.

Using 232, or 232>>485 multidrop, you could have as many devices as you
want, sitting on the line, listening/waiting for their command.
You could even embed things like 'turn on the kettle' within a comment.
Basically all non time-critical things could be controlled with this method,
freeing up valuable I/O.
You could then use a single parport line setup for all or any device to tug
low, as an Ack, using a wait or pause command in G-code, rather than
processing 232 in.

It also allows one to implement any complex command that might be outside
the scope of EMC, without affecting the G-code program.

Of course, each function requires an embedded processor to implement it, but
one pic could easily manage 15 solenoids/pumps/tools.

Roland



On 30/11/2007, Jeff Epler <[EMAIL PROTECTED]> wrote:
>
> On Fri, Nov 30, 2007 at 01:27:11AM -0800, Klemen Dovrtel wrote:
> > Is it possible to send a simple command to rs232
> > within the G code using emc. I would like to control
> > the pneumatic valves and some other simple stuff and i
> > don't want to sped parallel port pins for simple
> > things like this.
>
> Every "serial" device is different, so to do this you will have to write
> your own "HAL component".  If the control does not need to be real-time,
> then it is fairly simple to do this.  One choice is to use Python and
> pyserial.
>
> You will have to install the pyserial package.  If your Ubuntu system is
> on the internet, this can be done through the package manager by
> selecting the package called 'python-serial'.  It is in the "universe"
> repository, which is not enabled by default but you can find
> instructions online for how to enable it.  If you're not online, then
> download this file onto a usb drive then install it by double-clicking:
>
> http://us.archive.ubuntu.com/ubuntu/pool/universe/p/pyserial/python-serial_2.2-1_all.deb
>
> Here is an (untested!) example which should give you a general idea of
> the complexity of such a driver.  This driver controls a hypothetical
> serial-attached device which turns something on when the character "1"
> is received, and turns it off when the character "0" is received:
>
> #!/usr/bin/python
> # -----------------------------------------------------------------------
> # Import the necessary modules
> import hal
> import time
> import pyserial
>
> # Get the serial connection -- first port, 9600,8,N,1
> import serial
> ser = serial.Serial(0)
>
> # Create the HAL component and its pin.  You will use a .hal file to
> # connect whatever bit signal you want to the pin 'example.enable'.
> h = hal.component("example")
> h.newpin("enable", hal.HAL_BIT, hal.HAL_IN)
> h.ready()
>
> # The previous value of the 'enable' pin so that a byte is only sent on
> # the serial port when it is necessary.  This setting, which is not a
> # number, means that the first time the value will always be considered
> # "changed".
> last = None
>
> # (without try/except, the component will print what looks like an error
> # when emc is shut down, and the cleanup below won't happen)
> try:
>     while 1:
>         # As long as the component is running, periodically check
>         # whether the value has changed; if it has, send a command to
>         # set the new value
>         new = h["enable"]
>         if new != old:
>             if new: ser.write("1")
>             else: ser.write("0")
>         old = new
>         time.sleep(.01)
> except KeyboardInterrupt: pass
>
> # Shut down the connected device at exit
> ser.write("0")
> # -----------------------------------------------------------------------
>
> Put the above in a file named "example", make it executable (chmod +x
> example), and put it in a directory on your $PATH.
>
> In your HAL file, hook it up something like this:
>     loadusr -W example
>     net coolant iocontrol.0.coolant-mist => example.enable
>
> Jeff
>
> -------------------------------------------------------------------------
> SF.Net email is sponsored by: The Future of Linux Business White Paper
> from Novell.  From the desktop to the data center, Linux is going
> mainstream.  Let it simplify your IT future.
> http://altfarm.mediaplex.com/ad/ck/8857-50307-18918-4
> _______________________________________________
> Emc-users mailing list
> Emc-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/emc-users
>
-------------------------------------------------------------------------
SF.Net email is sponsored by: The Future of Linux Business White Paper
from Novell.  From the desktop to the data center, Linux is going
mainstream.  Let it simplify your IT future.
http://altfarm.mediaplex.com/ad/ck/8857-50307-18918-4
_______________________________________________
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users

Reply via email to