ManualOperationWidget.py 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. from concurrent.futures import ThreadPoolExecutor
  2. from PyQt5.QtCore import QTimer
  3. from PyQt5.QtWidgets import QFrame
  4. from UI.manual_operation import Ui_manual_operation_widget
  5. from custom_define import ManualOperationType, RobotName
  6. class ManualOperationWidget(QFrame, Ui_manual_operation_widget):
  7. threadPool_ = ThreadPoolExecutor(1)
  8. def __init__(self, robot_dict:dict):
  9. super().__init__()
  10. self.setupUi(self)
  11. self.robot_dict = robot_dict
  12. self.selected_robot_name = None
  13. self.current_operation = ManualOperationType.eReady
  14. self.operation_count = dict()
  15. self.operation_count[ManualOperationType.eReady] = 0
  16. # 所选robot
  17. for robot in self.robot_dict.values():
  18. self.select_box.addItem(robot.name_)
  19. self.select_box.activated.connect(self.SelectRobot)
  20. self.selected_robot_name = self.select_box.currentText()
  21. # 逆/顺时针旋转
  22. self.Counterclockwise_Rotate_btn.pressed.connect(self.Counterclockwise_Rotate)
  23. self.Counterclockwise_Rotate_btn.released.connect(self.Cancel)
  24. self.Clockwise_Rotate_btn.pressed.connect(self.Clockwise_Rotate)
  25. self.Clockwise_Rotate_btn.released.connect(self.Cancel)
  26. # 前后左右平移
  27. self.Forward_Move_btn.pressed.connect(self.Forward_Move)
  28. self.Forward_Move_btn.released.connect(self.Cancel)
  29. self.Backward_Move_btn.pressed.connect(self.Backward_Move)
  30. self.Backward_Move_btn.released.connect(self.Cancel)
  31. self.Left_Move_btn.pressed.connect(self.Left_Move)
  32. self.Left_Move_btn.released.connect(self.Cancel)
  33. self.Right_Move_btn.pressed.connect(self.Right_Move)
  34. self.Right_Move_btn.released.connect(self.Cancel)
  35. # 加减速阶梯
  36. self.step_acc: int = 0
  37. # 启动界面刷新定时器
  38. self.timer = QTimer()
  39. self.timer.timeout.connect(self.DownCmd)
  40. self.timer.start(50)
  41. def SelectRobot(self):
  42. if self.robot_dict[RobotName.strAGVMain].IsMainModeStatu():
  43. self.selected_robot_name = RobotName.strAGVMain
  44. else:
  45. self.selected_robot_name = self.select_box.currentText()
  46. def Counterclockwise_Rotate(self):
  47. self.current_operation = ManualOperationType.eCounterclockwiseRotate
  48. def Clockwise_Rotate(self):
  49. self.current_operation = ManualOperationType.eClockwiseRotate
  50. def Forward_Move(self):
  51. self.current_operation = ManualOperationType.eForwardMove
  52. def Backward_Move(self):
  53. self.current_operation = ManualOperationType.eBackwardMove
  54. def Left_Move(self):
  55. self.current_operation = ManualOperationType.eLeftMove
  56. def Right_Move(self):
  57. self.current_operation = ManualOperationType.eRightMove
  58. def Cancel(self):
  59. self.current_operation = ManualOperationType.eReady
  60. self.operation_count[ManualOperationType.eReady] += 1
  61. def DownCmd(self):
  62. if self.current_operation != ManualOperationType.eReady:
  63. self.robot_dict[self.selected_robot_name].ManualTask(self.current_operation, self.step_acc)
  64. self.step_acc += 1
  65. # self.threadPool_.submit(self.robot_dict[self.selected_robot_name].ManualTask, self.current_operation)
  66. elif self.operation_count[ManualOperationType.eReady] != 0:
  67. # self.threadPool_.shutdown(False)
  68. self.threadPool_.submit(self.robot_dict[self.selected_robot_name].CancelNavTask)
  69. self.current_operation = ManualOperationType.eReady
  70. self.operation_count[ManualOperationType.eReady] = 0
  71. self.step_acc = 0
  72. else:
  73. self.current_operation = ManualOperationType.eReady
  74. self.operation_count[ManualOperationType.eReady] = 0
  75. self.step_acc = 0