def __init__(self, device: str = DEVICE_PORT_DEFAULT, is_init_pose: bool = True): '''机械臂初始化''' # 创建串口对象 try: self.uart = serial.Serial(port=device, baudrate=115200,\ parity=serial.PARITY_NONE, stopbits=1,\ bytesize=8,timeout=0) # 创建串口舵机管理器 self.uservo = UartServoManager(self.uart, srv_num=SERVO_NUM) # InitPose if is_init_pose: self.init_pose() except serial.SerialException as e: logging.error('该设备不存在,请重新填写UART舵机转接板的端口号')
-------------------------------------------------- ''' # 添加uservo.py的系统路径 import sys sys.path.append("../../src") # 导入依赖 import time import serial from uservo import UartServoManager # 参数配置 # 角度定义 SERVO_PORT_NAME = 'COM3' # 舵机串口号 SERVO_BAUDRATE = 115200 # 舵机的波特率 SERVO_ID = 0 # 舵机的ID号 # 初始化串口 uart = serial.Serial(port=SERVO_PORT_NAME, baudrate=SERVO_BAUDRATE,\ parity=serial.PARITY_NONE, stopbits=1,\ bytesize=8,timeout=0) # 初始化舵机管理器 uservo = UartServoManager(uart) # 设置舵机为阻尼模式 uservo.set_damping(SERVO_ID, 200) # 舵机角度查询 while True: angle = uservo.query_servo_angle(SERVO_ID) print("当前舵机角度: {:4.1f} °".format(angle), end='\r') time.sleep(1)
# 角度定义 SERVO_PORT_NAME = 'COM7' # 舵机串口号 SERVO_BAUDRATE = 115200 # 舵机的波特率 SERVO_ID = 0 # 舵机的ID号 # 数据表定义 ADDRESS_SOFTSTART = 49 # 上电缓启动地址位 SOFTSTART_OPEN = 1 # 上电缓启动-开启 SOFTSTART_CLOSE = 0 # 上电缓启动-关闭 # 初始化串口 uart = serial.Serial(port=SERVO_PORT_NAME, baudrate=SERVO_BAUDRATE,\ parity=serial.PARITY_NONE, stopbits=1,\ bytesize=8,timeout=0) # 初始化舵机管理器 uservo = UartServoManager(uart, is_debug=True) # 重置用户数据 uservo.reset_user_data(SERVO_ID) # 舵机扫描 print("开始进行舵机扫描") uservo.scan_servo() servo_list = list(uservo.servos.keys()) print("舵机扫描结束, 舵机列表: {}".format(servo_list)) if SERVO_ID not in servo_list: print("指定的SERVO_ID无效, 请修改舵机ID列表") exit(-1) print("重置舵机内存表: 舵机ID = {}".format(SERVO_ID))
# 导入依赖 import time import struct import serial from uservo import UartServoManager # 参数配置 # 角度定义 SERVO_PORT_NAME = 'COM3' # 舵机串口号 SERVO_BAUDRATE = 115200 # 舵机的波特率 SERVO_ID = 0 # 舵机的ID号 # 数据表定义 ADDRESS_VOLTAGE = 1 # 总线电压值的地址 # 初始化串口 uart = serial.Serial(port=SERVO_PORT_NAME, baudrate=SERVO_BAUDRATE,\ parity=serial.PARITY_NONE, stopbits=1,\ bytesize=8,timeout=0) # 初始化舵机管理器 uservo = UartServoManager(uart, is_scan_servo=True, is_debug=True) # 内存表读取 # 注: 因为每个数据位数据格式各不相同 # 因此读取得到的是字节流 voltage_bytes = uservo.read_data(SERVO_ID, ADDRESS_VOLTAGE) # 数据解析 # 电压的数据格式为uint16_t,单位: mV # 关于struct的用法,请参阅官方手册: https://docs.python.org/3/library/struct.html voltage = struct.unpack('<H', voltage_bytes) print("总线电压 {} mV".format(voltage))