This commit is contained in:
2025-11-10 17:15:21 +08:00
parent 28fcb5fc24
commit 2e0afbe420
28 changed files with 2107 additions and 3609 deletions
@@ -16,6 +16,8 @@ int G_yImageSize = 0; // Number of Y lines.
//int _lastImageSizeHeight[MAX_LJXA_DEVICENUM];
int imgTakeNum = 0, imgTarget = 1;
int imgIndex = 0;
int getImageTimeOut = 3000;
QString lastError;
QMutex* m_mutex = nullptr;
std::mutex bufferMutex;
QQueue< cv::Mat> heightMatS;//高度图
@@ -330,86 +332,35 @@ bool Hd_CameraModule_3DKeyence::writeData(std::vector<cv::Mat> &mat,QByteArray &
//传入initParas函数,格式为:相机key+参数名1#参数值1#参数值2+参数名2#参数值1...
bool Hd_CameraModule_3DKeyence::initParas(QByteArray& initData)
{
QByteArrayList valueList = initData.split('#');
if (valueList.size() < 6) {
qDebug() << "[Error] " << " Hd_CameraModule_HIK initParas fail--params error!参数数量不满足";
lastError = "参数数量不满足";
return false;
}
EthernetConfig.wPortNo = 24691;
QByteArrayList valueList = initData.split('+');
camera_name = valueList[0];
//deviceId = valueList[0].toInt(); //相机头序号
if (valueList.size() > 1)
for (int i = 0; i < valueList.size(); i++)
{
QString valuei = byteArrayToUnicode(valueList[i]);
if (valuei.contains("ip"))
{
//ip#192.168.0.1
QStringList valueL = valuei.split("#");
if (valueL.size() == 2)
{
QStringList valueL1 = valueL[1].split(".");
if (valueL1.size() == 4)
{
EthernetConfig.abyIpAddress[0] = valueL1.at(0).toInt();
EthernetConfig.abyIpAddress[1] = valueL1.at(1).toInt();
EthernetConfig.abyIpAddress[2] = valueL1.at(2).toInt();
EthernetConfig.abyIpAddress[3] = valueL1.at(3).toInt();
}
}
}
if (valuei.contains("deviceId"))
{
QStringList valueL = valuei.split('#');
if (valueL.size() == 2)
{
deviceId = valueL[1].toInt();
}
}
if (valuei.contains("port"))
{
//port#24691
QStringList valueL = valuei.split('#');
if (valueL.size() == 2)
{
EthernetConfig.wPortNo = valueL[1].toInt();
}
}
if (valuei.contains("xImageSize"))
{
//xImageSize#1600
QStringList valueL = valuei.split('#');
if (valueL.size() == 2)
{
xImageSize = valueL[1].toInt();
G_xImageSize = valueL[1].toInt();
}
}
if (valuei.contains("yImageSize"))
{
//yImageSize#2000
QStringList valueL = valuei.split('#');
if (valueL.size() == 2)
{
yImageSize = valueL[1].toInt();
G_yImageSize = valueL[1].toInt();
}
}
if (valuei.contains("y_pitch_um"))
{
//y_pitch_um#40
QStringList valueL = valuei.split('#');
if (valueL.size() == 2)
{
y_pitch_um = valueL[1].toDouble();
}
}
if (valuei.contains("imgTarget"))
{
QStringList valueL = valuei.split('#');
if (valueL.size() == 2)
{
imgTarget = valueL[1].toInt();
}
}
}
camera_name = valueList[0];
auto valueL1 = valueList[0].split('.');
if (valueL1.size() == 4)
{
EthernetConfig.abyIpAddress[0] = valueL1.at(0).toInt();
EthernetConfig.abyIpAddress[1] = valueL1.at(1).toInt();
EthernetConfig.abyIpAddress[2] = valueL1.at(2).toInt();
EthernetConfig.abyIpAddress[3] = valueL1.at(3).toInt();
}
deviceId = valueList[1].toInt();
xImageSize = valueList[2].toInt();
G_xImageSize = valueList[2].toInt();
yImageSize = valueList[3].toInt();
G_yImageSize = valueList[3].toInt();
imgTarget = valueList[4].toInt();
getImageTimeOut = valueList[5].toInt();
yCounts = yImageSize;
qDebug() << __FUNCTION__ << " line:" << __LINE__ << " camera_name:" << camera_name << " paras init is success!";
@@ -527,20 +478,22 @@ bool Hd_CameraModule_3DKeyence::run()
{
while (imgTakeNum != imgTarget)
{
int timeOutCnt = 0;
while (_imageAvailable[deviceId] != 1 && timeOutCnt < 120)
int sleepMs = 10;
int cnt = 0;
int timeoutCnt = getImageTimeOut / sleepMs;
while (_imageAvailable[deviceId] != 1 )
{
timeOutCnt++;
QThread::msleep(10);
if (cnt++ >= timeoutCnt)
{
heightMatS.push_back(cv::Mat(G_yImageSize, G_xImageSize, CV_8UC1, cv::Scalar(0, 0, 0)));
luminanceMatS.push_back(cv::Mat(G_yImageSize, G_xImageSize, CV_8UC1, cv::Scalar(0, 0, 0)));
imgTakeNum++;
qDebug() << "imgGetERROR insert blank img cameraID:" << camera_name;
continue;
}
}
if (timeOutCnt >= 120)
{
heightMatS.push_back(cv::Mat(G_yImageSize, G_xImageSize, CV_8UC1, cv::Scalar(0, 0, 0)));
luminanceMatS.push_back(cv::Mat(G_yImageSize, G_xImageSize, CV_8UC1, cv::Scalar(0, 0, 0)));
imgTakeNum++;
qDebug() << "imgGetERROR insert blank img cameraID:" << camera_name;
continue;
}
std::lock_guard<std::mutex> lock(bufferMutex);
_getParam[deviceId].luminance_enabled = profileInfo_ptr->byLuminanceOutput;
@@ -603,7 +556,7 @@ bool Hd_CameraModule_3DKeyence::run()
_lastImageSizeHeight[deviceId] = 0;
imgTakeNum++;
}
qDebug() << "take2 Finish";
qDebug() << camera_name <<"Finish";
return true;
}
catch (QString ev)