This commit is contained in:
2024-11-02 01:15:48 +08:00
parent 0b75969716
commit 24c135e43c
7 changed files with 15 additions and 46 deletions
@@ -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)
{