Files
Feeding_control_system/controller/main_controller.py

97 lines
3.1 KiB
Python
Raw Normal View History

2025-11-01 18:52:19 +08:00
from re import U
from hardware import transmitter
2025-10-18 18:29:40 +08:00
from view.main_window import MainWindow
2025-11-01 18:52:19 +08:00
import threading
2025-10-31 18:52:31 +08:00
from .camera_controller import CameraController
from .bottom_control_controller import BottomControlController
2025-11-01 18:52:19 +08:00
from hardware.transmitter import TransmitterController
from hardware.relay import RelayController
2025-10-18 18:29:40 +08:00
class MainController:
def __init__(self):
# 主界面
self.main_window = MainWindow()
2025-11-01 18:52:19 +08:00
# 定时器
self.timer = threading.Timer(5.0, self._onTimer)
self.timer.start() # 每5秒触发一次
2025-10-18 18:29:40 +08:00
2025-11-01 18:52:19 +08:00
self.timer2=threading.Timer(1.0, self._onTimer2)
self.timer2.start() # 每秒触发一次
self.angle=10
self.max_angle=60
self.min_angle=10
self.is_add=True
2025-10-18 18:29:40 +08:00
# 初始化子界面
self._initSubViews()
# 初始化子控制器
2025-10-31 18:52:31 +08:00
self._initSubControllers()
2025-11-01 18:52:19 +08:00
2025-10-18 18:29:40 +08:00
# self.__connectSignals()
2025-11-01 18:52:19 +08:00
def _onTimer(self):
# 定时任务逻辑
2025-11-04 09:45:14 +08:00
# 变送器是 192.168.250.63,端口 502
loc_tra=TransmitterController(RelayController(host="192.168.250.63", port=502))
2025-11-01 18:52:19 +08:00
upper_weight=loc_tra.read_data(1)
lower_weight=loc_tra.read_data(2)
if upper_weight is None:
upper_weight=0
if lower_weight is None:
lower_weight=0
self.main_window.hopper_widget.setUpperHopperWeight(upper_weight)
self.main_window.hopper_widget.setLowerHopperWeight(lower_weight)
# 重新启动定时器以实现重复执行
self.timer = threading.Timer(5.0, self._onTimer)
self.timer.start()
pass
def _onTimer2(self):
2025-11-04 09:45:14 +08:00
# print(str(self.angle))
2025-11-01 18:52:19 +08:00
# 定时任务逻辑
if self.is_add:
self.angle+=1
else:
self.angle-=1
if self.angle>self.max_angle:
self.is_add=False
self.angle=self.max_angle
if self.angle<=self.min_angle:
self.is_add=True
self.angle=10
self.main_window.hopper_widget.setLowerHopperOpeningAngle(self.angle)
# 重新启动定时器以实现重复执行
self.timer2 = threading.Timer(1.0, self._onTimer2)
self.timer2.start()
pass
2025-10-18 18:29:40 +08:00
def showMainWindow(self):
2025-11-04 09:45:14 +08:00
# self.main_window.show()
self.main_window.showFullScreen()
2025-11-01 18:52:19 +08:00
self.main_window.dispatch_task_widget.set_task_time("task1","15:44 PM")
self.main_window.dispatch_task_widget.set_task_time("task2","17:37 PM")
self.main_window.segment_task_widget.set_task_time("task1","15:38 PM")
self.main_window.segment_task_widget.set_task_time("task2","17:24 PM")
2025-10-18 18:29:40 +08:00
2025-10-31 18:52:31 +08:00
def _initSubControllers(self):
# 振捣视频控制
self.camera_controller = CameraController(
video_view=self.main_window.vibration_video
)
# 底部控制(按钮)控制器
self.bottom_control_controller = BottomControlController(
bottom_control_widget=self.main_window.bottom_control_widget,
main_window=self.main_window
)
2025-10-18 18:29:40 +08:00
def _initSubViews(self):
2025-10-31 18:52:31 +08:00
pass