John,

There are two main functions which a user interface must perform.

1> Issue NML commands.

The best reference for these is in the Developers Handbook:
http://www.linuxcnc.org/docs/devel/EMC2_Developer_Manual.pdf

See chapter II on NML messages. You can also see examples of how these
commands are issued in (among other places) emc/usr_intf/shcom.cc.

2> Display operational information

Most operational information can be accessed through the global variable
(from emc.hh) "emcStatus". It contains a number of classes including "task",
"io", and "motion" which in turn have additional classes, methods, etc. to
access various information including estop state, machine state, position
information, etc.

You can look at emc/usr_intf/emcsh.cc or emc/usr_intf/emcrsh.cc to see how
emcStatus is used. You can also look at emc/nml_intf/emc.cc/hh and
emc/nml_intf/emc_nml.hh for the available classes and methods.


The function of the module "emcsh" is to provide an interface to EMC for
tk/tcl for use with the "tkemc" user interface found in the tcl folder at
the same level as src. I believe emc/usr_intf/axis/extensions/emcmodule.cc
does basically the same thing for Python and the Axis user interface.

If you are writing your user interface in a language other than C/C++ you
will probably need some code of this sort to interface with the intended
environment. 

One alternative, provided it has all of the functionality you require is to
use emcrsh. This uses a socket connetion to interface with EMC, so is both
language independent and has the ability to run the user interface either
locally or remotely without running an X shell or other similar technique on
the remote machine.

To test it, just edit the configuration file core_sim.hal and add the line:
loadusr emcrsh

Then run the TkEMC configuration under "sim". You should now be able to
connect to EMC as follows from a terminal session:

telnet localhost 5007

When it connects, simply type "help" to get a list of available commands.
For implementing a user interface, you just need to have your program issue
and parse these commands the same way they are issued over the telnet
session. Complete doc on emcrsh can be found here:
http://wiki.linuxcnc.org/cgi-bin/emcinfo.pl?Emcrsh

Regards,
Eric

Is there any documentation available on user interface development for EMC2?
I have looked through the various manuals and the code for axis, Tkemc, mini
and keystick all of which give me some idea as to the system calls to EMC2
for the various interfaces.  Is there a complete list of the calls used to
control EMC2 from the user interface available?  I am looking to develop a
user interface for use with a touch screen with no or very limited keyboard
use and no mouse if possible.


------------------------------------------------------------------------------
Register Now & Save for Velocity, the Web Performance & Operations 
Conference from O'Reilly Media. Velocity features a full day of 
expert-led, hands-on workshops and two days of sessions from industry 
leaders in dedicated Performance & Operations tracks. Use code vel09scf 
and Save an extra 15% before 5/3. http://p.sf.net/sfu/velocityconf
_______________________________________________
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users

Reply via email to