def display_register(intf, dmxlid, reg): try: value = intf.read_register(dmxlid, reg) Register.dump(reg, value) except RuntimeError as e: if dmxlid == 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 run_script(args): # pylint: disable=W0621 # process the 'list registers' action which involves no equipment if args.list: list_registers() return try: intf_class = USB2AX if args.xevel else USB2Dynamixel intf = intf_class( port=args.port, baudrate=args.baudrate, timeout=args.timeout, debug=args.debug ) except Exception as e: # pylint: disable=W0703 cli.die(e) else: 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 is not 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 == Register.Id: print(dedent(""" Warning : Writing to register 0x%0.2x will change the servo id. Use dmxl_setid.py script for doing this in a secure way. """) % 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 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))