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

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";
m_bOpenDev = false; gLogMgr->WriteLogInfo(LogInfo);
//int--->char[]
sprintf_s(m_DevSerialNo, "%d", m_SerialNoVal); m_bOpenDev = false;
if (TLI_BuildDeviceList() == 0) //int--->char[]
{ sprintf_s(m_DevSerialNo, "%d", m_SerialNoVal);
// get device list size if (TLI_BuildDeviceList() == 0)
short n = TLI_GetDeviceListSize(); {
// get LTS serial numbers // get device list size
char serialNos[100]; short n = TLI_GetDeviceListSize();
TLI_GetDeviceListByTypeExt(serialNos, 100, 55); // get LTS serial numbers
// output list of matching devices char serialNos[100];
{ TLI_GetDeviceListByTypeExt(serialNos, 100, 55);
char *searchContext = nullptr; // output list of matching devices
char *p = strtok_s(serialNos, ",", &searchContext); {
while (p != nullptr) char *searchContext = nullptr;
{ char *p = strtok_s(serialNos, ",", &searchContext);
TLI_DeviceInfo deviceInfo; while (p != nullptr)
// get device info from device {
TLI_GetDeviceInfo(p, &deviceInfo); TLI_DeviceInfo deviceInfo;
// get strings from device info structure // get device info from device
char desc[65]; TLI_GetDeviceInfo(p, &deviceInfo);
strncpy_s(desc, deviceInfo.description, 64); // get strings from device info structure
desc[64] = '\0'; char desc[65];
char serialNo[9]; strncpy_s(desc, deviceInfo.description, 64);
strncpy_s(serialNo, deviceInfo.serialNo, 8); desc[64] = '\0';
serialNo[8] = '\0'; char serialNo[9];
// output strncpy_s(serialNo, deviceInfo.serialNo, 8);
p = strtok_s(nullptr, ",", &searchContext); serialNo[8] = '\0';
} // output
} p = strtok_s(nullptr, ",", &searchContext);
if(ISC_Open(m_DevSerialNo) == 0) }
{ }
LogInfo.m_LogMsg = "Succ"; static CCriticalSection sec;
gLogMgr->WriteLogInfo(LogInfo); CSingleLock slck(&sec, true);
return true; if (ISC_Open(m_DevSerialNo) == 0)
} {
} LogInfo.m_LogMsg = "Succ";
//Alarm gLogMgr->WriteLogInfo(LogInfo);
eAlarmType AlarmType = _AlarmType_RotatoDimmer1_InitDevErr; return true;
if(m_LaserDeviceType == _LaserDeviceType_MainLaser2) }
AlarmType = _AlarmType_RotatoDimmer2_InitDevErr; }
RotatoDimmerErrHandle(AlarmType,"Device Initialize Failed"); }
return false; catch (...)
{
//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