JointContrallerWidget.py 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import time
  2. from concurrent.futures import ThreadPoolExecutor
  3. from PyQt5.QtCore import QTimer
  4. from PyQt5.QtWidgets import QFrame, QLabel, QPushButton
  5. import Count
  6. class JointControlFrame(QFrame):
  7. threadPool_ = ThreadPoolExecutor(5)
  8. def __init__(self, robot1, robot2):
  9. QFrame.__init__(self)
  10. self.targetId_ = None
  11. self.begId_ = None
  12. self.robot1 = robot1
  13. self.robot2 = robot2
  14. self.robot1_parameters = dict()
  15. self.robot2_parameters = dict()
  16. self.InitUI()
  17. self.setFrameShape(self.StyledPanel)
  18. self.timer_ = QTimer()
  19. self.timer_.timeout.connect(self.Update)
  20. self.timer_.start(100)
  21. def testadjust(self, beg, target):
  22. autoDirect = True
  23. self.threadPool_.submit(self.robot1.Navigatting,
  24. beg, target, autoDirect)
  25. time.sleep(2)
  26. self.threadPool_.submit(self.robot2.Navigatting,
  27. beg, target, autoDirect)
  28. def InitUI(self):
  29. self.btnSend = QPushButton(self)
  30. self.btnSend.setGeometry(80, 5, 100, 40)
  31. self.btnSend.setText("双单车协动")
  32. self.btnSend.clicked.connect(self.btnSendClick)
  33. self.btnCancel = QPushButton(self)
  34. self.btnCancel.setGeometry(200, 5, 100, 40)
  35. self.btnCancel.setText(" 取消")
  36. self.btnCancel.clicked.connect(self.btnCancelClick)
  37. def Update(self):
  38. if self.robot1.IsNavigating() is True or self.robot2.IsNavigating() is True:
  39. if self.btnSend.isEnabled():
  40. self.btnSend.setEnabled(False)
  41. else:
  42. self.btnSend.setEnabled(True)
  43. def btnSendClick(self):
  44. autoDirect = True
  45. self.threadPool_.submit(self.robot1.Navigatting,
  46. self.robot1_parameters["begId_"], self.robot1_parameters["targetId_"], autoDirect, "DoubleAGV")
  47. time.sleep(0.5)
  48. self.threadPool_.submit(self.robot2.Navigatting,
  49. self.robot2_parameters["begId_"], self.robot2_parameters["targetId_"], autoDirect, "DoubleAGV")
  50. def btnCancelClick(self):
  51. self.threadPool_.submit(self.robot1.CancelNavTask)
  52. self.threadPool_.submit(self.robot2.CancelNavTask)
  53. def SetRobot1_BaTID(self, begId_, targetId_):
  54. self.robot1_parameters["begId_"] = begId_
  55. self.robot1_parameters["targetId_"] = targetId_
  56. def SetRobot2_BaTID(self, begId_, targetId_):
  57. self.robot2_parameters["begId_"] = begId_
  58. self.robot2_parameters["targetId_"] = targetId_
  59. class CountFrame(QFrame):
  60. def __init__(self):
  61. QFrame.__init__(self)
  62. self.InitUI()
  63. self.timer_ = QTimer()
  64. self.timer_.timeout.connect(self.UpdateUI)
  65. self.timer_.start(200)
  66. def InitUI(self):
  67. self.static1 = QLabel(self)
  68. self.static1.setText("重载导航次数 : /")
  69. self.static1.setGeometry(5, 5, 200, 30)
  70. self.static2 = QLabel(self)
  71. self.static2.setText("单车导航次数 : /")
  72. self.static2.setGeometry(5, 40, 200, 30)
  73. def UpdateUI(self):
  74. load_str = "重载导航次数 : %d" % (Count.TestCount().loadCount())
  75. single_str = "单车导航次数 : %d" % (Count.TestCount().singleCount())
  76. self.static1.setText(load_str)
  77. self.static2.setText(single_str)