mirror of
https://github.com/dptech-corp/Uni-Lab-OS.git
synced 2025-12-17 04:51:10 +00:00
80 lines
2.4 KiB
Python
80 lines
2.4 KiB
Python
# 使用pyserial进行485的协议通信,端口指定为COM4
|
||
import serial
|
||
from serial.rs485 import RS485Settings
|
||
import traceback
|
||
|
||
|
||
from Consts import Config
|
||
from FakeSerial import FakeSerial
|
||
from base_types.PrPath import PR_PATH
|
||
from Utils import run_commands
|
||
from commands.PositionControl import create_position_commands, create_position_run_command, run_get_command_position, run_get_motor_position, run_set_forward_run
|
||
from commands.Status import run_get_status, run_until_status
|
||
from commands.Warning import run_elimate_warning
|
||
from Grasp import EleGripper
|
||
|
||
|
||
DEVICE_ADDRESS = Config.DEVICE_ADDRESS
|
||
|
||
# 配置串口参数
|
||
if Config.OPEN_DEVICE:
|
||
ser = serial.Serial(
|
||
port='COM11', # 串口号
|
||
baudrate=38400, # 波特率
|
||
bytesize=serial.EIGHTBITS, # 数据位
|
||
parity=serial.PARITY_NONE, # 校验位 N-无校验
|
||
stopbits=serial.STOPBITS_TWO, # 停止位
|
||
timeout=1 # 超时时间
|
||
)
|
||
else:
|
||
ser = FakeSerial()
|
||
|
||
# RS485模式支持(如果需要)
|
||
try:
|
||
ser.rs485_mode = RS485Settings(
|
||
rts_level_for_tx=True,
|
||
rts_level_for_rx=False,
|
||
# delay_before_tx=0.01,
|
||
# delay_before_rx=0.01
|
||
)
|
||
except AttributeError:
|
||
traceback.print_exc()
|
||
print("RS485模式需要支持的硬件和pyserial版本")
|
||
|
||
# run_set_position_zero(ser, DEVICE_ADDRESS)
|
||
|
||
# api.get_running_state(ser, DEVICE_ADDRESS)
|
||
gripper = EleGripper("COM12")
|
||
gripper.init_gripper()
|
||
gripper.wait_for_gripper_init()
|
||
PR = 0
|
||
run_get_status(ser, DEVICE_ADDRESS)
|
||
run_elimate_warning(ser, DEVICE_ADDRESS)
|
||
run_set_forward_run(ser, DEVICE_ADDRESS)
|
||
run_commands(
|
||
ser, 0.1,
|
||
create_position_commands(DEVICE_ADDRESS, PR, PR_PATH.ABS_POS, 20 * 1000, 300), # 41.8cm 21.8cm
|
||
create_position_run_command(DEVICE_ADDRESS, PR),
|
||
)
|
||
if run_until_status(ser, DEVICE_ADDRESS, "路径完成"):
|
||
pass
|
||
gripper.gripper_move(210,127,255)
|
||
gripper.wait_for_gripper()
|
||
gripper.rotate_move_abs(135,10,255)
|
||
gripper.data_reader()
|
||
print(gripper.rot_data)
|
||
run_commands(
|
||
ser, 0.1,
|
||
create_position_commands(DEVICE_ADDRESS, PR, PR_PATH.ABS_POS, 30 * 1000, 300), # 41.8cm 21.8cm
|
||
create_position_run_command(DEVICE_ADDRESS, PR),
|
||
)
|
||
gripper.gripper_move(210,127,255)
|
||
gripper.wait_for_gripper()
|
||
gripper.rotate_move_abs(135,10,255)
|
||
gripper.data_reader()
|
||
|
||
# run_get_command_position(ser, DEVICE_ADDRESS)
|
||
# run_get_motor_position(ser, DEVICE_ADDRESS)
|
||
|
||
# ser.close()
|