Beispiel #1
0
def main(args):
    if args.verbose:
        print(
'''accessing bus interface:
  - port     : %s
  - baudrate : %d
  - timeout  : %.3f s''' % (args.port, args.baudrate, args.timeout))

    try:
        intf = dmxl.DynamixelBusInterface(
                port=args.port, 
                baudrate=args.baudrate,
                timeout=args.timeout
                )
    except Exception as e: 
        cli.die(e)
    
    print('Scanning bus on %s from id=%d to id=%d...' % (args.port,
        args.from_id, args.to_id))
    ids = intf.scan(args.from_id, args.to_id)
    if ids:
        print ('%d servo(s) found with id(s) : %s' % 
            (len(ids), ', '.join([str(_id) for _id in ids]))
        )
    
    else:
        print('No servo found.')
    
    return 0
Beispiel #2
0
def main(args): #pylint: disable=W0621
    # process the 'list registers' action which invovles no equipment
    if args.list:
        list_registers()
        return

    try:
        intf = dmxl.DynamixelBusInterface(
            port=args.port,
            baudrate=args.baudrate,
            timeout=args.timeout,
            debug=args.debug
        )
    except Exception as e:  #pylint: disable=W0703
        cli.die(e)

    if args.intf or intf.ping(args.id):

        if args.intf:
            print('Interface register(s) :')
        else:
            print('Servo id=%s register(s) :' % args.id)

        if args.readall:
            # we want to display all registers
            intf.dump_regs(args.id)
        elif args.read != None:
            # we want to read a specific register
            display_register(intf, args.id, args.read)
        elif args.write:
            # we want to write to a specific register
            reg, value =  WriteStatement.parse(args.write)
            if reg == dmxl.Register.Id:
                print( '''
Warning : Writing to register 0x%0.2x will change the servo id.
        Use dmxl_setid.py script for doing this in a secure way.
                        ''' % dmxl.Register.Id
                )
                return
            write_register(intf, args.id, reg, value)
            display_register(intf, args.id, reg)

    else:
        cli.print_err('no servo found with id=%d' % args.id)
Beispiel #3
0
def main(args):
    try:
        intf = dmxl.DynamixelBusInterface(port=args.port,
                baudrate=args.baudrate, timeout=args.timeout)
    except Exception as e:
        cli.die(e)
    
    if not args.force:
        print('Scanning bus on %s to find connected servos...' % args.port)
        nb_servos = len(intf.scan())

        if nb_servos == 0:
            cli.print_err('no servo found on the bus')
            return 1
            
        if nb_servos > 1:
            cli.print_err('only ONE servo must be connected to the bus (%d servos found)' % nb_servos)
            return 1
        
    intf.write_register(dmxl.DynamixelBusInterface.BROADCASTING_ID, dmxl.Register.Id, args.newid)
    print("Servo id changed to %d." % args.newid)
    return 0
Beispiel #4
0
                        default=300,
                        dest='scan_off_delay'
                        )
    parser.add_argument('--laser_off_delay',
                        help='delay of lasers auto off (secs)',
                        type=int,
                        default=30,
                        dest='laser_off_delay'
                        )

    cli_args = parser.parse_args()

    try:
        _ctrl = BeaconsController(cli_args)
    except Exception as e: #pylint: disable=W0703
        cli.die(e)
    else:
        # Publish the service with Avahi
        svc = avahi_utils.AvahiService(
            svc_name='beacons',
            svc_type='pobot_demo',
            svc_port=cli_args.control_port
        )
        try:
            # starts the beacons controller
            signal.signal(signal.SIGTERM, sigterm_handler)
            svc.publish()
            _ctrl.run()

        finally:
            svc.unpublish()
Beispiel #5
0
    parser.add_argument('-T', '--trace',
                        help="""Trace the communications with the Create and set the display format
                        ('d' = decimal, 'h' = hex)""",
                        choices=['d', 'h'],
                        dest='trace',
                        default=None
                        )

    _args = parser.parse_args()

    demo_name = _args.demo[0]
    if demo_name == '?':
        wrapper = textwrap.TextWrapper(initial_indent='  | ', subsequent_indent='  | ')
        print("%s available demos :\n" % parser.prog)
        for _name, _doc in _all_demos.iteritems():
            txt = '\n'.join(l.strip() for l in _doc.split('\n'))
            print('- %s :\n%s\n' % (_name, wrapper.fill(txt)))
        sys.exit(0)

    try:
        demo = Demo(demo_name, _args)
        demo.run()

    except ValueError as e: #pylint: disable=W0703
        cli.die('demo error : %s' % e)

    except:
        cli.die(traceback.format_exc())