衰减器初始化加锁,移动到位判断两次

main
wyj 3 months ago
parent f005822e75
commit db61e8feaf

@ -40,55 +40,69 @@ void CRotatoDimmer::RotatoDimmerErrHandle(eAlarmType AlarmType,CString AddInfo,b
//初始化设备 //初始化设备
bool CRotatoDimmer::InitK10CR1Dev() bool CRotatoDimmer::InitK10CR1Dev()
{ {
CLogInfo LogInfo; try
LogInfo.m_ClassName = "CRotatoDimmer"; {
LogInfo.m_FuncName = "InitK10CR1Dev"; CLogInfo LogInfo;
LogInfo.m_LogMsg = "Start"; LogInfo.m_ClassName = "CRotatoDimmer";
gLogMgr->WriteLogInfo(LogInfo); LogInfo.m_FuncName = "InitK10CR1Dev";
LogInfo.m_LogMsg = "Start";
gLogMgr->WriteLogInfo(LogInfo);
m_bOpenDev = false; m_bOpenDev = false;
//int--->char[] //int--->char[]
sprintf_s(m_DevSerialNo, "%d", m_SerialNoVal); sprintf_s(m_DevSerialNo, "%d", m_SerialNoVal);
if (TLI_BuildDeviceList() == 0) if (TLI_BuildDeviceList() == 0)
{ {
// get device list size // get device list size
short n = TLI_GetDeviceListSize(); short n = TLI_GetDeviceListSize();
// get LTS serial numbers // get LTS serial numbers
char serialNos[100]; char serialNos[100];
TLI_GetDeviceListByTypeExt(serialNos, 100, 55); TLI_GetDeviceListByTypeExt(serialNos, 100, 55);
// output list of matching devices // output list of matching devices
{ {
char *searchContext = nullptr; char *searchContext = nullptr;
char *p = strtok_s(serialNos, ",", &searchContext); char *p = strtok_s(serialNos, ",", &searchContext);
while (p != nullptr) while (p != nullptr)
{ {
TLI_DeviceInfo deviceInfo; TLI_DeviceInfo deviceInfo;
// get device info from device // get device info from device
TLI_GetDeviceInfo(p, &deviceInfo); TLI_GetDeviceInfo(p, &deviceInfo);
// get strings from device info structure // get strings from device info structure
char desc[65]; char desc[65];
strncpy_s(desc, deviceInfo.description, 64); strncpy_s(desc, deviceInfo.description, 64);
desc[64] = '\0'; desc[64] = '\0';
char serialNo[9]; char serialNo[9];
strncpy_s(serialNo, deviceInfo.serialNo, 8); strncpy_s(serialNo, deviceInfo.serialNo, 8);
serialNo[8] = '\0'; serialNo[8] = '\0';
// output // output
p = strtok_s(nullptr, ",", &searchContext); p = strtok_s(nullptr, ",", &searchContext);
} }
} }
if(ISC_Open(m_DevSerialNo) == 0) static CCriticalSection sec;
{ CSingleLock slck(&sec, true);
LogInfo.m_LogMsg = "Succ"; if (ISC_Open(m_DevSerialNo) == 0)
gLogMgr->WriteLogInfo(LogInfo); {
return true; LogInfo.m_LogMsg = "Succ";
} gLogMgr->WriteLogInfo(LogInfo);
} return true;
//Alarm }
eAlarmType AlarmType = _AlarmType_RotatoDimmer1_InitDevErr; }
if(m_LaserDeviceType == _LaserDeviceType_MainLaser2) }
AlarmType = _AlarmType_RotatoDimmer2_InitDevErr; catch (...)
RotatoDimmerErrHandle(AlarmType,"Device Initialize Failed"); {
return false; //Alarm
eAlarmType AlarmType = _AlarmType_RotatoDimmer1_InitDevErr;
if (m_LaserDeviceType == _LaserDeviceType_MainLaser2)
AlarmType = _AlarmType_RotatoDimmer2_InitDevErr;
COperateAlarmPar OperateAlarmPar;
OperateAlarmPar.m_OperateAlarmType = _OperateAlarmType_SetAlarmOn;
OperateAlarmPar.m_AlarmType = AlarmType;
OperateAlarmPar.m_AlarmAddInfo = "打开衰减器异常.";
OperateAlarmPar.m_bThowException = false;
gWarningMgr->OperateAlarmState(OperateAlarmPar);
}
return false;
} }
//移动到原点 //移动到原点
void CRotatoDimmer::MoveHome() void CRotatoDimmer::MoveHome()
@ -196,6 +210,7 @@ void CRotatoDimmer::WaitMoveToAngVal(double AngVal)
int CurDelay = 0;//当前的总延时 int CurDelay = 0;//当前的总延时
double PerPos = ISC_GetPosition(m_DevSerialNo);//上一个位置 double PerPos = ISC_GetPosition(m_DevSerialNo);//上一个位置
int NoMoveTimes = 0;//没有移动的判断次数 int NoMoveTimes = 0;//没有移动的判断次数
int MoveEndTimes = 0;//移动到位的判断次数
bool bMoveErr = false; bool bMoveErr = false;
while(1) while(1)
{ {
@ -218,8 +233,15 @@ void CRotatoDimmer::WaitMoveToAngVal(double AngVal)
m_CurAng = PosToAngVal(m_CurPos); m_CurAng = PosToAngVal(m_CurPos);
if(IsTwoDbEqual(AngVal,m_CurAng,0.01))//执行完成 if(IsTwoDbEqual(AngVal,m_CurAng,0.01))//执行完成
{ {
break; MoveEndTimes++;
if(MoveEndTimes>2)
break;
} }
else
{
MoveEndTimes = 0;
}
CurDelay += CheckDelay; CurDelay += CheckDelay;
if(CurDelay>WaitDelay)//检测超时 if(CurDelay>WaitDelay)//检测超时
{ {
@ -569,7 +591,10 @@ void CThorlabsRotatoMotorCtrlMgr::SetLastRotatoDimmerAng(eLaserDeviceType LaserD
LogInfo.m_LogMsg.Format(" Ang=%lf",Ang); LogInfo.m_LogMsg.Format(" Ang=%lf",Ang);
LogInfo.m_LogMsg = gLaser->GetLaserDeviceName(LaserDeviceType) + LogInfo.m_LogMsg; LogInfo.m_LogMsg = gLaser->GetLaserDeviceName(LaserDeviceType) + LogInfo.m_LogMsg;
gLogMgr->WriteLogInfo(LogInfo); gLogMgr->WriteLogInfo(LogInfo);
if (Ang < 0.00001)
{
return;
}
if(LaserDeviceType==_LaserDeviceType_MainLaser1) if(LaserDeviceType==_LaserDeviceType_MainLaser1)
m_Laser1RotatoDimmerAng = Ang; m_Laser1RotatoDimmerAng = Ang;
else else

Loading…
Cancel
Save