返回教程正文

配套源码

manual_test.py

app/python/manual_test.py
zdt_x57s_can Brick:把一台 ZDT X57S 封装成可复用对象app/python/manual_test.py
Python70 行
  1. # SPDX-License-Identifier: MIT
  2. import argparse
  3. import json
  4. from zdt_x57s_can import ZdtX57SCan
  5. MOTION_CONFIRMATION = "RUN_ZDT_X57S_V1_0"
  6. def parse_args():
  7. """
  8. @description : 解析无运动探测或单电机限时运行测试参数
  9. @param : 无参数
  10. @return : argparse.Namespace参数对象
  11. """
  12. parser = argparse.ArgumentParser(
  13. description="Test the reusable ZDT X57S CAN Brick."
  14. )
  15. action = parser.add_mutually_exclusive_group(required=True)
  16. action.add_argument("--probe", action="store_true")
  17. action.add_argument("--motor-test", action="store_true")
  18. parser.add_argument("--motor-id", type=int, default=1)
  19. parser.add_argument("--rpm", type=int, default=20)
  20. parser.add_argument("--acceleration-level", type=int, default=10)
  21. parser.add_argument("--duration", type=float, default=3.0)
  22. parser.add_argument("--confirm", default="")
  23. return parser.parse_args()
  24. def main():
  25. """
  26. @description : 调用Custom Brick执行探测或带确认口令的单电机限时测试
  27. @param : 无参数
  28. @return : 成功返回0; 参数确认失败返回2
  29. """
  30. args = parse_args()
  31. motor = ZdtX57SCan(args.motor_id)
  32. if args.probe:
  33. print(
  34. json.dumps(
  35. motor.probe(),
  36. ensure_ascii=False,
  37. indent=2,
  38. )
  39. )
  40. return 0
  41. if args.confirm != MOTION_CONFIRMATION:
  42. print(
  43. "拒绝运行:请确认电机已架空并添加 "
  44. f"--confirm {MOTION_CONFIRMATION}"
  45. )
  46. return 2
  47. result = motor.timed_speed_test(
  48. rpm=args.rpm,
  49. acceleration_level=args.acceleration_level,
  50. duration_s=args.duration,
  51. confirmation=args.confirm,
  52. )
  53. print(json.dumps(result, ensure_ascii=False, indent=2))
  54. return 0
  55. if __name__ == "__main__":
  56. raise SystemExit(main())