Files
line-laser-modbus/examples/simulated_basic.py
T

44 lines
1.6 KiB
Python

"""模拟环境中的基础读写示例"""
from line_laser_modbus import LineLaserClient, ModeCommand, Pose6D, SerialConfig
from line_laser_modbus.simulator import SimulatedModbusBackend
def main() -> None:
"""演示不连接硬件时如何使用客户端"""
# 模拟后端实现了客户端需要的最小 Modbus 接口
# 这让开发和测试可以在没有串口和控制器的机器上运行
backend = SimulatedModbusBackend()
# 端口名在模拟模式下不会真正打开
# 这里保留 SIM 只是让配置含义更清晰
config = SerialConfig(port="SIM")
# 客户端支持上下文管理器
# 进入 with 时连接后端退出 with 时关闭后端
with LineLaserClient(config, backend=backend) as client:
print("初始状态", client.read_status().name)
# write_mode 会直接写寄存器不做状态机校验
# 如果业务需要遵守协议切换规则可以使用 switch_mode
client.write_mode(ModeCommand.ONLINE_TRACKING)
print("当前模式", client.read_mode().name)
# 目标示教位姿和纠偏量都使用 Pose6D 表达
# 字段顺序固定为 X Y Z A B C
target_pose = Pose6D(100.0, 20.0, 30.0, 0.0, 15.0, 90.0)
correction = Pose6D(1.0, 0.0, -0.5, 0.0, 0.0, 2.0)
client.write_target_pose(target_pose)
client.write_correction(correction)
# 模拟后端提供便捷读取方法
# 真实设备运行时通常由控制器消费这些寄存器
print("模拟目标位姿", backend.target_pose())
print("模拟纠偏量", backend.correction())
if __name__ == "__main__":
main()