1、增加英语翻译

2、增加PLC连接通讯状态
3、修改抠图算法圆心找不到导致找圆偏移大的bug
jizhi
bob.pan 4 years ago
parent d4e83e99fe
commit 29c309b035

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

@ -0,0 +1,574 @@
老算法 准确率低
cv::Mat ImageProcess::findCircleObject(const Mat &src, const Mat& backgroundImg, bool useBackgroundFlag, int nThres /*= 20*/, luffy_base::luffyCircle *pCircle /*= NULL*/)
{
#ifdef MOTO_DETECT//摩轮型号识别抠图算法
if (!useBackgroundFlag)
{
Mat detectImg;
cv::resize(src, detectImg, cv::Size(src.cols / REAIZE, src.rows / REAIZE));
int bBaseX = detectImg.cols;
int bBaseY = detectImg.rows;
equalizeHist(detectImg, detectImg);
detectImg = _EnhanImg_sharpen(detectImg);
EDCircles edcircles(detectImg);
vector<mCircle> EDCircle = edcircles.getCircles();
double maxR = 0;
int nIndex = -1;
for (int i = 0; i < EDCircle.size(); i++)
{
int startX = EDCircle[i].center.x - EDCircle[i].r;
int startY = EDCircle[i].center.y - EDCircle[i].r;
if (startX < 0 || startY < 0)
continue;
if (EDCircle[i].center.x + EDCircle[i].r > bBaseX || EDCircle[i].center.y + EDCircle[i].r > bBaseY)
continue;
if (EDCircle[i].r > maxR)
{
maxR = EDCircle[i].r;
nIndex = i;
}
}
if (nIndex != -1)
{
int startX = EDCircle[nIndex].center.x * REAIZE - EDCircle[nIndex].r * REAIZE;
int startY = EDCircle[nIndex].center.y * REAIZE - EDCircle[nIndex].r* REAIZE;
double radius = EDCircle[nIndex].r;
int hight = 2 * radius * REAIZE;
if (startX > 0 && startY > 0 && hight > 0 \
&& startX < src.cols &&startY < src.rows \
&&hight < src.cols&&hight < src.rows \
&& startX + hight < src.cols && startY + hight < src.rows)
{
Mat cutMat = src(Rect(startX, startY, hight, hight));
if (cutMat.data != NULL)
{
//Mat dst;
//double rate = src.cols*1.0 / ALG_RESIZE_IMAGE_WIDTH;
//const cv::Size cSize = cv::Size(cutMat.cols*1.0 / rate, cutMat.rows*1.0 / rate);
//cv::resize(cutMat, dst, cSize);
if (hight < 50)
return Mat();
cv::Point2d center;
center.x = EDCircle[nIndex].center.x * REAIZE;
center.y = EDCircle[nIndex].center.y * REAIZE;
pCircle->ptCenter = center;
//float fScale = src.cols / ALG_RESIZE_IMAGE_WIDTH;
//pCircle->fRadius = hight*1.0 / fScale;
pCircle->fRadius = radius * REAIZE;
//2021-05-10 增加图像大小判断 对超过900像素的图像进行再一次压缩
if (cutMat.cols >= 900 || cutMat.rows >= 900)
{
Mat newCutImg;
cv::resize(cutMat, newCutImg, cv::Size(cutMat.cols / REAIZE, cutMat.rows / REAIZE));
pCircle->fRadius = pCircle->fRadius / REAIZE;
return newCutImg;
}
return cutMat;
}
}
}
return Mat();
}
else
{
if (src.empty() || backgroundImg.empty() || src.rows < 500) {
return Mat();
}
assert(backgroundImg.type() == CV_8UC1);
Mat imgTmp, imgBinary;
const cv::Size cSize = cv::Size(ALG_RESIZE_IMAGE_WIDTH, floorf(ALG_RESIZE_IMAGE_WIDTH / (float)src.cols*(float)src.rows));
cv::resize(src, imgTmp, cSize);
Mat foregroundImg = getForeImage(imgTmp, backgroundImg);// 0421
cv::resize(foregroundImg, foregroundImg, cv::Size(src.cols / REAIZE, src.rows / REAIZE));
using namespace luffy_base;
luffy_threshold::Threshold(foregroundImg, imgBinary, nThres);//0421
Mat dilatedImgBin;
dilate(imgBinary, dilatedImgBin, Mat::ones(21, 21, CV_32FC1));
erode(dilatedImgBin, imgBinary, Mat::ones(21, 21, CV_32FC1));
openOper(imgBinary, Mat::ones(1, 11, CV_32FC1));
vector<vector<Point>> conts;
cv::findContours(imgBinary, conts, RETR_EXTERNAL, CHAIN_APPROX_NONE);
imgBinary.setTo(0);
for (int i = 0; i < conts.size(); i++) {
const vector<Point> &pt = conts.at(i);
if (pt.size() < 20) {
continue;
}
Rect rt = boundingRect(pt);
if (rt.width < 5 || rt.height < 5) {
continue;
}
drawContours(imgBinary, conts, i, Scalar::all(255), -1);
}
Mat hit; vector<Point> pts;
luffy_hit::firstHit4Circle(imgBinary, hit, pts, Point(cSize.width / 2, cSize.height / 2), 0, cSize.width / 2, 360, luffy_hit::emHitOut2In);
int nMinFitNum = 100;
luffy_imageProc::RansacParam rs(0.01, 3, 150, nMinFitNum, 240);
vector<Point> pts2 = luffy_imageProc::fitModelbyRansac(pts, luffy_imageProc::emModelCircle, &rs);
float fRadius;
Point2f ptCenter;
bool bFind = luffy_imageProc::lsCircleFit(pts2, fRadius, ptCenter);
if (!bFind) {
return Mat();
}
Mat dst;
const int nOffset = 1;
fRadius += nOffset;
Rect rt(ptCenter.x - fRadius + nOffset, ptCenter.y - fRadius + nOffset, 2 * fRadius, 2 * fRadius);
rt &= Rect(0, 0, imgTmp.cols, imgTmp.rows);
imgTmp(rt).copyTo(dst);
static int nCount = cv::getTickCount();
if (pCircle) {
/*float fScale = src.cols / ALG_RESIZE_IMAGE_WIDTH;
Mat matBig = src - backgroundImg;
pCircle->fRadius = fRadius * fScale;
pCircle->ptCenter = Point(ptCenter.x * fScale, ptCenter.y * fScale);
Rect rt(pCircle->ptCenter.x - pCircle->fRadius + nOffset, pCircle->ptCenter.y - pCircle->fRadius + nOffset, 2 * pCircle->fRadius, 2 * pCircle->fRadius);
rt &= Rect(0, 0, matBig.cols, matBig.rows);
src(rt).copyTo(dst);*/
float fScale = src.cols / ALG_RESIZE_IMAGE_WIDTH;
Mat matBig = src - backgroundImg;
pCircle->fRadius = fRadius * fScale;
pCircle->ptCenter = Point(ptCenter.x * fScale, ptCenter.y * fScale);
Mat matBinary;
luffy_threshold::Threshold(matBig, matBinary, nThres);
// add
openOper(matBinary, Mat::ones(3, 3, CV_32FC1));
Mat hit; vector<Point> pts;
luffy_hit::firstHit4Circle(matBinary, hit, pts, pCircle->ptCenter, 0, pCircle->fRadius + 20, 360, luffy_hit::emHitOut2In);//luffy_hit::emHitOut2In
std::map<double, cv::Point> mp;
std::for_each(pts.begin(), pts.end(), [&](Point p) {
double dis = fabs(luffy_math::disofPoints(pCircle->ptCenter, p));
mp[dis] = p;
});
const int bound = 200;
//int startIndex = mp.size() - bound;
std::map<double, cv::Point>::iterator it = mp.begin();
//std::advance(it, startIndex);
std::vector<cv::Point> ppts;
int i = 0;
for (it; it != mp.end(); ++it, ++i)
{
if (i == bound) break;
ppts.push_back(it->second);
}
luffy_imageProc::RansacParam rs(0.01, 5.0, 300, 70, 120);
vector<Point> pts2 = luffy_imageProc::fitModelbyRansac(ppts, luffy_imageProc::emModelCircle, &rs);
float fRadius2;
Point2f ptCenter2;
bool bFind = luffy_imageProc::lsCircleFit(pts2, fRadius2, ptCenter2);
if (bFind) {
pCircle->fRadius = fRadius2;
pCircle->ptCenter = ptCenter2;
Rect rt(ptCenter2.x - fRadius2 + nOffset, ptCenter2.y - fRadius2 + nOffset, 2 * fRadius2, 2 * fRadius2);
if (rt.x < 0 || rt.y < 0 || rt.x + rt.width > matBinary.cols || rt.y + rt.height > matBinary.rows) {
return Mat();
}
rt &= Rect(0, 0, matBinary.cols, matBinary.rows);
src(rt).copyTo(dst);
}
else
{
return Mat();
}
}
return dst;
}
#else//汽轮型号识别抠图算法
/*
2020-06-19 使用三种预防措施找圆
第一阶梯 使用EDCircle算法图像经过2.5倍增亮找圆
如若在第一阶梯没有找到圆(找到的圆不符合条件),进入第二阶梯
第二阶梯 使用EDCircle算法图像改为原图
如若在第二阶梯还没找到圆,进入第三阶梯使用传统找圆算法(结合监测背景图)
第三阶梯不管怎样都会找出一个最佳圆
*/
if (src.empty() || backgroundImg.empty() || src.rows < 500) {
return Mat();
}
bool findFlag = false;
/*第一阶梯找圆*/
assert(backgroundImg.type() == CV_8UC1);
Mat detectImg;
cv::resize(src, detectImg, cv::Size(src.cols / REAIZE, src.rows / REAIZE));
int bBaseX = detectImg.cols;
int bBaseY = detectImg.rows;
Mat upLight_Img = detectImg + 1.5 * detectImg;//20200423 修改 对图像进行叠加,增强目标亮度
blur(upLight_Img, upLight_Img, Size(3, 3));
EDCircles edcircles(upLight_Img);
vector<mCircle> EDCircle = edcircles.getCircles();
double maxR = 0;
int nIndex = -1;
for (int i = 0; i < EDCircle.size(); i++)
{
int startX = EDCircle[i].center.x - EDCircle[i].r;
int startY = EDCircle[i].center.y - EDCircle[i].r;
if (startX < 0 || startY <0)
continue;
if (EDCircle[i].center.x + EDCircle[i].r> bBaseX || EDCircle[i].center.y + EDCircle[i].r>bBaseY)
continue;
if (EDCircle[i].r > maxR)
{
maxR = EDCircle[i].r;
nIndex = i;
}
}
if (nIndex != -1)
{
int startX = EDCircle[nIndex].center.x * REAIZE - EDCircle[nIndex].r * REAIZE;
int startY = EDCircle[nIndex].center.y * REAIZE - EDCircle[nIndex].r* REAIZE;
double centerX = EDCircle[nIndex].center.x * REAIZE;
double centerY = EDCircle[nIndex].center.y * REAIZE;
double radius = EDCircle[nIndex].r;
if (radius < 50)//小于阈值 进行二次查找 radius一般大于100小于50像素的基本是其他小圆
{/*第二阶梯找圆 2020 - 06 - 19 添加 原图查找圆*/
blur(detectImg, detectImg, Size(3,3));
EDCircles edcircles2(detectImg);
vector<mCircle> EDCircle2 = edcircles2.getCircles();
double maxR = 0;
int mIndex = -1;
for (int i = 0; i < EDCircle2.size(); i++)
{
int startX = EDCircle2[i].center.x - EDCircle2[i].r;
int startY = EDCircle2[i].center.y - EDCircle2[i].r;
if (startX < 0 || startY < 0)
continue;
if (EDCircle2[i].center.x + EDCircle2[i].r > bBaseX || EDCircle2[i].center.y + EDCircle2[i].r > bBaseY)
continue;
if (EDCircle2[i].r > maxR)
{
maxR = EDCircle2[i].r;
mIndex = i;
}
}
if (mIndex == -1)
return Mat();
startX = EDCircle2[nIndex].center.x * REAIZE - EDCircle2[nIndex].r * REAIZE;
startY = EDCircle2[nIndex].center.y * REAIZE - EDCircle2[nIndex].r* REAIZE;
centerX = EDCircle2[nIndex].center.x * REAIZE;
centerY = EDCircle2[nIndex].center.y * REAIZE;
radius = EDCircle2[nIndex].r;
if (radius < 50)/*第三阶梯找圆*/
{
if (src.empty() || backgroundImg.empty() || src.rows < 500) {
return Mat();
}
assert(backgroundImg.type() == CV_8UC1);
Mat imgTmp, imgBinary;
const cv::Size cSize = cv::Size(ALG_RESIZE_IMAGE_WIDTH, floorf(ALG_RESIZE_IMAGE_WIDTH / (float)src.cols*(float)src.rows));
cv::resize(src, imgTmp, cSize);
Mat foregroundImg = getForeImage(imgTmp, backgroundImg);// 0421
using namespace luffy_base; //nThres = 90;
luffy_threshold::Threshold(foregroundImg, imgBinary, nThres);//0421
Mat dilatedImgBin;
closeOper(imgBinary, 7);
vector<vector<Point>> conts;
cv::findContours(imgBinary, conts, RETR_EXTERNAL, CHAIN_APPROX_NONE);
imgBinary.setTo(0);
//筛选最大轮廓的作为圆拟合区域
int maxsize = 0;
int nbestIndex = 0;
for (int i = 0; i < conts.size(); i++)
{
if (conts.at(i).size()>maxsize)
{
maxsize = conts.at(i).size();
nbestIndex = i;
}
}
if (conts.size() > 0)
{
drawContours(imgBinary, vector<vector<Point>>(1, conts.at(nbestIndex)), -1, Scalar::all(255), -1);
}
Mat hit; vector<Point> pts;
luffy_hit::firstHit4Circle(imgBinary, hit, pts, Point(cSize.width / 2, cSize.height / 2), 0, cSize.width / 2, 360, luffy_hit::emHitOut2In);
int nMinFitNum = 150;
if (pts.size() < nMinFitNum)//解决检测目标在图像边缘导致的抠图识别问题
{
if (conts.size()>0)
pts = conts.at(nbestIndex);
}
luffy_imageProc::RansacParam rs(0.01, 2, 150, nMinFitNum, 240);
vector<Point> pts2 = luffy_imageProc::fitModelbyRansac(pts, luffy_imageProc::emModelCircle, &rs);
float fRadius;
Point2f ptCenter;
bool bFind = luffy_imageProc::lsCircleFit(pts2, fRadius, ptCenter);
if (!bFind) {
return Mat();
}
Mat dst;
const int nOffset = 1;
fRadius += nOffset;
Rect rt(ptCenter.x - fRadius + nOffset, ptCenter.y - fRadius + nOffset, 2 * fRadius, 2 * fRadius);
rt &= Rect(0, 0, imgTmp.cols, imgTmp.rows);
imgTmp(rt).copyTo(dst);
static int nCount = cv::getTickCount();
if (pCircle) {
float fScale = src.cols / ALG_RESIZE_IMAGE_WIDTH;
Mat matBig = src - backgroundImg;
pCircle->fRadius = fRadius * fScale;
pCircle->ptCenter = Point(ptCenter.x * fScale, ptCenter.y * fScale);
Mat matBinary;
luffy_threshold::Threshold(matBig, matBinary, nThres);
Mat hit; vector<Point> pts;
luffy_hit::firstHit4Circle(matBinary, hit, pts, pCircle->ptCenter, 0, pCircle->fRadius + 10, 360, luffy_hit::emHitOut2In);//luffy_hit::emHitOut2In
luffy_imageProc::RansacParam rs(0.01, 2.5, 200, 150, 220);
vector<Point> pts2 = luffy_imageProc::fitModelbyRansac(pts, luffy_imageProc::emModelCircle, &rs);
float fRadius2;
Point2f ptCenter2;
bool bFind = luffy_imageProc::lsCircleFit(pts2, fRadius2, ptCenter2);
if (bFind) {
pCircle->fRadius = fRadius2;
pCircle->ptCenter = ptCenter2;
Rect rt(ptCenter2.x - fRadius2 + nOffset, ptCenter2.y - fRadius2 + nOffset, 2 * fRadius2, 2 * fRadius2);
if (rt.x < 0 || rt.y < 0 || rt.x + rt.width > matBinary.cols || rt.y + rt.height > matBinary.rows) {
return Mat();
}
rt &= Rect(0, 0, matBinary.cols, matBinary.rows);
src(rt).copyTo(dst);
int nWidth = ((int)((double)dst.cols / fScale / 4)) * 4;
cv::resize(dst, dst, cv::Size(nWidth, nWidth));
}
}
return dst;
}
}
int hight = 2 * radius * REAIZE;
if (startX > 0 && startY > 0 && hight > 0 \
&& startX < src.cols &&startY < src.rows \
&&hight < src.cols&&hight < src.rows \
&& startX+hight<src.cols && startY+hight<src.rows)
{
Mat cutMat = src(Rect(startX, startY, hight, hight));
if (cutMat.data != NULL)
{
if (hight < 50)
return Mat();
Mat dst;
double rate = src.cols*1.0 / ALG_RESIZE_IMAGE_WIDTH;
const cv::Size cSize = cv::Size(cutMat.cols*1.0 / rate, cutMat.rows*1.0 / rate);
cv::resize(cutMat, dst, cSize);
cv::Point2d center;
center.x = centerX;// EDCircle[nIndex].center.x * REAIZE;
center.y = centerY;// EDCircle[nIndex].center.y * REAIZE;
pCircle->ptCenter = center;
pCircle->fRadius = radius * REAIZE / rate;
return dst;
}
}
}
return Mat();
/*以下为旧代码 目前不使用*/
if (src.empty() || backgroundImg.empty() || src.rows < 500) {
return Mat();
}
assert(backgroundImg.type() == CV_8UC1);
Mat imgTmp, imgBinary;
const cv::Size cSize = cv::Size(ALG_RESIZE_IMAGE_WIDTH, floorf(ALG_RESIZE_IMAGE_WIDTH / (float)src.cols*(float)src.rows));
cv::resize(src, imgTmp, cSize);
Mat foregroundImg = getForeImage(imgTmp, backgroundImg);// 0421
using namespace luffy_base; //nThres = 90;
luffy_threshold::Threshold(foregroundImg, imgBinary, nThres);//0421
Mat dilatedImgBin;
closeOper(imgBinary, 7);
//dilate(imgBinary, dilatedImgBin, Mat::ones(7, 7, CV_32FC1));//
//erode(dilatedImgBin, imgBinary, Mat::ones(7, 7, CV_32FC1));
//openOper(imgBinary, Mat::ones(1, 13, CV_32FC1));//集智抠图问题修改 20190329
vector<vector<Point>> conts;
cv::findContours(imgBinary, conts, RETR_EXTERNAL, CHAIN_APPROX_NONE);
imgBinary.setTo(0);
/*
for (int i = 0; i < conts.size(); i++) {
const vector<Point> &pt = conts.at(i);
if (pt.size() < 20) {
continue;
}
Rect rt = boundingRect(pt);
if (rt.width < 5 || rt.height < 5) {
continue;
}
drawContours(imgBinary, conts, i, Scalar::all(255), -1);
}
*/
//筛选最大轮廓的作为圆拟合区域
int maxsize = 0;
int nbestIndex = 0;
for (int i = 0; i < conts.size(); i++)
{
if (conts.at(i).size()>maxsize)
{
maxsize = conts.at(i).size();
nbestIndex = i;
}
}
if (conts.size() > 0)
{
drawContours(imgBinary, vector<vector<Point>>(1,conts.at(nbestIndex)), -1, Scalar::all(255), -1);
}
//openOper(imgBinary, 17);//集智抠图问题修改 20190329
Mat hit; vector<Point> pts;
luffy_hit::firstHit4Circle(imgBinary, hit, pts, Point(cSize.width / 2, cSize.height / 2), 0, cSize.width/ 2, 360, luffy_hit::emHitOut2In);
//luffy_imageProc::RansacParam rs(0.02, 2.5, 70, 100, 220);
//luffy_imageProc::RansacParam rs(0.01, 2, 150, 150, 240);//20190117
int nMinFitNum = 150;
if (pts.size() < nMinFitNum)//解决检测目标在图像边缘导致的抠图识别问题
{
if (conts.size()>0)
pts = conts.at(nbestIndex);
}
luffy_imageProc::RansacParam rs(0.01, 2, 150, nMinFitNum, 240);
vector<Point> pts2 = luffy_imageProc::fitModelbyRansac(pts, luffy_imageProc::emModelCircle, &rs);
#ifdef _DEBUG
Mat imgColor;
cv::cvtColor(imgTmp, imgColor, CV_GRAY2BGR);
for (int i = 0; i < pts.size(); i++) {
imgColor.at<cv::Vec3b>(pts.at(i))[0] = 255;//B
imgColor.at< cv::Vec3b >(pts.at(i))[1] = 0;//G
imgColor.at< cv::Vec3b >(pts.at(i))[2] = 0;//R
}
for (int i = 0; i < pts2.size(); i++) {
imgColor.at<cv::Vec3b>(pts2.at(i))[0] = 0;//B
imgColor.at< cv::Vec3b >(pts2.at(i))[1] = 0;//G
imgColor.at< cv::Vec3b >(pts2.at(i))[2] = 255;//R
}
#endif
float fRadius;
Point2f ptCenter;
bool bFind = luffy_imageProc::lsCircleFit(pts2, fRadius, ptCenter);
if (!bFind) {
return Mat();
}
Mat dst;
const int nOffset = 1;
fRadius += nOffset;
Rect rt(ptCenter.x - fRadius + nOffset, ptCenter.y - fRadius + nOffset, 2 * fRadius, 2 * fRadius);
rt &= Rect(0, 0, imgTmp.cols, imgTmp.rows);
imgTmp(rt).copyTo(dst);
static int nCount = cv::getTickCount();
if (pCircle) {
float fScale = src.cols / ALG_RESIZE_IMAGE_WIDTH;
Mat matBig = src - backgroundImg;
pCircle->fRadius = fRadius * fScale;
pCircle->ptCenter = Point(ptCenter.x * fScale, ptCenter.y * fScale);
Mat matBinary;
luffy_threshold::Threshold(matBig, matBinary, nThres);
Mat hit; vector<Point> pts;
luffy_hit::firstHit4Circle(matBinary, hit, pts, pCircle->ptCenter, 0, pCircle->fRadius + 10, 360, luffy_hit::emHitOut2In);//luffy_hit::emHitOut2In
luffy_imageProc::RansacParam rs(0.01, 2.5, 200, 150, 220);
vector<Point> pts2 = luffy_imageProc::fitModelbyRansac(pts, luffy_imageProc::emModelCircle, &rs);
float fRadius2;
Point2f ptCenter2;
bool bFind = luffy_imageProc::lsCircleFit(pts2, fRadius2, ptCenter2);
if (bFind) {
pCircle->fRadius = fRadius2;
pCircle->ptCenter = ptCenter2;
Rect rt(ptCenter2.x - fRadius2 + nOffset, ptCenter2.y - fRadius2 + nOffset, 2 * fRadius2, 2 * fRadius2);
if (rt.x < 0 || rt.y < 0 || rt.x + rt.width > matBinary.cols || rt.y + rt.height > matBinary.rows ) {
return Mat();
}
rt &= Rect(0, 0, matBinary.cols, matBinary.rows);
src(rt).copyTo(dst);
int nWidth = ((int)((double)dst.cols / fScale / 4)) * 4;
cv::resize(dst, dst, cv::Size(nWidth, nWidth));
}
}
return dst;
#endif
}
// CircleDetector cd;
// cd.setAlgoType(CircleDetector::PeakCircle);
// cd.setEdgeWidth(cParam.CircleEdgeWidth);
//
// if (cParam.CirclePolarity == 0)
// cd.setPolarity(Polarity::Black2White);
// else
// cd.setPolarity(Polarity::White2Black);
//
// cd.setFindBy(FindBy::Best);
// double difRadiusMin = 0;
// double difRadiusMax = (foregroundImg.cols>foregroundImg.rows? foregroundImg.rows/2 : foregroundImg.cols/2)-50;
// cd.setRadii(difRadiusMin, difRadiusMax);
// cd.setACThres(cParam.CircleACThres);
// vector<float> allScores;
// Vec3f bestCircle;
// float bestScore = cd.detectBest(foregroundImg, Point2f(imgTmp.cols/2, imgTmp.rows/2), bestCircle, &allScores);
// if (abs(bestScore) <= FLT_EPSILON || bestCircle == Vec3f::zeros()) {
// return Mat();
// }
//
// Point2f cen(bestCircle[0], bestCircle[1]);
// double r = bestCircle[2];
// Rect rect;
// rect.x = cen.x - r;
// rect.y = cen.y - r;
// if (rect.x < 0)
// rect.x = 0;
// if (rect.y < 0)
// rect.y = 0;
// rect.width = 2 * r;
// rect.height = 2 * r;
// Mat rltMat = src(rect);
// if (pCircle)
// {
// pCircle->fRadius = r;
// pCircle->ptCenter = cen;
// }
// return rltMat;

@ -77,6 +77,8 @@ cv::Mat ImageProcess::findCircle(const Mat &srcImg, Point2f& center, double &rad
{
int startX = EDCircle[i].center.x - EDCircle[i].r;
int startY = EDCircle[i].center.y - EDCircle[i].r;
centerX = EDCircle[i].center.x * REAIZE;
centerY = EDCircle[i].center.y * REAIZE;
if (startX < 0 || startY < 0)
continue;
if (EDCircle[i].center.x + EDCircle[i].r > bBaseX || EDCircle[i].center.y + EDCircle[i].r > bBaseY)
@ -209,6 +211,8 @@ cv::Mat ImageProcess::findCircleByBackground(const Mat &srcImg, const Mat& backg
float centerY = 0;
for (int i = 0; i < EDCircle.size(); i++)
{
centerX = EDCircle[i].center.x * REAIZE;
centerY = EDCircle[i].center.y * REAIZE;
int startX = EDCircle[i].center.x - EDCircle[i].r;
int startY = EDCircle[i].center.y - EDCircle[i].r;
if (startX < 0 || startY < 0)

@ -31,7 +31,6 @@ DetectState::DetectState()
DetectState::~DetectState()
{
//save();
}
void DetectState::init(QString strPath)

@ -70,12 +70,11 @@ bool WheelModel::initComModel(const QString&strBase)
m_pDetectModel = new ImageCompareModel;
}
QString str = strBase + "template\\" + m_strModelID + "\\model.yml";
//QString str = strBase + "模板\\" + m_strModelID + "\\model.yml";
std::string strs = str.toLocal8Bit().toStdString();
bool bFlags = m_pDetectModel->readFromFile(strs/*str.toLatin1().data()*/);
bool bFlags = m_pDetectModel->readFromFile(strs);
if (!bFlags) {
m_pDetectModel->train(m_pTempImage->getImgVector());
bFlags = m_pDetectModel->save2file(strs/*string((const char *)str.toLocal8Bit())*/);
bFlags = m_pDetectModel->save2file(strs);
}
return bFlags;
}
@ -161,15 +160,10 @@ void WheelModel::setRepeatNum(int nValue)
int WheelModel::getRepeatNum() const
{
return m_pDetectModel->getRepeatNum();
//return m_nRotate;
}
ICompareModel * WheelModel::getImageComModel() const
{
// if (!m_pDetectModel)
// {
// m_pDetectModel = new ImageCompareModel;
// }
return m_pDetectModel;
}

@ -2,15 +2,15 @@
#include "InfoFile.h"
#include "..\NetWheel\net4wheel_global.h"
#include "QZkJsonParser.h"
#include "qlibrary.h"
#include "qhostaddress.h"
#include "QDebug"
#include <QLibrary>
#include <QHostAddress>
#include <QDebug>
#include "qipconfigdlg.h"
#include "qdebug.h"
#include "lpGlobalData.h"
#define JSONG_MYSELF_FILE "\\user\\selfdefine.json"
#pragma execution_character_set("utf-8")
//emTypeResultChannel 结果通道 0x16
//emTypeTriger 设置触发延时相关参数
CWheelNet::CWheelNet(QString strRoot)
@ -99,11 +99,8 @@ bool CWheelNet::loadNet()
#endif
if (lib.load()){
_Net4WheelCreate func = (_Net4WheelCreate)lib.resolve("Net4WheelCreate");
//QHostAddress *pAdd = new QHostAddress;
QHostAddress pAdd;// = new QHostAddress;
QHostAddress pAdd;
pAdd.setAddress(m_pIpConfig->m_TcpAddress);
//pAdd->setAddress(m_pIpConfig->m_TcpAddress);
//m_pNet4Wheel = func(*pAdd, m_pIpConfig->m_TcpPort);
m_pNet4Wheel = func(pAdd, m_pIpConfig->m_TcpPort);
connect(m_pNet4Wheel, SIGNAL(RecvDatas(QByteArray)), this, SLOT(DataRecvByte(QByteArray)));
connect(m_pNet4Wheel, SIGNAL(SignalConnect(QVariantMap)), this, SLOT(onConnect(QVariantMap)));
@ -121,7 +118,6 @@ void CWheelNet::sendData(QString strData)
arr.append(strData);
if (m_pIpConfig){
QString strTarget = genAddressPort(m_pIpConfig->m_ClientAddress, QString::number(m_pIpConfig->m_ClientPort));
//m_pNet4Wheel->sendDatas(strTarget, arr);
emit sgSendData2Dv(strTarget, arr);
}
}
@ -129,7 +125,6 @@ void CWheelNet::sendData(QString strData)
bool CWheelNet::sendDataFrame(QString strData)
{
/*调用框架接口 发送网络数据*/
//m_pCallBack
return true;
}
@ -318,6 +313,19 @@ Q_SLOT void CWheelNet::onConnect(QVariantMap vMap)
if (client_State == "Disconnect" || client_State == "close listen ") {
bConnect = false;
}
if (m_type == "client")
{
QString state = vMap.value("client_state").toString();
if (state == "connect")
{
lpGlobalData::instance()->m_plcConnect = true;
}
else {
lpGlobalData::instance()->m_plcConnect = false;
}
}
QString str = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");
str.append(":\n");
str.append("type=" + m_type + " " + "address:" + address + " sourcePort:" + port + " is " + client_State);

@ -38,7 +38,7 @@ Q_SLOT void QCryptokeyUI::onButtonClicked()
QString strKey = ui.textEdit->toPlainText();
if (strKey.isEmpty())
{
QMessageBox::information(this, tr("提示"), "请输入注册码");
QMessageBox::information(this, tr("提示"), tr("请输入注册码"));
return;
}
QString strSerialNo = ui.m_lineEdit_Serial->text();
@ -46,15 +46,15 @@ Q_SLOT void QCryptokeyUI::onButtonClicked()
if (check == false)
{
QMessageBox::information(this, tr("提示"), "注册码不匹配,请重新输入");
QMessageBox::information(this, tr("提示"), tr("注册码不匹配,请重新输入"));
return;
}
else
{
ui.m_label_Active->setText("已激活");
ui.m_label_Active->setText(tr("已激活"));
ui.m_label_Active->setStyleSheet("color:rgb(10, 201, 10)");
emit sgRegisterFinish(true);
QMessageBox::information(this, tr("提示"), "系统激活完成");
QMessageBox::information(this, tr("提示"), tr("系统激活完成"));
}
}
else if (strObj == "pushButton_2")

@ -44,3 +44,11 @@ Q_SLOT void QAddChannelDlg::SlotFunc()
QDialog::close();
}
}
void QAddChannelDlg::changeEvent(QEvent *event)
{
if (event->type() == QEvent::LanguageChange)
{
ui.retranslateUi(this);
}
}

@ -11,8 +11,10 @@ public:
QAddChannelDlg(QWidget *parent = 0);
~QAddChannelDlg();
Q_SLOT void SlotFunc();
QString GetData(QString &Channelname,int &m_value);
QString GetData(QString &Channelname, int &m_value);
protected:
virtual void changeEvent(QEvent *event);
private:
Ui::QAddChannelDlg ui;
QString m_Channelname;

@ -56,4 +56,10 @@ void QAddModel::SetClearData()
ui.wf_model_edit_ply->setText("");
}
void QAddModel::changeEvent(QEvent *event)
{
if (event->type() == QEvent::LanguageChange)
{
ui.retranslateUi(this);
}
}

@ -25,6 +25,8 @@ public:
QMap<QString, QVariant> getData();
void SetClearData();
protected:
virtual void changeEvent(QEvent *event);
};
#endif // QADDMODEL_H

@ -59,3 +59,11 @@ Q_SLOT void QAddTimeDlg::SlotCancle()
{
QDialog::close();
}
void QAddTimeDlg::changeEvent(QEvent *event)
{
if (event->type() == QEvent::LanguageChange)
{
ui.retranslateUi(this);
}
}

@ -13,8 +13,11 @@ public:
~QAddTimeDlg();
Q_SLOT void SlotOK();
Q_SLOT void SlotCancle();
void SetInfo(TimeStruct m_timeStruct, int model = 0);
void GetInfo(TimeStruct &m_timeStruct);
protected:
virtual void changeEvent(QEvent *event);
private:
Ui::QAddTimeDlg ui;
};

@ -137,3 +137,11 @@ void QChannelManager::updateShow()
}
}
}
void QChannelManager::changeEvent(QEvent *event)
{
if (event->type() == QEvent::LanguageChange)
{
ui.retranslateUi(this);
}
}

@ -16,6 +16,8 @@ public:
Q_SLOT void SlotcellClicked(const QModelIndex & index);
Q_SLOT void onOkMody();
void updateShow();
protected:
virtual void changeEvent(QEvent *event);
private:
Ui::QChannelManager ui;
class QTableView *channelMgr_tableView;

@ -33,3 +33,10 @@ Q_SLOT void QDia2ThSetting::onChangeValue()
infobox.exec();
emit sgSavePara();
}
void QDia2ThSetting::changeEvent(QEvent *event)
{
if (event->type() == QEvent::LanguageChange)
{
ui.retranslateUi(this);
}
}

@ -13,6 +13,8 @@ public:
~QDia2ThSetting();
void SetValue(float *m_B, float *m_K);
Q_SLOT void onChangeValue();
protected:
virtual void changeEvent(QEvent *event);
signals:
void sgSavePara();
private:

@ -71,3 +71,11 @@ Q_SLOT void QIPConfigDlg::SlotOK()
{
QDialog::accept();
}
void QIPConfigDlg::changeEvent(QEvent *event)
{
if (event->type() == QEvent::LanguageChange)
{
ui.retranslateUi(this);
}
}

@ -30,6 +30,8 @@ public:
Q_SLOT void SlotCloseServer();
Q_SLOT void SlotOpenServer();
Q_SLOT void SlotOK();
protected:
virtual void changeEvent(QEvent *event);
private:
Ui::QIPConfigDlg ui;
signals:

@ -31,3 +31,11 @@ void QShowImg::setPicPath(QString m_filePath /*= QString()*/)
ui.label->setPixmap(m_pix.scaled(nwidth,370));
}
}
void QShowImg::changeEvent(QEvent *event)
{
if (event->type() == QEvent::LanguageChange)
{
ui.retranslateUi(this);
}
}

@ -12,7 +12,10 @@ public:
QShowImg(QWidget *parent = 0);
~QShowImg();
Q_SLOT void setPicPath(QString m_filePath);
Q_SLOT void showImg();
protected:
virtual void changeEvent(QEvent *event);
signals:
void sgChangeImg();
private:

@ -50,3 +50,12 @@ Q_SLOT void QWorkItemDlg::onOk()
QDialog::accept();
}
void QWorkItemDlg::changeEvent(QEvent *event)
{
if (event->type() == QEvent::LanguageChange)
{
ui.retranslateUi(this);
}
}

@ -19,7 +19,8 @@ public:
};
private:
Q_SLOT void onOk();
protected:
virtual void changeEvent(QEvent *event);
private:
Ui::QWorkItemUI ui;

@ -683,4 +683,10 @@ void QWorkMgrUI::UpdateTabView(QString strName, TypeSelect enTymodel)
}
}
void QWorkMgrUI::changeEvent(QEvent *event)
{
if (event->type() == QEvent::LanguageChange)
{
ui.retranslateUi(this);
}
}

@ -47,6 +47,8 @@ public:
void UpTableModel();
void UpdateTableView(QString str);
void UpdateTabView(QString strName, TypeSelect enTymodel);
protected:
virtual void changeEvent(QEvent *event);
protected:
virtual void closeEvent(QCloseEvent *event);
signals:

@ -0,0 +1,897 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="en_US">
<context>
<name>QReportWidget</name>
<message>
<location filename="qreportwidget.cpp" line="50"/>
<location filename="qreportwidget.cpp" line="95"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qreportwidget.cpp" line="51"/>
<location filename="qreportwidget.cpp" line="97"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qreportwidget.cpp" line="93"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qreportwidget.cpp" line="132"/>
<source></source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QTimeDlg</name>
<message>
<location filename="qtimedlg.ui" line="14"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="63"/>
<location filename="qtimedlg.ui" line="400"/>
<source>0</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="68"/>
<location filename="qtimedlg.ui" line="405"/>
<source>1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="73"/>
<location filename="qtimedlg.ui" line="410"/>
<source>2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="78"/>
<location filename="qtimedlg.ui" line="415"/>
<source>3</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="83"/>
<location filename="qtimedlg.ui" line="420"/>
<source>4</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="88"/>
<location filename="qtimedlg.ui" line="425"/>
<source>5</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="93"/>
<location filename="qtimedlg.ui" line="430"/>
<source>6</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="98"/>
<location filename="qtimedlg.ui" line="435"/>
<source>7</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="103"/>
<location filename="qtimedlg.ui" line="440"/>
<source>8</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="108"/>
<location filename="qtimedlg.ui" line="445"/>
<source>9</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="113"/>
<location filename="qtimedlg.ui" line="450"/>
<source>10</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="118"/>
<location filename="qtimedlg.ui" line="455"/>
<source>11</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="123"/>
<location filename="qtimedlg.ui" line="460"/>
<source>12</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="128"/>
<location filename="qtimedlg.ui" line="465"/>
<source>13</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="133"/>
<location filename="qtimedlg.ui" line="470"/>
<source>14</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="138"/>
<location filename="qtimedlg.ui" line="475"/>
<source>15</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="143"/>
<location filename="qtimedlg.ui" line="480"/>
<source>16</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="148"/>
<location filename="qtimedlg.ui" line="485"/>
<source>17</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="153"/>
<location filename="qtimedlg.ui" line="490"/>
<source>18</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="158"/>
<location filename="qtimedlg.ui" line="495"/>
<source>19</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="163"/>
<location filename="qtimedlg.ui" line="500"/>
<source>20</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="168"/>
<location filename="qtimedlg.ui" line="505"/>
<source>21</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="173"/>
<location filename="qtimedlg.ui" line="510"/>
<source>22</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="178"/>
<location filename="qtimedlg.ui" line="515"/>
<source>23</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="183"/>
<source>24</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="188"/>
<source>25</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="193"/>
<source>26</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="198"/>
<source>27</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="203"/>
<source>28</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="208"/>
<source>29</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="213"/>
<source>30</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="218"/>
<source>31</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="223"/>
<source>32</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="228"/>
<source>33</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="233"/>
<source>34</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="238"/>
<source>35</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="243"/>
<source>36</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="248"/>
<source>37</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="253"/>
<source>38</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="258"/>
<source>39</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="263"/>
<source>40</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="268"/>
<source>41</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="273"/>
<source>42</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="278"/>
<source>43</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="283"/>
<source>44</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="288"/>
<source>45</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="293"/>
<source>46</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="298"/>
<source>47</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="303"/>
<source>48</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="308"/>
<source>49</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="313"/>
<source>50</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="318"/>
<source>51</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="323"/>
<source>52</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="328"/>
<source>53</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="333"/>
<source>54</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="338"/>
<source>55</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="343"/>
<source>56</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="348"/>
<source>57</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="353"/>
<source>58</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="358"/>
<source>59</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="526"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="536"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="576"/>
<source>2017/00/00 00:00</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="602"/>
<source></source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>TestWidget</name>
<message>
<location filename="testwidget.ui" line="14"/>
<source>TestWidget</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>lpReport</name>
<message>
<location filename="lpReport.cpp" line="97"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="173"/>
<location filename="lpReport.cpp" line="194"/>
<location filename="lpReport.cpp" line="775"/>
<location filename="lpReport.cpp" line="780"/>
<location filename="lpReport.cpp" line="858"/>
<location filename="lpReport.cpp" line="1039"/>
<location filename="lpReport.cpp" line="1138"/>
<source>%1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="174"/>
<location filename="lpReport.cpp" line="193"/>
<location filename="lpReport.cpp" line="719"/>
<location filename="lpReport.cpp" line="751"/>
<location filename="lpReport.cpp" line="776"/>
<location filename="lpReport.cpp" line="781"/>
<location filename="lpReport.cpp" line="857"/>
<location filename="lpReport.cpp" line="912"/>
<location filename="lpReport.cpp" line="944"/>
<location filename="lpReport.cpp" line="1111"/>
<source>%1 %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="293"/>
<location filename="lpReport.cpp" line="299"/>
<location filename="lpReport.cpp" line="309"/>
<location filename="lpReport.cpp" line="334"/>
<location filename="lpReport.cpp" line="343"/>
<location filename="lpReport.cpp" line="374"/>
<location filename="lpReport.cpp" line="415"/>
<location filename="lpReport.cpp" line="422"/>
<location filename="lpReport.cpp" line="427"/>
<location filename="lpReport.cpp" line="456"/>
<location filename="lpReport.cpp" line="477"/>
<location filename="lpReport.cpp" line="483"/>
<location filename="lpReport.cpp" line="493"/>
<location filename="lpReport.cpp" line="509"/>
<location filename="lpReport.cpp" line="516"/>
<location filename="lpReport.cpp" line="534"/>
<location filename="lpReport.cpp" line="864"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="293"/>
<location filename="lpReport.cpp" line="477"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="299"/>
<location filename="lpReport.cpp" line="309"/>
<location filename="lpReport.cpp" line="493"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="317"/>
<source>%1-%2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="323"/>
<location filename="lpReport.cpp" line="406"/>
<source>:%1 :%2 </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="325"/>
<location filename="lpReport.cpp" line="684"/>
<location filename="lpReport.cpp" line="1333"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="334"/>
<location filename="lpReport.cpp" line="415"/>
<location filename="lpReport.cpp" line="509"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="343"/>
<location filename="lpReport.cpp" line="422"/>
<location filename="lpReport.cpp" line="427"/>
<location filename="lpReport.cpp" line="516"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="348"/>
<location filename="lpReport.cpp" line="431"/>
<location filename="lpReport.cpp" line="520"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="370"/>
<location filename="lpReport.cpp" line="452"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="372"/>
<source>%1-%2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="374"/>
<location filename="lpReport.cpp" line="456"/>
<location filename="lpReport.cpp" line="534"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="390"/>
<source>%1-%2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="393"/>
<location filename="lpReport.cpp" line="960"/>
<location filename="lpReport.cpp" line="1311"/>
<source>使</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="396"/>
<location filename="lpReport.cpp" line="963"/>
<location filename="lpReport.cpp" line="1309"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="399"/>
<location filename="lpReport.cpp" line="966"/>
<location filename="lpReport.cpp" line="1310"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="454"/>
<source>%1-%2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="483"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="500"/>
<source>%1-%2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="535"/>
<source>%1-%2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="553"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="554"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="603"/>
<source>%1%2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="604"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="604"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="604"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="620"/>
<location filename="lpReport.cpp" line="878"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="621"/>
<source>:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="622"/>
<source>:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="639"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="641"/>
<source>,.....</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="801"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="817"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="837"/>
<source>:%1 :%2 %3</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="859"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="864"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="870"/>
<source> </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="880"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="997"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="998"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="999"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="1000"/>
<source>s</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="1001"/>
<source>mm</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="1002"/>
<source>mm</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="1003"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="1004"/>
<source>uid</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="1076"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="1092"/>
<source>%1 %2 %3</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="1124"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="1125"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="1174"/>
<location filename="lpReport.cpp" line="1212"/>
<location filename="lpReport.cpp" line="1302"/>
<location filename="lpReport.cpp" line="1305"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="1313"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="1335"/>
<source>NG</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>lpReportClass</name>
<message>
<location filename="lpReport.ui" line="14"/>
<source>lpReport</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="155"/>
<location filename="lpReport.ui" line="212"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="248"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="272"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="319"/>
<location filename="lpReport.ui" line="1807"/>
<source>()</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="349"/>
<location filename="lpReport.ui" line="1837"/>
<source>50</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="367"/>
<location filename="lpReport.ui" line="1855"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="379"/>
<location filename="lpReport.ui" line="416"/>
<location filename="lpReport.ui" line="1867"/>
<location filename="lpReport.ui" line="1904"/>
<source>TextLabel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="391"/>
<location filename="lpReport.ui" line="1879"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="496"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="508"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="523"/>
<location filename="lpReport.ui" line="1256"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="543"/>
<location filename="lpReport.ui" line="617"/>
<location filename="lpReport.ui" line="1202"/>
<location filename="lpReport.ui" line="1276"/>
<location filename="lpReport.ui" line="1583"/>
<location filename="lpReport.ui" line="1729"/>
<source>2017-11-11 11:11:11</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="569"/>
<location filename="lpReport.ui" line="1311"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="597"/>
<location filename="lpReport.ui" line="1182"/>
<location filename="lpReport.ui" line="1563"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="643"/>
<location filename="lpReport.ui" line="1228"/>
<location filename="lpReport.ui" line="1609"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="795"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="816"/>
<location filename="lpReport.ui" line="1483"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="952"/>
<location filename="lpReport.ui" line="1463"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="972"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="1108"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="1122"/>
<source>0</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="1142"/>
<location filename="lpReport.ui" line="1520"/>
<location filename="lpReport.ui" line="1677"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="1159"/>
<location filename="lpReport.ui" line="1503"/>
<location filename="lpReport.ui" line="1694"/>
<source>CSV</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="1634"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="1709"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="1755"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="1784"/>
<source></source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

@ -0,0 +1,897 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="zh_CN">
<context>
<name>QReportWidget</name>
<message>
<location filename="qreportwidget.cpp" line="50"/>
<location filename="qreportwidget.cpp" line="95"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qreportwidget.cpp" line="51"/>
<location filename="qreportwidget.cpp" line="97"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qreportwidget.cpp" line="93"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qreportwidget.cpp" line="132"/>
<source></source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QTimeDlg</name>
<message>
<location filename="qtimedlg.ui" line="14"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="63"/>
<location filename="qtimedlg.ui" line="400"/>
<source>0</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="68"/>
<location filename="qtimedlg.ui" line="405"/>
<source>1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="73"/>
<location filename="qtimedlg.ui" line="410"/>
<source>2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="78"/>
<location filename="qtimedlg.ui" line="415"/>
<source>3</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="83"/>
<location filename="qtimedlg.ui" line="420"/>
<source>4</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="88"/>
<location filename="qtimedlg.ui" line="425"/>
<source>5</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="93"/>
<location filename="qtimedlg.ui" line="430"/>
<source>6</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="98"/>
<location filename="qtimedlg.ui" line="435"/>
<source>7</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="103"/>
<location filename="qtimedlg.ui" line="440"/>
<source>8</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="108"/>
<location filename="qtimedlg.ui" line="445"/>
<source>9</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="113"/>
<location filename="qtimedlg.ui" line="450"/>
<source>10</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="118"/>
<location filename="qtimedlg.ui" line="455"/>
<source>11</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="123"/>
<location filename="qtimedlg.ui" line="460"/>
<source>12</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="128"/>
<location filename="qtimedlg.ui" line="465"/>
<source>13</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="133"/>
<location filename="qtimedlg.ui" line="470"/>
<source>14</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="138"/>
<location filename="qtimedlg.ui" line="475"/>
<source>15</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="143"/>
<location filename="qtimedlg.ui" line="480"/>
<source>16</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="148"/>
<location filename="qtimedlg.ui" line="485"/>
<source>17</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="153"/>
<location filename="qtimedlg.ui" line="490"/>
<source>18</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="158"/>
<location filename="qtimedlg.ui" line="495"/>
<source>19</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="163"/>
<location filename="qtimedlg.ui" line="500"/>
<source>20</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="168"/>
<location filename="qtimedlg.ui" line="505"/>
<source>21</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="173"/>
<location filename="qtimedlg.ui" line="510"/>
<source>22</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="178"/>
<location filename="qtimedlg.ui" line="515"/>
<source>23</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="183"/>
<source>24</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="188"/>
<source>25</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="193"/>
<source>26</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="198"/>
<source>27</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="203"/>
<source>28</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="208"/>
<source>29</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="213"/>
<source>30</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="218"/>
<source>31</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="223"/>
<source>32</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="228"/>
<source>33</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="233"/>
<source>34</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="238"/>
<source>35</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="243"/>
<source>36</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="248"/>
<source>37</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="253"/>
<source>38</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="258"/>
<source>39</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="263"/>
<source>40</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="268"/>
<source>41</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="273"/>
<source>42</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="278"/>
<source>43</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="283"/>
<source>44</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="288"/>
<source>45</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="293"/>
<source>46</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="298"/>
<source>47</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="303"/>
<source>48</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="308"/>
<source>49</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="313"/>
<source>50</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="318"/>
<source>51</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="323"/>
<source>52</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="328"/>
<source>53</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="333"/>
<source>54</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="338"/>
<source>55</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="343"/>
<source>56</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="348"/>
<source>57</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="353"/>
<source>58</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="358"/>
<source>59</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="526"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="536"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="576"/>
<source>2017/00/00 00:00</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qtimedlg.ui" line="602"/>
<source></source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>TestWidget</name>
<message>
<location filename="testwidget.ui" line="14"/>
<source>TestWidget</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>lpReport</name>
<message>
<location filename="lpReport.cpp" line="97"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="173"/>
<location filename="lpReport.cpp" line="194"/>
<location filename="lpReport.cpp" line="775"/>
<location filename="lpReport.cpp" line="780"/>
<location filename="lpReport.cpp" line="858"/>
<location filename="lpReport.cpp" line="1039"/>
<location filename="lpReport.cpp" line="1138"/>
<source>%1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="174"/>
<location filename="lpReport.cpp" line="193"/>
<location filename="lpReport.cpp" line="719"/>
<location filename="lpReport.cpp" line="751"/>
<location filename="lpReport.cpp" line="776"/>
<location filename="lpReport.cpp" line="781"/>
<location filename="lpReport.cpp" line="857"/>
<location filename="lpReport.cpp" line="912"/>
<location filename="lpReport.cpp" line="944"/>
<location filename="lpReport.cpp" line="1111"/>
<source>%1 %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="293"/>
<location filename="lpReport.cpp" line="299"/>
<location filename="lpReport.cpp" line="309"/>
<location filename="lpReport.cpp" line="334"/>
<location filename="lpReport.cpp" line="343"/>
<location filename="lpReport.cpp" line="374"/>
<location filename="lpReport.cpp" line="415"/>
<location filename="lpReport.cpp" line="422"/>
<location filename="lpReport.cpp" line="427"/>
<location filename="lpReport.cpp" line="456"/>
<location filename="lpReport.cpp" line="477"/>
<location filename="lpReport.cpp" line="483"/>
<location filename="lpReport.cpp" line="493"/>
<location filename="lpReport.cpp" line="509"/>
<location filename="lpReport.cpp" line="516"/>
<location filename="lpReport.cpp" line="534"/>
<location filename="lpReport.cpp" line="864"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="293"/>
<location filename="lpReport.cpp" line="477"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="299"/>
<location filename="lpReport.cpp" line="309"/>
<location filename="lpReport.cpp" line="493"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="317"/>
<source>%1-%2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="323"/>
<location filename="lpReport.cpp" line="406"/>
<source>:%1 :%2 </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="325"/>
<location filename="lpReport.cpp" line="684"/>
<location filename="lpReport.cpp" line="1333"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="334"/>
<location filename="lpReport.cpp" line="415"/>
<location filename="lpReport.cpp" line="509"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="343"/>
<location filename="lpReport.cpp" line="422"/>
<location filename="lpReport.cpp" line="427"/>
<location filename="lpReport.cpp" line="516"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="348"/>
<location filename="lpReport.cpp" line="431"/>
<location filename="lpReport.cpp" line="520"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="370"/>
<location filename="lpReport.cpp" line="452"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="372"/>
<source>%1-%2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="374"/>
<location filename="lpReport.cpp" line="456"/>
<location filename="lpReport.cpp" line="534"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="390"/>
<source>%1-%2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="393"/>
<location filename="lpReport.cpp" line="960"/>
<location filename="lpReport.cpp" line="1311"/>
<source>使</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="396"/>
<location filename="lpReport.cpp" line="963"/>
<location filename="lpReport.cpp" line="1309"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="399"/>
<location filename="lpReport.cpp" line="966"/>
<location filename="lpReport.cpp" line="1310"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="454"/>
<source>%1-%2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="483"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="500"/>
<source>%1-%2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="535"/>
<source>%1-%2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="553"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="554"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="603"/>
<source>%1%2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="604"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="604"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="604"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="620"/>
<location filename="lpReport.cpp" line="878"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="621"/>
<source>:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="622"/>
<source>:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="639"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="641"/>
<source>,.....</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="801"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="817"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="837"/>
<source>:%1 :%2 %3</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="859"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="864"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="870"/>
<source> </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="880"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="997"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="998"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="999"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="1000"/>
<source>s</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="1001"/>
<source>mm</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="1002"/>
<source>mm</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="1003"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="1004"/>
<source>uid</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="1076"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="1092"/>
<source>%1 %2 %3</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="1124"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="1125"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="1174"/>
<location filename="lpReport.cpp" line="1212"/>
<location filename="lpReport.cpp" line="1302"/>
<location filename="lpReport.cpp" line="1305"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="1313"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.cpp" line="1335"/>
<source>NG</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>lpReportClass</name>
<message>
<location filename="lpReport.ui" line="14"/>
<source>lpReport</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="155"/>
<location filename="lpReport.ui" line="212"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="248"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="272"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="319"/>
<location filename="lpReport.ui" line="1807"/>
<source>()</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="349"/>
<location filename="lpReport.ui" line="1837"/>
<source>50</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="367"/>
<location filename="lpReport.ui" line="1855"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="379"/>
<location filename="lpReport.ui" line="416"/>
<location filename="lpReport.ui" line="1867"/>
<location filename="lpReport.ui" line="1904"/>
<source>TextLabel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="391"/>
<location filename="lpReport.ui" line="1879"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="496"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="508"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="523"/>
<location filename="lpReport.ui" line="1256"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="543"/>
<location filename="lpReport.ui" line="617"/>
<location filename="lpReport.ui" line="1202"/>
<location filename="lpReport.ui" line="1276"/>
<location filename="lpReport.ui" line="1583"/>
<location filename="lpReport.ui" line="1729"/>
<source>2017-11-11 11:11:11</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="569"/>
<location filename="lpReport.ui" line="1311"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="597"/>
<location filename="lpReport.ui" line="1182"/>
<location filename="lpReport.ui" line="1563"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="643"/>
<location filename="lpReport.ui" line="1228"/>
<location filename="lpReport.ui" line="1609"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="795"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="816"/>
<location filename="lpReport.ui" line="1483"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="952"/>
<location filename="lpReport.ui" line="1463"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="972"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="1108"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="1122"/>
<source>0</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="1142"/>
<location filename="lpReport.ui" line="1520"/>
<location filename="lpReport.ui" line="1677"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="1159"/>
<location filename="lpReport.ui" line="1503"/>
<location filename="lpReport.ui" line="1694"/>
<source>CSV</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="1634"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="1709"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="1755"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="lpReport.ui" line="1784"/>
<source></source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

@ -1,4 +1,4 @@
#include "QAlgParamDlg.h"
#include "QAlgParamDlg.h"
#include "DetectState.h"
#include "qshowimg.h"
#include <QFileDialog>
@ -94,7 +94,7 @@ void QAlgParamDlg::getParam()
Q_SLOT void QAlgParamDlg::onChangeBG()
{
QFileDialog fileDialog;
fileDialog.setWindowTitle(tr("请选择您的背景图"));
fileDialog.setWindowTitle(tr("请选择您的背景图"));
fileDialog.setNameFilter("Picture(*.bmp *.jpg *.png)");
fileDialog.setFileMode(QFileDialog::ExistingFiles);
if (fileDialog.exec() == QDialog::Accepted)
@ -123,9 +123,9 @@ Q_SLOT void QAlgParamDlg::onChangeBG()
//return false;
}
//emit sgChangeBG(DstPath);
QMessageBox infobox(QMessageBox::Information, tr("提示"), tr("背景图更新完成,请重启本软件."), QMessageBox::Yes, NULL);
QMessageBox infobox(QMessageBox::Information, tr("提示"), tr("背景图更新完成,请重启本软件."), QMessageBox::Yes, NULL);
infobox.setWindowIcon(QIcon(":/image/leaper"));
infobox.setButtonText(QMessageBox::Yes, tr("确认"));
infobox.setButtonText(QMessageBox::Yes, tr("确认"));
infobox.exec();
}
}

@ -1,4 +1,4 @@
#ifndef _QALGPARAMDLG_H_
#ifndef _QALGPARAMDLG_H_
#define _QALGPARAMDLG_H_
#include <QWidget>

@ -509,7 +509,7 @@ Q_SLOT void QModelMgrDlg::onTextChanged(const QString& str)
else {
QStringList strFilter = models.filter(str);
m_pModelLists->setModelList(strFilter);
QString m_str = QString("%1 %2 个型号").arg(tr("")).arg(strFilter.size()).arg(tr("个型号"));
QString m_str = QString("%1 %2 %3").arg(tr("")).arg(strFilter.size()).arg(tr("个型号"));
ui.ModelMgr_label_Model_number->setText(m_str);
}
}
@ -1070,7 +1070,7 @@ void QModelMgrDlg::showEvent(QShowEvent *event)
strModels.removeAll("NG");
m_pModelLists->setModelList(strModels);
QString m_str = QString("%1 %2 个型号").arg(tr("")).arg(strModels.size()).arg(tr("个型号"));
QString m_str = QString("%1 %2 %3").arg(tr("")).arg(strModels.size()).arg(tr("个型号"));
ui.ModelMgr_label_Model_number->setText(m_str);
}
}

@ -22,7 +22,7 @@ public:
int m_level{ 0 };
QString m_curUser{ "" };
bool m_bCheckLinese{ false };//注册码验证 true 表示已注册false 表示未注册
bool m_plcConnect{ false };
};
#endif

@ -23,14 +23,15 @@
#include <QProcess>
#include "lpCryptokey.h"
#define VERSION_HUB "3.0.1.5"
#define VERSION_HUB "3.0.1.6"
#define VERSION_ALG "3.0.1.4"
#define UPDATE_TIME "2021-09-28"
#define UPDATE_TIME "2021-10-08"
#pragma execution_character_set("utf-8")
lpMainWin::lpMainWin(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
{//加载语言设置
QSettings languageSetting("hubdetect.ini", QSettings::IniFormat);
QString strLanguage = languageSetting.value("language", "Chinese").toString();
@ -42,7 +43,7 @@ lpMainWin::lpMainWin(QWidget *parent)
qRegisterMetaType<TimeStruct>("TimeStruct");
m_screen.ShowMsg(tr("加载必要模块....."));
onInitCoreCtrl();
ui.setupUi(this);
onInitAbout();
{
QGridLayout *pLayout = new QGridLayout(ui.cam_win_1);
@ -52,38 +53,34 @@ lpMainWin::lpMainWin(QWidget *parent)
ui.cam_win_1->setLayout(pLayout);
}
{
connect(ui.action_userManager, SIGNAL(triggered()), this, SLOT(onActionClicked()));
connect(ui.action_Login, SIGNAL(triggered()), this, SLOT(onActionClicked()));
connect(ui.action_about, SIGNAL(triggered()), this, SLOT(onActionClicked()));
connect(ui.action_setting_ip, SIGNAL(triggered()), this, SLOT(onActionClicked()));
connect(ui.action_cali_raster, SIGNAL(triggered()), this, SLOT(onActionClicked()));
connect(ui.action_setting_ban, SIGNAL(triggered()), this, SLOT(onActionClicked()));
connect(ui.action_debug, SIGNAL(triggered()), this, SLOT(onActionClicked()));
connect(ui.action_connect_mode, SIGNAL(triggered()), this, SLOT(onActionClicked()));
connect(ui.action_checkdata, SIGNAL(triggered()), this, SLOT(onActionClicked()));
connect(ui.action_modelmgr, SIGNAL(triggered()), this, SLOT(onActionClicked()));
connect(ui.action_algParam, SIGNAL(triggered()), this, SLOT(onActionClicked()));
connect(ui.action_register, SIGNAL(triggered()), this, SLOT(onActionClicked()));
connect(ui.actionSystemSeting, SIGNAL(triggered()), this, SLOT(onActionClicked()));
connect(ui.actioncamSetting, SIGNAL(triggered()), this, SLOT(onActionClicked()));
connect(ui.btn_start_detect, SIGNAL(clicked()), this, SLOT(onButtonClicked()));
connect(ui.btn_clear_data, SIGNAL(clicked()), this, SLOT(onButtonClicked()));
ui.action_userManager->setVisible(false);
connect(ui.action_userManager, SIGNAL(triggered()), this, SLOT(onActionClicked()));//用户管理
connect(ui.action_Login, SIGNAL(triggered()), this, SLOT(onActionClicked()));//用户登录
connect(ui.action_about, SIGNAL(triggered()), this, SLOT(onActionClicked()));//关于
connect(ui.action_setting_ip, SIGNAL(triggered()), this, SLOT(onActionClicked()));//IP设置
connect(ui.action_cali_raster, SIGNAL(triggered()), this, SLOT(onActionClicked()));//光栅尺
connect(ui.action_setting_ban, SIGNAL(triggered()), this, SLOT(onActionClicked()));//班次设置
connect(ui.action_debug, SIGNAL(triggered()), this, SLOT(onActionClicked()));//调试助手
connect(ui.action_connect_mode, SIGNAL(triggered()), this, SLOT(onActionClicked()));//连接模式
connect(ui.action_checkdata, SIGNAL(triggered()), this, SLOT(onActionClicked()));//历史数据查看页面
connect(ui.action_modelmgr, SIGNAL(triggered()), this, SLOT(onActionClicked()));//模板管理
connect(ui.action_algParam, SIGNAL(triggered()), this, SLOT(onActionClicked()));//算法参数设置
connect(ui.action_register, SIGNAL(triggered()), this, SLOT(onActionClicked()));//注册页面
connect(ui.actionSystemSeting, SIGNAL(triggered()), this, SLOT(onActionClicked()));//系统参数设置
connect(ui.actioncamSetting, SIGNAL(triggered()), this, SLOT(onActionClicked()));//相机设置
connect(ui.btn_start_detect, SIGNAL(clicked()), this, SLOT(onButtonClicked()));//开始检测 停止检测
connect(ui.btn_clear_data, SIGNAL(clicked()), this, SLOT(onButtonClicked()));//清空统计
ui.action_userManager->setVisible(false);//默认用户管理菜单隐藏 只有相应权限才能显示
//下拉菜单 布局 工具菜单 配置相关系统设置菜单
QMenu *pToolMenu = new QMenu(this);
// QFont font;
// font.setPixelSize(24);
// pToolMenu->setFont(font);
pToolMenu->addAction(ui.action_cali_raster);
pToolMenu->addAction(ui.action_setting_ban);
pToolMenu->addAction(ui.action_setting_ip);
pToolMenu->addAction(ui.action_debug);
pToolMenu->addAction(ui.actionSystemSeting);
pToolMenu->addAction(ui.actioncamSetting);
pToolMenu->addAction(ui.actionSystemSeting);
pToolMenu->addAction(ui.action_algParam);
pToolMenu->addAction(ui.action_debug);
QToolButton* pbutton = new QToolButton(this);
pbutton->setMenu(pToolMenu);
@ -93,6 +90,8 @@ lpMainWin::lpMainWin(QWidget *parent)
pbutton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
pbutton->setPopupMode(QToolButton::InstantPopup);
ui.mainToolBar->addWidget(pbutton);
//帮助 下拉菜单
QMenu *pHelpMenu = new QMenu(this);
pHelpMenu->addAction(ui.action_about);
pHelpMenu->addAction(ui.action_register);
@ -106,17 +105,19 @@ lpMainWin::lpMainWin(QWidget *parent)
pHelptool->setPopupMode(QToolButton::InstantPopup);
ui.mainToolBar->addWidget(pHelptool);
ui.mainToolBar->addSeparator();
m_pLabelInfo = new QLabel(this);
m_pLabelInfo->setText(tr("本系统未注册激活"));
m_pLabelInfo->setStyleSheet("font: bold 14px; color: red;");
ui.mainToolBar->addWidget(m_pLabelInfo);;
ui.mainToolBar->addWidget(m_pLabelInfo);
}
{
{//状态栏初始化配置
m_pLbCurrentTime = new QLabel(tr("系统时间"));
m_pLbBanci = new QLabel(tr("班次信息"));
m_pLbDetectState = new QLabel(tr("检测状态"));
m_pLbUser = new QLabel(tr("用户:"));
m_pLbUser = new QLabel(tr("用户:"));
m_pLbPLCConnect = new QLabel(tr("PLC连接"));
QFont m_font;
m_font.setBold(true);
@ -135,13 +136,15 @@ lpMainWin::lpMainWin(QWidget *parent)
m_pLbDetectState->setFont(m_font);
m_pLbDetectState->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
//m_pLbOnLine = new class QLabel("模式:");
//m_pLbOnLine->setMinimumWidth(c_nWidth);
m_pLbPLCConnect->setMinimumWidth(200);
m_pLbPLCConnect->setFont(m_font);
m_pLbPLCConnect->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
m_pLbUser->setFont(m_font);
m_pLbUser->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
ui.statusBar->addWidget(m_pLbDetectState, 1);
ui.statusBar->addWidget(m_pLbPLCConnect, 1);
ui.statusBar->addWidget(m_pLbUser, 1);
ui.statusBar->addWidget(m_pLbBanci,1);
ui.statusBar->addPermanentWidget(m_pLbCurrentTime);
@ -149,15 +152,15 @@ lpMainWin::lpMainWin(QWidget *parent)
//加载用户管理模块
loadUserModel();
//初始化模型管理模块
{
{//总逻辑处理模块 核心管理
m_pCtrl = new WheelCtrl(QCoreApplication::applicationDirPath(), &m_screen);
pWorkCtrl = new QWorkMgrCtlr(m_pCtrl);
pWorkCtrl = new QWorkMgrCtlr(m_pCtrl);//工单管理模块
pWorkCtrl->readManageFile();
m_pworkUI = new QWorkMgrUI(pWorkCtrl, m_pCtrl);
m_pworkUI = new QWorkMgrUI(pWorkCtrl, m_pCtrl);//工单管理UI模块
m_pworkUI->InitUI();
connect(m_pworkUI, SIGNAL(sgUpdatedefect()), this, SLOT(onUpdateDefect()));
m_pModelMgrDlg = new QModelMgrDlg(m_pCtrl);//模板管理
m_pModelMgrDlg = new QModelMgrDlg(m_pCtrl);//模板管理UI
//当某个模板加入训练或者不加入训练时修改原来工作单中的模板信息
connect(m_pModelMgrDlg, SIGNAL(sgModifyModel(QString)), this, SLOT(modWorkMgr(QString)));
connect(m_pModelMgrDlg, SIGNAL(sgUpdatedefect()), this, SLOT(onUpdateDefect()));
@ -174,11 +177,12 @@ lpMainWin::lpMainWin(QWidget *parent)
connect(m_pSystemSettingDlg, SIGNAL(sgChangeLanguage(QString)), this, SLOT(onLanguageChange(QString)));
connect(m_pSystemSettingDlg, SIGNAL(sgChangePLCParam()), this, SLOT(onChangePLCParam()));
connect(m_pSystemSettingDlg, SIGNAL(sgParamChange()), this, SLOT(onUpdateUI()));
//历史检测图像缩略图
m_pixMapList = new QPixmapListBar(ui.tp_main_tabWidget);
ui.tp_main_tabWidget->insertTab(0, m_pixMapList, tr("历史"));
ui.tp_main_tabWidget->setCurrentIndex(0);
m_pAlgParamDlg = new QAlgParamDlg();
m_pAlgParamDlg = new QAlgParamDlg();//算法参数设置页面
connect(m_pAlgParamDlg, SIGNAL(sgParamChange()), this, SLOT(onUpdateUI()));
}
{
@ -191,9 +195,7 @@ lpMainWin::lpMainWin(QWidget *parent)
SendTiskTsk = new QMyThread();
TaskFunc TickFunc = std::bind(&lpMainWin::SendTickTskFun, this);
SendTiskTsk->loadfunc(TickFunc);
m_screen.ShowMsg(tr("系统初始化完成..."));
}
{
onSetModel();
@ -216,8 +218,6 @@ lpMainWin::lpMainWin(QWidget *parent)
connect(m_pNet, SIGNAL(sgLibRev(bool)), SendModelLibTask, SLOT(WaitSingleIn(bool)));//xy lib
// connect(m_pNet, SIGNAL(sgChangeOnlineState(int)), m_pUi, SLOT(onSwitchOnlineModel(int)));//强制在线 离线
QTimer::singleShot(500, m_pNet, SLOT(onOpenServer()));//延迟2s打开网络TCP服务
}
{
connect(&m_PulseTimer, SIGNAL(timeout()), this, SLOT(onPulseTimer()));//心跳包
@ -239,25 +239,7 @@ lpMainWin::lpMainWin(QWidget *parent)
connect(this, SIGNAL(sgShowChannelRes(QString)), this, SLOT(onShowChannel(QString)));
}
{
/*启动之后就一直发送心跳包和厚度查询*/
if (DetectState::instance()->m_AutoSendTick2Net)
{
SendTiskTsk->setSleepTime(1000);
SendTiskTsk->start();
}
//if (DetectState::instance()->m_StartAndDetect == 1)//m_sysType 表示万丰科技的
{
QTimer::singleShot(3000, [&](){
ui.btn_start_detect->setText(tr("停止检测"));
DetectState::instance()->IsDetect = true;
m_pCtrl->onStart();
});
}
if (DetectState::instance()->m_AutoSendTick2COM)
m_wfPulseTimer.start(1000);
//???做什么用的
pTickThread = new QThread(this);
QNetTickThread *pNetTick = new QNetTickThread;
pNetTick->setNetPtr(m_pNet);
@ -277,21 +259,40 @@ lpMainWin::lpMainWin(QWidget *parent)
m_pTableCheck->setModelList(strList);
}
m_timerID = startTimer(1000);
//m_PulseTimer.start(1000);
connect(this, SIGNAL(sgAutoExposure()), this, SLOT(onAutoExposure()));
connect(this, SIGNAL(sgShowRatioVal(double)), this, SLOT(onShowRatioVal(double)));
//自动曝光参数
QString strPath = QApplication::applicationDirPath();
readExposureTimeConfig(strPath);
onUpdateUI();
//注册码相关
lpGlobalData::instance()->m_bCheckLinese = lpCheckKey::instance()->checkLinese();
m_pCheckLineseUI = new QCryptokeyUI();
connect(m_pCheckLineseUI, SIGNAL(sgRegisterFinish(bool)), this, SLOT(onLineseCheck(bool)));
onLineseCheck(lpGlobalData::instance()->m_bCheckLinese);
/*启动之后就一直发送心跳包和厚度查询*/
if (DetectState::instance()->m_AutoSendTick2Net)
{
SendTiskTsk->setSleepTime(1000);
SendTiskTsk->start();
}
//if (DetectState::instance()->m_StartAndDetect == 1)//m_sysType 表示万丰科技的
{
QTimer::singleShot(3000, [&]() {
ui.btn_start_detect->setText(tr("停止检测"));
DetectState::instance()->IsDetect = true;
m_pCtrl->onStart();
});
}
if (DetectState::instance()->m_AutoSendTick2COM)
m_wfPulseTimer.start(1000);
m_timerID = startTimer(1000);
QTimer::singleShot(1000, m_pNet, SLOT(onOpenServer()));//延迟2s打开网络TCP服务
}
lpMainWin::~lpMainWin()
@ -361,6 +362,11 @@ lpMainWin::~lpMainWin()
delete m_pLbUser;
m_pLbUser = nullptr;
}
if (m_pLbPLCConnect)
{
delete m_pLbPLCConnect;
m_pLbPLCConnect = nullptr;
}
}
if (m_pCtrl)
{
@ -430,7 +436,7 @@ lpMainWin::~lpMainWin()
}
}
//核心corctrl模块 包括相机算法等相关模块
bool lpMainWin::onInitCoreCtrl()
{
//load coretrl
@ -473,7 +479,7 @@ void lpMainWin::loadUserModel()
connect(m_pUserCtrl, SIGNAL(sgCurrentUserInfo(QString, int, int)), this, SLOT(onLogInOut(QString, int, int)));
}
}
/*****************************系统语言设置*****************************/
void lpMainWin::SearchQmFile(const QString & strDir)
{
QDir dir(strDir);
@ -496,12 +502,10 @@ void lpMainWin::SearchQmFile(const QString & strDir)
QString tt = fileInfo.fileName();
// 如果是文件夹
bool bisDir = fileInfo.isDir();
if (bisDir)
{
if (bisDir) {
SearchQmFile(fileInfo.filePath());
}
else
{
else {
bool bQm = fileInfo.fileName().endsWith(".qm");
SetTranslator(fileInfo.filePath());
}
@ -511,18 +515,16 @@ void lpMainWin::SearchQmFile(const QString & strDir)
void lpMainWin::SetTranslator(const QString strPath)
{
if (strPath.isEmpty())
{
if (strPath.isEmpty()) {
return;
}
QTranslator *pTrans = new QTranslator;
if (pTrans->load(strPath)) // 如果加载成功
{
// 如果加载成功
if (pTrans->load(strPath)) {
qApp->installTranslator(pTrans);
m_VecTranPtr.append(pTrans);
}
else
{
else {
delete pTrans;
pTrans = NULL;
}
@ -532,10 +534,8 @@ void lpMainWin::SetLanguage(QString strLangage)
{
QString strDirPath = QString(QCoreApplication::applicationDirPath() + "/language/");
QString translatorFileName = strLangage;
if (!translatorFileName.isEmpty())
{
if (m_VecTranPtr.size() > 0)
{
if (!translatorFileName.isEmpty()) {
if (m_VecTranPtr.size() > 0) {
while (m_VecTranPtr.size())
{
QTranslator *pVa = m_VecTranPtr.takeFirst();
@ -544,14 +544,13 @@ void lpMainWin::SetLanguage(QString strLangage)
pVa = NULL;
}
}
//if (strLangage == "Chinese")
// return;
QLocale::setDefault(QLocale(translatorFileName));
QString transDir = strDirPath + translatorFileName;
SearchQmFile(transDir);
}
}
/*****************************系统语言设置 END*****************************/
/*主线程接收图像*/
void lpMainWin::INewCameraImage(const QString& camKey, QImage img)
{
@ -779,7 +778,7 @@ Q_SLOT void lpMainWin::onLogInOut(QString strName, int level, int state)
m_pModelMgrDlg->onUserLevel(level);
}
}
/*菜单栏所有事件*/
Q_SLOT void lpMainWin::onActionClicked()
{
QString strObj = sender()->objectName();
@ -860,8 +859,8 @@ Q_SLOT void lpMainWin::onActionClicked()
m_pDebugDlg->setWindowTitle(tr("调试工具"));
m_pDebugDlg->setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint);
m_pDebugDlg->setWindowIcon(QIcon(":/image/leaper"));
m_pDebugDlg->setWindowModality(Qt::ApplicationModal);
m_pDebugDlg->setAttribute(Qt::WA_ShowModal, true);
//m_pDebugDlg->setWindowModality(Qt::ApplicationModal);
//m_pDebugDlg->setAttribute(Qt::WA_ShowModal, true);
m_pDebugDlg->show();
}
}
@ -869,7 +868,7 @@ Q_SLOT void lpMainWin::onActionClicked()
if (m_pworkUI)
{
m_pworkUI->setParent(this);
m_pworkUI->setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint);
m_pworkUI->setWindowFlags(Qt::Dialog | Qt::WindowMaximizeButtonHint | Qt::WindowCloseButtonHint);
m_pworkUI->setWindowIcon(QIcon(":/image/leaper"));
m_pworkUI->setWindowModality(Qt::ApplicationModal);
m_pworkUI->setAttribute(Qt::WA_ShowModal, true);
@ -884,8 +883,8 @@ Q_SLOT void lpMainWin::onActionClicked()
m_pAlgParamDlg->setWindowTitle(tr("算法参数"));
m_pAlgParamDlg->setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint);
m_pAlgParamDlg->setWindowIcon(QIcon(":/image/leaper"));
m_pAlgParamDlg->setWindowModality(Qt::ApplicationModal);
m_pAlgParamDlg->setAttribute(Qt::WA_ShowModal, true);
//m_pAlgParamDlg->setWindowModality(Qt::ApplicationModal);
//m_pAlgParamDlg->setAttribute(Qt::WA_ShowModal, true);
m_pAlgParamDlg->show();
}
}
@ -904,7 +903,7 @@ Q_SLOT void lpMainWin::onActionClicked()
{
m_pModelMgrDlg->setParent(this);
m_pModelMgrDlg->setWindowTitle(tr("模板管理"));
m_pModelMgrDlg->setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint);
m_pModelMgrDlg->setWindowFlags(Qt::Dialog | Qt::WindowMaximizeButtonHint | Qt::WindowCloseButtonHint);
m_pModelMgrDlg->setWindowIcon(QIcon(":/image/leaper"));
m_pModelMgrDlg->setWindowModality(Qt::ApplicationModal);
m_pModelMgrDlg->setAttribute(Qt::WA_ShowModal, true);
@ -1015,7 +1014,9 @@ QString lpMainWin::SecondTimeString(quint64 value)
void lpMainWin::timerEvent(QTimerEvent *event)
{
if (event->timerId() == m_timerID) {
if (event->timerId() == m_timerID)
{
//定时刷新系统信息
m_runTimeCount++;
if (m_pLbCurrentTime) {
@ -1024,17 +1025,17 @@ void lpMainWin::timerEvent(QTimerEvent *event)
QString strTimeTitle = tr("运行时长:");
QString strShow = QString("%1 %2 %3").arg(m_currentTime).arg(strTimeTitle).arg(strlong);
m_pLbCurrentTime->setText(strShow);
m_pLbCurrentTime->setStyleSheet("font: 14px;");
m_pLbCurrentTime->setStyleSheet("font: 18px;");
}
// state
if (m_pLbDetectState) {
QString strDetectState = tr("检测状态:") + (DetectState::instance()->IsDetect == true ? tr("检测中...") : tr("未检测..."));
QString strDetectState = DetectState::instance()->IsDetect == true ? tr("检测中...") : tr("未检测...");
m_pLbDetectState->setText(strDetectState);
if (DetectState::instance()->IsDetect) {
m_pLbDetectState->setStyleSheet("font: bold 14px;background-color: green;");
m_pLbDetectState->setStyleSheet("font: bold 18px;background-color: green;");
}
else {
m_pLbDetectState->setStyleSheet("font: bold 14px;background-color: red;");
m_pLbDetectState->setStyleSheet("font: bold 18px;background-color: red;");
}
}
@ -1043,22 +1044,34 @@ void lpMainWin::timerEvent(QTimerEvent *event)
if (m_pCtrl)
show_label = m_pCtrl->getCurrentBan();
QString strMsg = tr("班次信息") + (show_label.isEmpty() == true ? tr("该时间段未设置班次") : show_label);
QString strMsg = tr("班次信息:") + (show_label.isEmpty() == true ? tr("该时间段未设置班次") : show_label);
// if (strLanguage != "Chinese")
// {
// strMsg = tr("Classes:")
// + (show_label.isEmpty() == true ? tr("No set Times") : show_label);
// }
m_pLbBanci->setText(strMsg);
m_pLbBanci->setStyleSheet("font: 14px;");
m_pLbBanci->setStyleSheet("font: 18px;");
}
if (m_pLbUser) {
QString show_label = m_pCtrl->getUserName();
// if (strLanguage != "Chinese")
// m_pLbUser->setText(tr("User:") + show_label);
// else
m_pLbUser->setText(tr("当前用户:") + show_label);
m_pLbUser->setStyleSheet("font: 14px;");
m_pLbUser->setText(tr("当前用户:") + show_label);
m_pLbUser->setStyleSheet("font: 18px;");
}
if (m_pLbPLCConnect)
{
if (lpGlobalData::instance()->m_plcConnect == true)
{
m_pLbPLCConnect->setText(tr("PLC已连接"));
m_pLbPLCConnect->setStyleSheet("font: bold 18px;background-color: green;");
}
else {
m_pLbPLCConnect->setText(tr("PLC未连接"));
m_pLbPLCConnect->setStyleSheet("font: bold 18px;background-color: red;");
}
}
}
}
@ -1076,9 +1089,25 @@ void lpMainWin::closeEvent(QCloseEvent *event)
{
return event->ignore();
}
if (m_pDebugDlg)
{
if (!m_pDebugDlg->isHidden())
{
m_pDebugDlg->close();
}
}
return event->accept();
}
void lpMainWin::changeEvent(QEvent *event)
{
if (event->type() == QEvent::LanguageChange)
{
ui.retranslateUi(this);
}
}
void lpMainWin::SendModelKuTskFun()
{
/*
@ -1120,7 +1149,6 @@ void lpMainWin::SendModelKuTskFun()
}
emit(sgShowMsgdlg(tr("模板库发送完成")));
}
void lpMainWin::SendTickTskFun()
@ -1287,7 +1315,8 @@ Q_SLOT void lpMainWin::onReadDetectState(int nIndex, QString strModel)
QMap<QString, IWheelModel*> *ptr = m_pCtrl->getAllModelMapPtr();
if (ptr) {
QList<QString> lst = ptr->keys();
/*if (nIndex < lst.size() && nIndex >= 0)*/ {
/*if (nIndex < lst.size() && nIndex >= 0)*/
{
IWheelModel*pModel = ptr->value(strModel);
if (pModel) {
pModel->setDetectState(1);
@ -1325,7 +1354,6 @@ Q_SLOT void lpMainWin::onTrigRecv(int m_value,double dRatio)
// {
// m_pCoreCtrl->ISetExposureTime(m_camKey, m_exposureTimeArray[m_exposureTimeCount]);
// }
onTriggerCam();
qWarning() << "soft ctrol camera :" << "(" << QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss zzz") << ")";
}
@ -1848,7 +1876,6 @@ Q_SLOT void lpMainWin::onLineseCheck(bool bFlag)
ui.action_modelmgr->setDisabled(!bFlag);
ui.action_checkdata->setDisabled(!bFlag);
ui.action_connect_mode->setDisabled(!bFlag);
ui.action_connect_mode->setDisabled(!bFlag);
ui.action_debug->setDisabled(!bFlag);
ui.action_algParam->setDisabled(!bFlag);
ui.actioncamSetting->setDisabled(!bFlag);

@ -137,7 +137,7 @@ private:
protected:
virtual void timerEvent(QTimerEvent *event);
virtual void closeEvent(QCloseEvent *event);
virtual void changeEvent(QEvent *event);
private:
Ui::lpMainWin ui;
@ -153,6 +153,7 @@ private:
class QLabel* m_pLbBanci{ nullptr };//显示班次
class QLabel* m_pLbDetectState{ nullptr };//显示检测状态
class QLabel* m_pLbUser{ nullptr };//显示登陆用户信息
class QLabel* m_pLbPLCConnect{ nullptr };//PLC连接状态
private:
CDllCoreCtrl* m_pDllCoreCtrl{ nullptr };
ICoreCtrl* m_pCoreCtrl{ nullptr };

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -21,6 +21,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lpReport", "lpReport\lpRepo
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Net4Wheel", "Net4Wheel\Net4Wheel.vcxproj", "{9B718379-3719-4D4E-A903-EDE7EFB4DC65}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tpCamVirtual", "..\..\Valve\tpvs17\tpCamVirtual\tpCamVirtual.vcxproj", "{707DDF6F-B78B-42F7-9EAD-E786C0FCD5FF}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
@ -85,12 +87,20 @@ Global
{9B718379-3719-4D4E-A903-EDE7EFB4DC65}.Release|x64.ActiveCfg = Release|x64
{9B718379-3719-4D4E-A903-EDE7EFB4DC65}.Release|x64.Build.0 = Release|x64
{9B718379-3719-4D4E-A903-EDE7EFB4DC65}.Release|x86.ActiveCfg = Release|x64
{707DDF6F-B78B-42F7-9EAD-E786C0FCD5FF}.Debug|x64.ActiveCfg = Debug|x64
{707DDF6F-B78B-42F7-9EAD-E786C0FCD5FF}.Debug|x64.Build.0 = Debug|x64
{707DDF6F-B78B-42F7-9EAD-E786C0FCD5FF}.Debug|x86.ActiveCfg = Debug|Win32
{707DDF6F-B78B-42F7-9EAD-E786C0FCD5FF}.Debug|x86.Build.0 = Debug|Win32
{707DDF6F-B78B-42F7-9EAD-E786C0FCD5FF}.Release|x64.ActiveCfg = Release|x64
{707DDF6F-B78B-42F7-9EAD-E786C0FCD5FF}.Release|x64.Build.0 = Release|x64
{707DDF6F-B78B-42F7-9EAD-E786C0FCD5FF}.Release|x86.ActiveCfg = Release|Win32
{707DDF6F-B78B-42F7-9EAD-E786C0FCD5FF}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
Qt5Version = qt5.9.4-msvc2017-x64
SolutionGuid = {CD365F32-5EAC-4A16-AD47-BFB1D8E5511A}
Qt5Version = qt5.9.4-msvc2017-x64
EndGlobalSection
EndGlobal

Loading…
Cancel
Save