update
This commit is contained in:
@@ -328,10 +328,11 @@ bool Hd_3DCameraLMI_module::sendData(std::vector<cv::Mat>& vecPic, QByteArray &d
|
||||
if (queuePic.empty())
|
||||
{
|
||||
//qDebug() << " [Error] " << " srcImage is null";
|
||||
genBlackImg(vecPic);
|
||||
//genBlackImg(vecPic);
|
||||
m_mutex->unlock();
|
||||
return false;
|
||||
}
|
||||
triggerIng = false;
|
||||
vector<cv::Mat> dstvec = queuePic.dequeue();
|
||||
queuePic.clear();
|
||||
m_mutex->unlock();
|
||||
@@ -380,59 +381,25 @@ bool Hd_3DCameraLMI_module::run()
|
||||
//qDebug() << "[info]" << __FUNCTION__ << " line:" << __LINE__ << " run start" << id;
|
||||
try
|
||||
{
|
||||
//方法1 超时机制
|
||||
// queuePic.clear();
|
||||
//int timeOut = 0;
|
||||
//while (timeOut < 500)//ms
|
||||
//{
|
||||
// m_mutex->lock();
|
||||
// if (queuePic.size() > 0)
|
||||
// {
|
||||
// result = true;
|
||||
// m_mutex->unlock();
|
||||
// return true;
|
||||
// }
|
||||
// m_mutex->unlock();
|
||||
// timeOut ++;
|
||||
// QThread::msleep(1);//修改了睡眠1ms
|
||||
//}
|
||||
|
||||
//方法2 在下一次触发时强制给上一次触发补黑图
|
||||
m_mutex->lock();
|
||||
if (triggerIng == true)//仍然在处理上一次触发
|
||||
{
|
||||
std::vector<cv::Mat>imgs;
|
||||
genBlackImg(imgs);
|
||||
m_mutex->lock();
|
||||
queuePic.enqueue(imgs);
|
||||
m_mutex->unlock();
|
||||
int cnt = 0;
|
||||
while (queuePic.size() > 0 || cnt < 100)
|
||||
while (queuePic.size() > 0 && cnt < 30)
|
||||
{
|
||||
QThread::msleep(1);
|
||||
cnt++;
|
||||
if (cnt > 10)
|
||||
qDebug() << "insert black img 2 long";
|
||||
qDebug() << "insert black img 2 long queueSize"<< queuePic.size();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
triggerIng = true;
|
||||
m_mutex->unlock();
|
||||
}
|
||||
//强制给上一次触发补黑图 结束
|
||||
while (true)
|
||||
{
|
||||
m_mutex->lock();
|
||||
if (queuePic.size() > 0)
|
||||
{
|
||||
result = true;
|
||||
triggerIng = false;
|
||||
m_mutex->unlock();
|
||||
return true;
|
||||
}
|
||||
m_mutex->unlock();
|
||||
QThread::msleep(1);
|
||||
}
|
||||
|
||||
}
|
||||
catch (QString ev)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user