Commit bd7c532f authored by 徐生海's avatar 徐生海

Initial commit

parent 854d2864
......@@ -1043,12 +1043,12 @@ class AppBusinessController(AppBusinessInterface):
logWARNING << message
def waitForChamberAvailable(self, waittimes: int = 30000) -> bool:
isBuzzer : bool = self.isBuzzerAvailable()
isChamberAvailable : bool
isChamberAvailable : bool = False
_waittimes : int = max(30000, waittimes)
isWarning : bool = False
endtime : Qt.QDateTime = Qt.QDateTime.currentDateTime().addMSecs(_waittimes)
warning_string: str = f'片仓没有安装到位 请检查安装好片仓'
try:
if self.system.isEnglishMode():
warning_string = 'The slide cassette is not properly installed. Please verify the installation'
while True:
......@@ -1066,16 +1066,21 @@ class AppBusinessController(AppBusinessInterface):
if Qt.QDateTime.currentDateTime() > endtime:
break
AppTimeLoop.processGlobalEvents(self.system.WarningWaitTimes())
except Exception as e:
AppUtils.print_Exception(e)
return isChamberAvailable
def isChamberAvailable(self) -> bool:
isChamberAvailable: bool = False
try:
if self.hasDetection:
isChamberAvailable = self.detection.get_chamber_status()
if isChamberAvailable != self.status.isChamberAvailable():
self.status.setChamber(isChamberAvailable)
except Exception as e:
AppUtils.print_Exception(e)
return isChamberAvailable
def isBuzzerAvailable(self) -> bool:
......@@ -1806,14 +1811,14 @@ class AppBusinessController(AppBusinessInterface):
listentime: Qt.QDateTime
focusing_times: Qt.QDateTime
isWrong: int = RECODE_FAILURE
position_z: int = focusing_b_z
last_position_z: int = focusing_b_z
# position_z: int = focusing_b_z
# last_position_z: int = focusing_b_z
index: int = 1
maxwaittimes: int = 2000
# maxwaittimes: int = 2000
max_focusing_times: int = 60000
"""开始Z轴定速定焦"""
listentime = Qt.QDateTime.currentDateTime()
begintimes = Qt.QDateTime.currentDateTime()
# listentime = Qt.QDateTime.currentDateTime()
# begintimes = Qt.QDateTime.currentDateTime()
logSCANNING << f"{AppConvert.QDateTimeToString(Qt.QDateTime.currentDateTime())}开始玻片定焦"
"""开始定焦"""
self.microscope.set_z_speed(focusing_z_speed)
......@@ -1837,7 +1842,7 @@ class AppBusinessController(AppBusinessInterface):
item.Level = focusing_status
item.Index = index
index += 1
listentime = Qt.QDateTime.currentDateTime()
# listentime = Qt.QDateTime.currentDateTime()
if isGrabbing:
self.camera.GetFocusingData(item, classifier)
else:
......@@ -1847,7 +1852,7 @@ class AppBusinessController(AppBusinessInterface):
if RECODE_SUCCEED == isWrong:
item.Position_Z = position_z
self.focusing_pool.SendEvent(item)
print(f"一帧定焦数据:{index} {listentime.msecsTo(Qt.QDateTime.currentDateTime())}ms")
# print(f"一帧定焦数据:{index} {listentime.msecsTo(Qt.QDateTime.currentDateTime())}ms")
if index % 5 == 0:
isWrong, Moving, Lower, Upper, Limit, Focus = self.microscope.ZDriverMoveStatus()
if RECODE_SUCCEED == isWrong:
......@@ -1897,13 +1902,13 @@ class AppBusinessController(AppBusinessInterface):
listentime: Qt.QDateTime
focusing_times: Qt.QDateTime
isWrong: int = RECODE_FAILURE
position_z: int = focusing_b_z
last_position_z: int = focusing_b_z
# position_z: int = focusing_b_z
# last_position_z: int = focusing_b_z
index: int = 1
maxwaittimes: int = 10000
max_focusing_times: int = 60000
# max_focusing_times: int = 60000
"""开始Z轴定速定焦"""
begintimes = Qt.QDateTime.currentDateTime()
# begintimes = Qt.QDateTime.currentDateTime()
logSCANNING << f"{AppConvert.QDateTimeToString(Qt.QDateTime.currentDateTime())}开始玻片定焦"
"""开始定焦"""
......@@ -1912,7 +1917,7 @@ class AppBusinessController(AppBusinessInterface):
self.microscope.set_z_range(min(focusing_b_z, focusing_e_z), max(focusing_b_z, focusing_e_z))
self.microscope.POS_CONST_Z(focusing_z_speed)
focusing_times = Qt.QDateTime.currentDateTime()
endtime: Qt.QDateTime = Qt.QDateTime.currentDateTime().addMSecs(maxwaittimes)
# endtime: Qt.QDateTime = Qt.QDateTime.currentDateTime().addMSecs(maxwaittimes)
while True:
if isFilter:
if self.status.focusing_status == ScanStatusLevel.FocusingFinish_Status:
......@@ -1925,18 +1930,19 @@ class AppBusinessController(AppBusinessInterface):
item.Level = focusing_status
item.Index = index
index += 1
listentime = Qt.QDateTime.currentDateTime()
if isGrabbing:
self.camera.GetFocusingData(item, classifier)
else:
self.camera.GetRequestData(item, classifier)
# listentime = Qt.QDateTime.currentDateTime()
# print(f"1一帧定焦数据:{index} {listentime.msecsTo(Qt.QDateTime.currentDateTime())}ms")
isWrong, position_z = self.motion.get_position_z()
"""获取Z轴位置错误 重新移动到目标位置"""
if RECODE_SUCCEED == isWrong:
if isGrabbing:
self.camera.GetFocusingData(item, classifier)
else:
self.camera.GetRequestData(item, classifier)
item.Position_Z = position_z
self.focusing_pool.SendEvent(item)
print(f"2一帧定焦数据:{index} {listentime.msecsTo(Qt.QDateTime.currentDateTime())}ms")
# print(f"2一帧定焦数据:{index} {listentime.msecsTo(Qt.QDateTime.currentDateTime())}ms")
if index % 5 == 0:
isWrong, Moving, Lower, Upper, Limit, Focus = self.microscope.ZDriverMoveStatus()
if RECODE_SUCCEED == isWrong:
......@@ -2345,20 +2351,18 @@ class AppBusinessController(AppBusinessInterface):
"""获取当前位置 如果当前机械臂位置大于安全位置 先回安全位置 再放片"""
self.hitbot.flush_scara_param()
self.hitbot.moveToSafePosition()
# SafeAction: HitBotSafeAction = HitBotSafeAction.getMinPrimaryItem()
# if not isinstance(SafeAction, HitBotModelInterface) or not isinstance(self.hitbot.yPosition, (int, float)):
# self.hitbot.moveToSafePosition()
# elif Float(self.hitbot.yPosition) < float(round(SafeAction.yPosition, 2)):
# self.hitbot.moveToSafePosition()
"""玻片取放片过程中不处理停止业务 只处理暂停业务"""
Action = Actions[0]
if chamber_number == 4 or chamber_number == 9:
self.hitbot.moveToSafePosition(True)
Action.speed = self.system.HitBotSpeed4
elif chamber_number == 5 or chamber_number == 10:
self.hitbot.moveToSafePosition(True)
Action.speed = self.system.HitBotSpeed5
else:
self.hitbot.moveToSafePosition()
isWrong = self.waitForSucceedMoving(Action)
if RECODE_SUCCEED != isWrong:
Actions = HitBotChamberDropAction.getChamberDropActions(chamber_number, row_number)
......
......@@ -154,8 +154,8 @@ class ChamberDropBusiness(Qt.QObject, AppBusinessController):
MinChamberNumber, MaxChamberNumber = self.system.getChamberRange ()
if MinChamberNumber <= chamber_number <= MaxChamberNumber and MinRowNumber <= row_number <= MaxRowNumber:
"""如果当前玻片不能取 直接退出"""
if not ChamberStatusModel.IsPickAvailable(chamber_number, row_number):
return RECODE_FAILURE
# if not ChamberStatusModel.IsPickAvailable(chamber_number, row_number):
# return RECODE_FAILURE
if not self.isValid():
return RECODE_FAILURE
if not self.isAvailable:
......
......@@ -105,6 +105,11 @@ class ChamberPickBusiness(Qt.QObject, AppBusinessController):
if RECODE_SUCCEED != isWrong:
return isWrong
if isSafe:
if chamber_number == 4 or chamber_number == 9:
self.hitbot.moveToSafePosition(True)
elif chamber_number == 5 or chamber_number == 10:
self.hitbot.moveToSafePosition(True)
else:
self.hitbot.moveToSafePosition()
"""处理片仓安装状态"""
while not self.waitForChamberAvailable():
......@@ -116,6 +121,11 @@ class ChamberPickBusiness(Qt.QObject, AppBusinessController):
AppTimeLoop.processEvents(self.system.WarningWaitTimes())
if self.status.waitForExitRunning():
if isSafe:
if chamber_number == 4 or chamber_number == 9:
self.hitbot.moveToSafePosition(True)
elif chamber_number == 5 or chamber_number == 10:
self.hitbot.moveToSafePosition(True)
else:
self.hitbot.moveToSafePosition()
return RECODE_SUCCEED
......@@ -137,6 +147,11 @@ class ChamberPickBusiness(Qt.QObject, AppBusinessController):
isWrong = self.waitForPickWarning(chamber_number, row_number)
if isSafe and RECODE_SUCCEED == isWrong:
if chamber_number == 4 or chamber_number == 9:
self.hitbot.moveToSafePosition(True)
elif chamber_number == 5 or chamber_number == 10:
self.hitbot.moveToSafePosition(True)
else:
self.hitbot.moveToSafePosition()
if isExit:
......
......@@ -497,8 +497,8 @@ class SlideCellFocusingBusiness(Qt.QObject, AppBusinessController):
focusing_z_speed = Focusing.FocusingSpeed
objective_focusing_positions = model.Position_Z #
objective_focusing_difference = abs(model.Position_Z) - FocalDistance
focusing_b_z = max(min(int(objective_focusing_positions - abs(FocalDistance) - abs(focusing_length)), Focus_Upper_Limit), Focus_Lower_Limit)
focusing_e_z = max(min(int(objective_focusing_positions + abs(FocalDistance) + abs(focusing_length)), Focus_Upper_Limit), Focus_Lower_Limit)
focusing_b_z = max(min(int(objective_focusing_positions - abs(FocalDistance) ), Focus_Upper_Limit), Focus_Lower_Limit)
focusing_e_z = max(min(int(objective_focusing_positions + abs(focusing_length) ), Focus_Upper_Limit), Focus_Lower_Limit)
item = model.copy()
item.Index = index
item.Focusing = Focusing
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
#!D:/IDE/anaconda3/envs python
# -*- coding: UTF-8 -*-
"""
@Author: Administrator
@FileName:__init__.py.py\n
@DateTime: 2025/6/18 17:32\n
@Author :xsh
"""
This diff is collapsed.
......@@ -1037,7 +1037,7 @@ class HitBotReader(Qt.QObject, HitBotReaderInterface):
self.manager.GetGripperState()
return self.manager.efg_distance
def moveToSafePosition(self):
def moveToSafePosition(self, isSlow: bool = False):
if not self.IsInitialize():
return False
from AppSettings.AppGlobalStatus import AppStatus
......@@ -1100,8 +1100,14 @@ class HitBotReader(Qt.QObject, HitBotReaderInterface):
self.move(yAction)
if not self._Manager.isLeft():
model = moveAction.copy()
if isSlow:
model.speed = 50
else:
model.speed = 100
self.JMove_LR(model, True)
if isSlow:
moveAction.speed = 50
else:
moveAction.speed = 100
self._Manager.flush_scara_param()
self.move(moveAction)
......@@ -1126,6 +1132,9 @@ class HitBotReader(Qt.QObject, HitBotReaderInterface):
is_r_move = True
if Float(moveAction.xPosition) != float(self._Manager.xPosition):
moveAction.xPosition = Default.xPosition
if isSlow:
moveAction.speed = 50
else:
moveAction.speed = 200
is_move = True
if Float(moveAction.zPosition) != float(self._Manager.zPosition):
......@@ -1133,9 +1142,15 @@ class HitBotReader(Qt.QObject, HitBotReaderInterface):
is_move = True
if not self._Manager.isLeft():
model = moveAction.copy()
if isSlow:
model.speed = 50
else:
model.speed = 100
self.JMove_LR(model, True)
if is_move:
if isSlow:
moveAction.speed = 50
else:
if is_r_move:
moveAction.speed = 200
else:
......@@ -1147,8 +1162,8 @@ class HitBotReader(Qt.QObject, HitBotReaderInterface):
return True
def ToSafePosition(self) -> int:
return RECODE_SUCCEED if self.moveToSafePosition() else RECODE_FAILURE
def ToSafePosition(self, isSlow: bool = False) -> int:
return RECODE_SUCCEED if self.moveToSafePosition(isSlow) else RECODE_FAILURE
def isReach(self, x: float, y: float, z: float, r: float) -> bool:
"""
......
This diff is collapsed.
......@@ -88,6 +88,7 @@ class ModBusPool(Qt.QObject, ModBusPoolInterface, SingletonInterface):
super(ModBusPool, self).deleValue()
self.deleManagers()
def IsOpen(self) -> bool:
handler: ModBusInterface = self.handle
return isinstance(handler, ModBusInterface) and handler.IsOpen()
......
......@@ -227,7 +227,7 @@ class HitBotReaderInterface(AppReaderInterface):
pass
@abstractmethod
def moveToSafePosition(self):
def moveToSafePosition(self, isSlow: bool = False):
pass
@abstractmethod
......
......@@ -31,17 +31,17 @@ if __name__ == "__main__":
if AppUtils.IsServerAvailable(AppConfig.WebConfig.API):
from AppInterfaces.bases import *
from AppUtils.DataBaseDeploy import DataBaseDeploy
from AppSettings.AppStatusSetting import AppStatus
from AppSettings.AppGlobalStatus import AppStatus
from AppSettings.SystemSetting import SystemConfig
from AppSettings.HitBotSetting import HitBotSetting, HitBotConfig
from AppBackEnd.AppEventBusBusiness import *
from AppCore.AppDBModels.DBModels import *
DataBaseDeploy.init()
AppStatus.UpdateFromDBModel()
HitBotConfig.UpdateFromDBModel()
SystemConfig.UpdateFromDBModel()
TrayModel.UpdateModel()
AppStatus.UpdateMaxLocation()
SystemConfig.UpdateMaxLocation()
HitBotConfig.UpdateMaxLocation()
TrayModel.UpdateMaxLocation()
from AppCore.AppManagers.HardWareManager import HardWareManager
from AppCore.Readers import ModBusPool
from AppBackEnd.AppScanningFlow import AppScanningFlow
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment