返回教程正文

配套源码

motor_enable_test.py

app/scripts/motor_enable_test.py
zdt_motor Brick:用 Python 控制一台 ZDT 电机app/scripts/motor_enable_test.py
Python54 行
#!/usr/bin/env python3
"""需要明确确认的电机使能和失能测试。"""

import argparse
import json

from _common import add_motor_arguments, create_bus_and_motor


def parse_args():
    """
    @description         : 解析使能测试参数和确认开关
    @param               : 无参数
    @return              : argparse.Namespace
    """
    parser = argparse.ArgumentParser(description="Explicit ZDT enable/disable test.")
    add_motor_arguments(parser)
    parser.add_argument("--yes", action="store_true")
    return parser.parse_args()


def main():
    """
    @description         : 明确确认后使能、读取状态并在finally中失能
    @param               : 无参数
    @return              : 成功0,拒绝2,失败1
    """
    args = parse_args()
    if not args.yes:
        print("REFUSED: enable changes actuator state; add --yes after checking safety")
        return 2
    print(
        f"Motor ID={args.motor_id} device={args.device} action=enable -> disable",
        flush=True,
    )
    bus, motor = create_bus_and_motor(args, trace=True)
    result = {}
    try:
        with bus:
            try:
                result["enable"] = motor.enable()
                result["status_after_enable"] = motor.get_status()
            finally:
                result["disable"] = motor.disable()
        print(json.dumps(result, ensure_ascii=False, indent=2))
        print("PASS: enable and disable acknowledgements were valid")
        return 0
    except Exception as error:
        print(f"FAIL: {type(error).__name__}: {error}")
        return 1


if __name__ == "__main__":
    raise SystemExit(main())