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
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)
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
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))