init files

This commit is contained in:
rci
2024-09-27 14:31:22 +08:00
parent d04db633b4
commit a2ce7826dc
407 changed files with 123645 additions and 93 deletions
@@ -0,0 +1,345 @@
#include "Hd_CameraModule_readImage.h"
#include <QTextCodec>
//data == "rest_newProductIn"时要结束run;机台报警,取图超时,复位后重新拍的情况。
bool ifBreak = false;
//ifRunning减少ifBreak的判断;"rest_newProductIn"时,Logic_camera_thread框架会结束未处理完的相相机取图
bool ifRunning = false;
QString byteArrayToUnicode(const QByteArray array) {
// state用于保存转换状态,它的成员invalidChars,可用来判断是否转换成功
// 如果转换成功,则值为0,如果值大于0,则说明转换失败
QTextCodec::ConverterState state;
// 先尝试使用utf-8的方式把QByteArray转换成QString
QString text = QTextCodec::codecForName("UTF-8")->toUnicode(array.constData(), array.size(), &state);
// 如果转换时无效字符数量大于0,说明编码格式不对
if (state.invalidChars > 0)
{
// 再尝试使用GBK的方式进行转换,一般就能转换正确(当然也可能是其它格式,但比较少见了)
text = QTextCodec::codecForName("GBK")->toUnicode(array);
}
return text;
}
vector<cv::Mat> srcALLmat;
Hd_CameraModule_readImage* create()
{
qDebug() << __FUNCTION__ << " line:" << __LINE__ << "Hd_CameraModule_readImage create success!" ;
return new Hd_CameraModule_readImage;
}
void destory(Hd_CameraModule_readImage* ptr)
{
srcALLmat.clear();
if (ptr)
{
delete ptr;
ptr = nullptr;
}
qDebug() << __FUNCTION__ << " line:" << __LINE__ << "Hd_CameraModule_readImage destory success!";
}
//类创建
Hd_CameraModule_readImage::Hd_CameraModule_readImage()
{
}
Hd_CameraModule_readImage::~Hd_CameraModule_readImage()
{
localSourceImgsName.clear();
ifFirst = false;
imgIndex = 0;
maxStartmain = 0;
DirPath = "";
qDebug() << __FUNCTION__ << "line:" << __LINE__ << " delete success!";
}
//此函数内存上涨??
//从类中读数据到实例对象。
//每次返回一张图片
bool Hd_CameraModule_readImage::readData(std::vector<cv::Mat>& mat, QByteArray& data)
{
if (localSourceImgsName.size() == 0)
return false;
DWORD start1 = timeGetTime();
int reconnect = 0;
if (imgIndex >= localSourceImgsName.size())
{
//qDebug() << "[info]" << __FUNCTION__ << "line:" << __LINE__ << " sendData finished!!" ;
imgIndex = 0;
//return true;
}
if (!ifFirst)maxStartmain = max(maxStartmain, timeGetTime() - startmain);
else
ifFirst = false;
//qDebug() << "[info]" << __FUNCTION__ << "line:" << __LINE__ << " startmain cutTime::" << timeGetTime() - startmain;
//qDebug() << "[info]" << __FUNCTION__ << "line:" << __LINE__ << " maxStartmain cutTime::" << maxStartmain;
//图片列表
vector<cv::Mat> srcmat;
for (int i = 0; i < 1; i++)
{
//srcmat .push_back( srcALLmat[imgIndex++]);
QString imgName = localSourceImgsName[imgIndex++];
QString qsourcePath = DirPath + "/" + imgName;
//qDebug() << qsourcePath;
QByteArray cdata = qsourcePath.toLocal8Bit();
//img路径列表
string sourceImgPath = string(cdata);
string path = sourceImgPath;
cv::Mat srcmat1;
srcmat1 = cv::imread(sourceImgPath);
srcmat.push_back(srcmat1);
srcmat1.release();
//data = imgName.toLocal8Bit();
//imgName.clear();
//qsourcePath.clear();
//cdata.clear();
}
if (srcmat.empty())
{
//qCritical() << __FUNCTION__ << " line:" <<__LINE__ << " srcImage is null!";
startmain = timeGetTime();
return false;
}
mat = srcmat;
//srcmat.clear();
if (imgIndex == localSourceImgsName.size())
{
//qDebug() << "[info]" << __FUNCTION__ << "line:" << __LINE__ << " sendData finished!!";
//qDebug() << "[info]" << __FUNCTION__ << "line:" << __LINE__ << " sendData cutTime::" << timeGetTime() - start;
qDebug() << "[info]" << __FUNCTION__ << "line:" << __LINE__ << " sendData finished , allTime::" << allTime; //8个相机模块,16M读图17ms;65M读图50ms;
allTime = 0;
}
int acut = timeGetTime() - start1;
//qDebug() << "[info]" << __FUNCTION__ << "line:" << __LINE__ << " sendData cutTime::" << acut;
allTime += acut;
startmain = timeGetTime();
//qDebug() << "[info]" << __FUNCTION__ << "line:"<< __LINE__ << " sendData mat channels:" << mat.channels();
return true;
}
#include <qdir.h>
// 实例对象把数据写入到类。
bool Hd_CameraModule_readImage::writeData(std::vector<cv::Mat> &mat,QByteArray &data)
{
//qDebug() << "[info] "<< __FUNCTION__ << " line:" <<__LINE__ << " start"<<"-------------UserName:"<<data;
Q_UNUSED(mat);
//2024.02.18更新,相机对应的读SN信号时,表示新产品进入,设置初始值
if (data == "rest_newProductIn")
{
////根据实际项目,设置初始值:曝光、增益,ROI区域等
//{
// if (expourseTimeList.size() > 0)
// SetExposureTime(expourseTimeList[0]);
// if (gainList.size() > 0)
// SetGain(gainList[0]);
//}
//getImageNum = 0;
if (ifRunning == true)
{
ifBreak = true;
Sleep(10);
}
return true;
}
else
{
if (data.contains("SetExposureTime"))
{
qDebug() << __FUNCTION__ << " line:" << __LINE__ << "data:" << data;
}
return true;
}
/*else
{
m_flag = false;
expourseTimeList.clear();
gainList.clear();
}*/
//m_flag = false;
/*QVector<QByteArray> vector_data;
decodeInitData(data,vector_data);
if( vector_data.size() != 1 )
{
return false;
};*/
QString lastName = data;
DirPath = "C:/testImg/source"+ lastName[lastName.size()-1];// vector_data[0];// .toStdString(); //读图模块Username,为文件夹路径
start = timeGetTime();
QStringList imgFilters;
imgFilters << "*.jpg" << "*.png" << "*.PNG" << "*.gif" << "*.tif" << "*.jpeg" << "*.bmp";
QDir qdir(DirPath);
localSourceImgsName.clear();
//返回文件名列表
localSourceImgsName = qdir.entryList(imgFilters, QDir::Files | QDir::Readable, QDir::Name);
//qDebug() << "localSourceImgsName.size()::" << localSourceImgsName.size();
qDebug() << __FUNCTION__ << " line:" << __LINE__ << " run start DirPath::" << DirPath;
startmain = timeGetTime();
ifFirst = true;
return true;
}
//数据解析,
bool Hd_CameraModule_readImage::decodeInitData(QByteArray byte, QVector<QByteArray>& vector_data)
{
/*while (!byte.isEmpty())
{
int type = 0;
QByteArray m_type = byte.mid(0, 4);
memcpy((void*)&type, (void*)m_type.data(), 4);
byte.remove(0, 4);
int len = 0;
QByteArray m_len = byte.mid(0, 4);
memcpy((void*)&len, (void*)m_len.data(), 4);
byte.remove(0, 4);
QByteArray mm_data = byte.mid(0, len);
vector_data.append(mm_data);
byte.remove(0, len);
}*/
return true;
}
//递归读取文件夹及子文件夹内所有图片
QStringList findFiles(const QString& startDir, const QStringList& filters) {
QStringList names;
QDir dir(startDir);
const auto files = dir.entryList(filters, QDir::Files);
for (const QString& file : files) {
names += startDir + "/" + file;
}
const auto subdirs = dir.entryList(QDir::AllDirs | QDir::NoDotAndDotDot);
for (const QString& subdir : subdirs) {
names += findFiles(startDir + "/" + subdir, filters);
}
return names;
}
//传入initParas函数,格式为:相机key+参数名1#参数值1#参数值2+参数名2#参数值1...
//初始化
bool Hd_CameraModule_readImage::initParas(QByteArray& initData)
{
QByteArrayList valueList = initData.split('+');
QString lastName = valueList[0];
if (initData.contains("onlySetParameter"))
{
qDebug() << __FUNCTION__ << " line:" << __LINE__ << "onlySetParameter,lastName:" << lastName;
if (valueList.size() > 1)
for (int i = 1; i < valueList.size(); i++)
{
QString valuei = byteArrayToUnicode(valueList[i]);
qDebug() << __FUNCTION__ << " line:" << __LINE__ << "onlySetParameter,lastName:" << lastName<<" ,valuei:"<< valuei;
}
return true;
}
//DirPath = "C:/testImg/source" + lastName[lastName.size() - 1];// vector_data[0];// .toStdString(); //读图模块Username,为文件夹路径
DirPath = "C:/testImg/" + lastName;
start = timeGetTime();
QStringList imgFilters;
imgFilters << "*.jpg" << "*.png" << "*.PNG" << "*.gif" << "*.tif" << "*.jpeg" << "*.bmp";
QDir qdir(DirPath);
localSourceImgsName.clear();
//返回文件名列表
localSourceImgsName = qdir.entryList(imgFilters, QDir::Files | QDir::Readable, QDir::Name);
//qDebug() << "localSourceImgsName.size()::" << localSourceImgsName.size();
qDebug() << __FUNCTION__ << " line:" << __LINE__ << " run start DirPath::" << DirPath;
startmain = timeGetTime();
ifFirst = true;
////加载到内存队列
//for (int i = 0; i < localSourceImgsName.size(); i++)
//{
// QString imgName = localSourceImgsName[i];
// QString qsourcePath = DirPath + "/" + imgName;
// //qDebug() << qsourcePath;
// QByteArray cdata = qsourcePath.toLocal8Bit();
// //img路径列表
// string sourceImgPath = string(cdata);
// string path = sourceImgPath;
// cv::Mat srcmat1;
// srcmat1 = cv::imread(sourceImgPath);
// srcALLmat.push_back(srcmat1);
// srcmat1.release();
//}
//QStringList imgFilters;
//imgFilters << "*.jpg" << "*.png" << "*.PNG" << "*.gif" << "*.tif" << "*.jpeg" << "*.bmp";
//QDir qdir(DirPath);
//localSourceImgsName.clear();
//返回文件名列表
//localSourceImgsName = qdir.entryList(imgFilters, QDir::Files | QDir::Readable, QDir::Name);
//需要递归查找子文件夹内图片的方式
//QStringList localSourceImgsName = findFiles(DirPath, QStringList() << "*.BMP" << "*png");
return true;
}
bool Hd_CameraModule_readImage::run()
{
//qDebug() << __FUNCTION__ << " line:" << __LINE__ << " run start DirPath::" << DirPath;
try
{
int timeout_flag = 0;
/*DWORD start = timeGetTime();
while (true)
{
DWORD ts = timeGetTime() - start;
if ((DWORD)timeout_ms < ts)
{
timeout_flag = 1;
break;
}
if (m_flag)
{
break;
}
Sleep(1);
}
m_flag = false;
if (timeout_flag == 1)
{
qCritical() << __FUNCTION__ << " line:" << __LINE__ << " ---------- run timeout error! ";
}*/
}
catch (QString ev)
{
qDebug() << __FUNCTION__ << " line:" << __LINE__ << " ev:" << ev;
}
return true;
}
//相机连接状态:正常连接或断开
bool Hd_CameraModule_readImage::checkStatus()
{
return moduleStatus;
}