Hekateros  3.4.3
RoadNarrows Robotics Robot Arm Project
dynacfg.application Class Reference

Configure Hekateros servo. More...

Public Member Functions

def __init__ (self)
 Unit test constructor. More...
 
def printUsageErr (self, emsg)
 Print usage error. More...
 
def printUsage (self)
 Print Command-Line Usage Message. More...
 
def getOptions (self, argv=None, kwargs)
 Get command-line options. More...
 
def run (self, argv=None, kwargs)
 Run application. More...
 

Public Attributes

 m_win
 

Detailed Description

Configure Hekateros servo.

Definition at line 369 of file dynacfg.py.

Constructor & Destructor Documentation

def dynacfg.application.__init__ (   self)

Unit test constructor.

Definition at line 372 of file dynacfg.py.

References dynacfg.application._Argv0, hek_init.application._Argv0, dynacfg.application.m_win, and hek_init.application.m_win.

372  def __init__(self):
373  self._Argv0 = __file__
374  self.m_win = None
375 
def __init__(self)
Unit test constructor.
Definition: dynacfg.py:372

Member Function Documentation

def dynacfg.application.getOptions (   self,
  argv = None,
  kwargs 
)

Get command-line options.

Parameters
argvArgument list. If not None, then overrides command-line arguments.
[out]kwargsKeyword argument list.

Definition at line 412 of file dynacfg.py.

References dynacfg.application._Argv0, hek_init.application._Argv0, dynacfg.application.printUsage(), hek_init.application.printUsage(), dynacfg.application.printUsageErr(), and hek_init.application.printUsageErr().

Referenced by dynacfg.application.run().

412  def getOptions(self, argv=None, **kwargs):
413  if argv is None:
414  argv = sys.argv
415 
416  self._Argv0 = kwargs.get('argv0', __file__)
417 
418  # defaults
419  kwargs['debug'] = 0
420  kwargs['uri'] = '/dev/ttyUSB0'
421  kwargs['baudrate'] = 1000000
422 
423  # parse command-line options
424  try:
425  opts, args = getopt.getopt(argv[1:], "?hu:b:",
426  ['help', 'uri=', 'baudrate='])
427  except getopt.error, msg:
428  raise usage(msg)
429  for opt, optarg in opts:
430  if opt in ('-h', '--help', '-?'):
431  self.printUsage()
432  sys.exit(0)
433  elif opt in ('-u', '--uri'):
434  kwargs['uri'] = optarg
435  elif opt in ('-b', '--baudrate'):
436  kwargs['baudrate'] = optarg
437 
438  if len(args) < 1:
439  self.printUsageErr("No arm product specified.")
440  sys.exit(2)
441  else:
442  kwargs['arm'] = args[0]
443 
444  if len(args) < 2:
445  self.printUsageErr("No servo id specified.")
446  sys.exit(2)
447  else:
448  kwargs['joint'] = args[1]
449 
450  return kwargs
451 
def printUsage(self)
Print Command-Line Usage Message.
Definition: dynacfg.py:387
def getOptions(self, argv=None, kwargs)
Get command-line options.
Definition: dynacfg.py:412
def printUsageErr(self, emsg)
Print usage error.
Definition: dynacfg.py:379
def dynacfg.application.printUsage (   self)

Print Command-Line Usage Message.

Definition at line 387 of file dynacfg.py.

References dynacfg.application._Argv0, and hek_init.application._Argv0.

Referenced by dynacfg.application.getOptions().

387  def printUsage(self):
388  print \
389 """
390 usage: %s [OPTIONS] <arm> <joint>
391  %s --help
392 
393 Options and arguments:
394 -u, --uri=<device_uri> : Dynamixel serial device uri.
395  SYNTAX: [botsense://[hostname][:port]]/device
396  DEFAULT: /dev/ttyUSB0
397 -b, --baudrate=<baud> : Dynamixel serial device baud rate.
398  DEFAULT: 1000000
399 -h, --help : Display this help and exit.
400 
401 <arm> : Hekateros product id. One of: 4S 4L 5S 5L
402 <joint> : Hekateros joint servo. One of:
403  base_rot shoulder_m shoulder_s elbow
404  wrist_pitch wrist_rot gripper
405 """ % (self._Argv0, self._Argv0)
406 
def printUsage(self)
Print Command-Line Usage Message.
Definition: dynacfg.py:387
def dynacfg.application.printUsageErr (   self,
  emsg 
)

Print usage error.

Parameters
emsgError message string.

Definition at line 379 of file dynacfg.py.

References dynacfg.application._Argv0, and hek_init.application._Argv0.

Referenced by dynacfg.application.getOptions(), and dynacfg.application.run().

379  def printUsageErr(self, emsg):
380  if emsg:
381  print "%s: %s" % (self._Argv0, emsg)
382  else:
383  print "%s: error" % (self._Argv0)
384  print "Try '%s --help' for more information." % (self._Argv0)
385 
def printUsageErr(self, emsg)
Print usage error.
Definition: dynacfg.py:379
def dynacfg.application.run (   self,
  argv = None,
  kwargs 
)

Run application.

Parameters
argvOptional argument list to override command-line arguments.
kwargsOptional keyword argument list.

Definition at line 456 of file dynacfg.py.

References dynacfg.application.getOptions(), hek_init.application.getOptions(), dynacfg.application.m_win, hek_init.application.m_win, dynacfg.application.printUsageErr(), and hek_init.application.printUsageErr().

456  def run(self, argv=None, **kwargs):
457 
458  # parse command-line options and arguments
459  kwargs = self.getOptions(argv, **kwargs)
460 
461  if hekDynaScripts.has_key(kwargs['arm']):
462  scripts = hekDynaScripts[kwargs['arm']]
463  else:
464  self.printUsageErr("%s: Unknown hekateros product key." % (kwargs['arm']))
465  return 2
466 
467  if scripts.has_key(kwargs['joint']):
468  cfg_script = scripts[kwargs['joint']]
469  else:
470  self.printUsageErr("%s: Unknown joint." % (kwargs['joint']))
471  return 2
472 
473  # create root
474  root = Tk()
475 
476  # create application window
477  self.m_win = window(master=root, **kwargs)
478 
479  root.protocol('WM_DELETE_WINDOW', root.destroy)
480 
481  # go for it
482  self.m_win.mainloop()
483 
484  return 0
485 
486  fqscript = hekScriptPath + os.path.sep + cfg_script
487 
488  cmd = "dynashell --uri=%s --baudrate=%s --script=%s" % \
489  (kwargs['uri'], kwargs['baudrate'], fqscript)
490 
491  ec = os.system(cmd)
492 
493  return 0
494 
495 
496 # ------------------------------------------------------------------------------
497 # main
498 # ------------------------------------------------------------------------------
def run(self, argv=None, kwargs)
Run application.
Definition: dynacfg.py:456
Window class supporting application.
Definition: dynacfg.py:193
def getOptions(self, argv=None, kwargs)
Get command-line options.
Definition: dynacfg.py:412
def printUsageErr(self, emsg)
Print usage error.
Definition: dynacfg.py:379

The documentation for this class was generated from the following file: