示例#1
0
文件: dmxl_regs.py 项目: pobot/PyBot
def display_register(intf, dmxlid, reg):
    try:
        value = intf.read_register(dmxlid, reg)
        dmxl.Register.dump(reg, value)
    except RuntimeError as e:
        if dmxlid == dmxl.DynamixelBusInterface.INTERFACE_ID:
            pass  # all registers are not relevant for interfaces
        else:
            cli.print_err(str(e))
            raise
    except Exception as e:
        cli.print_err(str(e))
        raise
示例#2
0
文件: dmxl_regs.py 项目: pobot/PyBot
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)
示例#3
0
文件: dmxl_setid.py 项目: pobot/PyBot
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
示例#4
0
文件: dmxl_regs.py 项目: pobot/PyBot
def write_register(intf, dmxlid, reg, value):
    try:
        intf.write_register(dmxlid, reg, value)
    except Exception as e:  #pylint: disable=W0703
        cli.print_err(str(e))