1、添加全局参数统一管理功能

2、恢复索引号修改冲突提示功能
3、修复bug若干
valve_lucas
bobpan 5 years ago
parent b47cd22185
commit 618c9c8a2d

@ -0,0 +1,15 @@
[language]
select=Chinese
[COM]
Port=COM3
Baute=115200
[CheckThread]
days=7
days_dir=30
Enable=false
spacesize=10
[TrigDetector]
FilterTime=10

@ -22,7 +22,7 @@ public:
virtual void setCamInfo(int nId, int alg, QString uniqueName, QString showName) = 0;
virtual QVariant getVariant(){ return QVariant(); }
virtual void revResult() = 0;
virtual bool trigImage(const QString folder = QString()) = 0;
virtual bool trigImage() = 0;
virtual bool isWorkingOk() = 0;
virtual QString currentRunningModel() const = 0;

@ -16,10 +16,7 @@ public:
virtual void ISetOnlineModel(bool) {};
virtual bool IBatchModel() = 0;
virtual bool IConnectStatus() = 0;
virtual QString IGetCommName() = 0;
virtual QString IGetCurrentRuningModel(int) = 0;
virtual void ISetUserInfo(QString& user, int& level)=0;
virtual bool IGetUserInfo(QString& user, int& level) = 0;
virtual void registerConnect() =0;
virtual QStringList IGetStationKeys() = 0;
virtual IStation* IGetStationById(int) = 0;

@ -11,7 +11,6 @@ QVariant ModelModel::data(const QModelIndex &index, int role /*= Qt::DisplayRole
if (role == Qt::DisplayRole) {
int nCol = index.column();
int nRow = index.row();
//qDebug() << index.row();
if (0 == nCol) {
if (nRow != 0) {
int a = 1;
@ -22,7 +21,6 @@ QVariant ModelModel::data(const QModelIndex &index, int role /*= Qt::DisplayRole
return m_pStation->wfModel(m_pStation->model(nRow))->nIndex;
}
else if (2==nCol) {
//return m_pStation->wfModel(m_pStation->model(nRow))->bCaliState == true ? "已标定" : "未标定";
return m_pStation->IStandard(m_pStation->model(nRow)) == true ? QObject::tr("已标定") : QObject::tr("未标定");
}
}
@ -30,17 +28,21 @@ QVariant ModelModel::data(const QModelIndex &index, int role /*= Qt::DisplayRole
QString str1 = m_pStation->currentRunningModel();
QString str2 = m_pStation->model(index.row());
if (str1 == str2) {
return QColor(255, 0, 0);
return QColor(50, 250, 0, 80);
}
else {
return QColor(255, 255, 255);
}
}
// int nCol = index.column();
// int nRow = index.row();
// if (2 == nCol) {
// return m_pStation->IStandard(m_pStation->model(nRow)) == true ? QColor(255, 255, 255) : QColor(255, 0, 255);
// }
else if (role == Qt::TextColorRole)
{
int nRow = index.row();
int nCol = index.column();
if (2 == nCol)
{
return m_pStation->IStandard(m_pStation->model(nRow)) == true ? QColor(0, 0, 0) : QColor(255, 0, 25);
}
}
return QVariant();
}

@ -38,18 +38,16 @@ void QDiskCleanThread::run()
{
while (!m_bExit)
{
qWarning() << "Start Scan Disk ...";
//qWarning() << "Start Scan Disk ...";
QString strDisk = m_strImgStorageFolder.left(2);
int space = solarCell::SolarCellHelper::GetDiskFreeSpace(strDisk);
if (space < 1024 * 10)
{
isUse = true;
m_nDay = 3;
}
qWarning() << "spacesize =" << space;
//qWarning() << "spacesize =" << space;
if (bModel == CleanFile)//清空图片数据的操作
{
if (isUse)
@ -134,12 +132,12 @@ void QDiskCleanThread::run()
}
}
}
qWarning() << "End Scan Disk ...";
//qWarning() << "End Scan Disk ...";
//三十秒判断一次
if (nSleepTime <= 2)
nSleepTime = 2;
int sleeptime = nSleepTime * 1000;
msleep(100000);
msleep(1500);
}
}

@ -258,34 +258,13 @@ QStringList Station::modelList()
void Station::revResult()
{
emit(sgaddRevCount(1));
//m_pTrigDetector->addRevCount();
if (m_pWfCtrl->IBatchModel()) {
}
}
bool Station::trigImage(const QString folder/* = QString()*/)
bool Station::trigImage()
{
if (!folder.isEmpty()) {
m_pCoreCtrl->IStopCamera(szCamKey);
m_pCoreCtrl->ICloseCamera(szCamKey);
changeImageFolder(folder);
TP_CAMERA_OPTION optCam;
m_pCoreCtrl->ICameraOptionByKey(szCamKey, optCam);
if (optCam.status != TP_CAMERA_STATUS_OPENED &&
optCam.status != TP_CAMERA_STATUS_STARTED){
if (m_pCoreCtrl->IOpenCamera(szCamKey))
{
bool b = m_pCoreCtrl->IStartCamera(szCamKey);
}
}
}
else {
if (m_pWfCtrl->IBatchModel()) {
}
}
TP_CAMERA_OPTION optCam;
m_pCoreCtrl->ICameraOptionByKey(szCamKey, optCam);
if (optCam.status != TP_CAMERA_STATUS_OPENED &&
@ -384,7 +363,6 @@ bool Station::sendResult(double angleValue)
sendFram2.data8 = data2[7];
m_pPort->enquequeData(sendFram2);
}
}
else
{

@ -31,7 +31,7 @@ public:
virtual void setCamInfo(int nId, int alg, QString uniqueName, QString showName);
virtual QVariant getVariant();
virtual void revResult();
virtual bool trigImage(const QString folder = QString());
virtual bool trigImage();
virtual bool isWorkingOk();
virtual QString currentRunningModel() const { return m_strCurrentModel; }

@ -2,9 +2,9 @@
#include "QDebug"
#include "qtimer.h"
#include "qdatetime.h"
#include "lpSysConfig.h"
CTrigDetector::CTrigDetector(QObject *parent) :QObject(parent) ,m_nMaxErrorCount(20), nTickCount(10)
CTrigDetector::CTrigDetector(QObject *parent) :QObject(parent) ,m_nMaxErrorCount(20)
{
lastTime = QDateTime::currentDateTime().toMSecsSinceEpoch();
nCount = 0;
@ -14,21 +14,13 @@ CTrigDetector::CTrigDetector(QObject *parent) :QObject(parent) ,m_nMaxErrorCount
m_nErrorTime = 2000;
m_nTimerID = -1;
m_pTimer = new QTimer(this);
m_setting = new QSettings(".\\user\\systemfile.ini", QSettings::IniFormat);
readSettingFile();
connect(m_pTimer, SIGNAL(timeout()), this, SLOT(onChecker()));
}
CTrigDetector::~CTrigDetector()
{
writeSettingFile();
stop();
delete m_pTimer;
if (m_setting){
delete m_setting;
m_setting = NULL;
}
}
void CTrigDetector::addTrigCount(int n /*= 1*/)
@ -49,17 +41,6 @@ bool CTrigDetector::start()
return true;
}
// bool CTrigDetector::restart(int nInterval /*= -1*/)
// {
// if (nInterval > 0) {
// m_nCheckInterval = nInterval;
// }
// qDebug() << "reset trig count";
// m_nReceiveCount = m_nTrigCount;
// start();
// return true;
// }
void CTrigDetector::onChecker()
{
if (m_nTrigCount < m_nReceiveCount) {
@ -122,30 +103,6 @@ bool CTrigDetector::correct()
bool CTrigDetector::filterTrig()
{
/*static QMap<CTrigDetector*, long long> s_mpLastTime;
long long dTime = QDateTime::currentDateTime().toMSecsSinceEpoch();
if (s_mpLastTime.contains(this)) {
long long lastTime = s_mpLastTime.value(this);
s_mpLastTime.take(this);
s_mpLastTime.insert(this, dTime);
long int interval = dTime - lastTime;
if (interval < 350) {
qWarning() << "trig less than interval";
if (nCount++ > nTickCount)
{
qWarning() << "correct";
nCount = 0;
correct();
return true;
}
return false;
}
}
s_mpLastTime.insert(this, dTime);
nCount = 0;
return true;*/
long long dTime = QDateTime::currentDateTime().toMSecsSinceEpoch();
long int interval = dTime - lastTime;
lastTime = dTime;
@ -153,7 +110,7 @@ bool CTrigDetector::filterTrig()
return true;
if (interval < 350) {
qWarning() << "trig less than interval";
if (nCount++ > nTickCount)
if (nCount++ > lpSysConfig::instance()->m_TrigerFilter)
{
qWarning() << "correct";
nCount = 0;
@ -166,19 +123,4 @@ bool CTrigDetector::filterTrig()
return true;
}
void CTrigDetector::readSettingFile()
{
if (m_setting){
QString m_str = "/TrigDetector/";
nTickCount = m_setting->value(m_str + "nTickFilter", 10).toInt();
}
}
void CTrigDetector::writeSettingFile()
{
if (m_setting){
QString m_str = "/TrigDetector/";
m_setting->setValue(m_str + "nTickFilter", nTickCount);
}
}

@ -11,7 +11,6 @@ public:
CTrigDetector(QObject *parent =0);
~CTrigDetector();
void setCheckInterval(int nInterval) {
m_nCheckInterval = nInterval;
}
@ -39,8 +38,6 @@ public:
bool isRunOk();
bool isWaitForTrig();
bool filterTrig();
void readSettingFile();
void writeSettingFile();
signals:
void sgErrorTrig(int);
void sgSnapImage();
@ -59,9 +56,6 @@ private:
int m_nTimerID{0};
class QTimer *m_pTimer{ nullptr };
QSettings *m_setting{ nullptr };
int nTickCount{0};
int nCount{0};
long long lastTime{0};
};

@ -138,10 +138,8 @@ bool WfColossus::selModel(int nIndex, QString strModel)
}
m_CurRunTaskName[nIndex] = strModel;
pSolutions->SetRunTask(nIndex, strName);
QSettings setTaskInfo("TaskInfo.ini", QSettings::IniFormat);
setTaskInfo.setValue("StationNum", m_CurRunTaskName.size());
for (QMap<int, QString>::iterator it = m_CurRunTaskName.begin(); it != m_CurRunTaskName.end(); ++it){
@ -149,39 +147,6 @@ bool WfColossus::selModel(int nIndex, QString strModel)
setTaskInfo.setValue(QString("Station_%1").arg(it.key()), *it);
}
emit sgSetModel(nIndex, strModel);
// IDetectorTask *pTasks[c_nMaxTask];
// int n = pSolutions->EnumTask(pTasks, c_nMaxTask);
// //qDebug() << "all task count = " << n;
// bool bChanged = false;
// for (int i = 0; i < n; i++) {
// IDetectorTask* pTask = pTasks[i];
// PLP_DETECTOR_TASK tInfo = pTask->GetTaskInfo();
// QString str = tInfo->strName;
// QStringList l = splitBySymbol(str);
// if (l.size() != 2) {
// continue;
// }
// if (l.first().toInt() == nIndex) {
// if (tInfo->bIsRun == true && tInfo->strName != strName) {
// bChanged = true;
// }
// pTask->GetTaskInfo()->bIsRun = false;
// if (l.last() == strModel) {
// pTask->GetTaskInfo()->bIsRun = true;
// }
// }
// }
// if (bChanged == true) {
// int a = 0;
// int nID = ptrSolMgr()->GetRunSolution()->GetID();
// if (nID == 2)
// int b = 0;
// qDebug() << " change models ID:" << nID;
// ptrSolMgr()->SetRunSolution(nID);
// }
//if ()
/*m_IsModify = true;*/
return true;
}
@ -353,25 +318,6 @@ class IDetectorSolution * WfColossus::ptrRunSolution() const
return NULL;
}
// bool WfColossus::getOnlineModel() const
// {
// IDetectorSystemInfo * p;
// m_pDetEngine->GetDataInterface(SYSTEMINFO, (void**)&p);
// if (p) {
// return p->GetValue("OnlineMode").toBool();
// }
// return false;
// }
//
// void WfColossus::setOnlineModel(bool b)
// {
// IDetectorSystemInfo * p;
// m_pDetEngine->GetDataInterface(SYSTEMINFO, (void**)&p);
// if (p) {
// p->SetValue("OnlineMode", b);
// }
// }
bool WfColossus::getBatchModel() const
{
IDetectorSystemInfo * p;

@ -8,6 +8,7 @@
#include "WfColossus.h"
#include "WorkChecker.h"
#include "QZkJsonParser.h"
#include "lpSysConfig.h"
#pragma execution_character_set("utf-8")
CWfCtrl::CWfCtrl(ICoreCtrl* p1, WfColossus* p3)
@ -17,8 +18,7 @@ CWfCtrl::CWfCtrl(ICoreCtrl* p1, WfColossus* p3)
m_pConnectChecker = new WorkChecker;
m_pCoreCtrl = p1;
m_pColossus = p3;
m_setting = new QSettings(QCoreApplication::applicationDirPath()+"\\user\\systemfile.ini", QSettings::IniFormat);
readSettingFile();
QString path;
m_pWfDb = new QSqliteWheelHubWf(path + "//user//");
initStation();
@ -26,31 +26,29 @@ CWfCtrl::CWfCtrl(ICoreCtrl* p1, WfColossus* p3)
m_nOnlineMode = systemIniFile.value("OnlineMode").toBool();
{
QString strErrorPath = QCoreApplication::applicationDirPath()+"/errorImage/";
// QDiskCleanThread *pDCleanThread = new QDiskCleanThread;
// pDCleanThread->setUseFlag(nCheckThreadEable);
// pDCleanThread->setDays(nCheckImgFileDays);
// pDCleanThread->SetImgStorageFolder(strErrorPath);
// pDCleanThread->setMiniSize(nMinSpaceSize);
// pDCleanThread->start();
// m_pDCThreadList.append(pDCleanThread);
//
//
// QString strRltImgPath = QCoreApplication::applicationDirPath() + "/DBFiles/Images/";
// QDiskCleanThread *pCleanDir = new QDiskCleanThread;
// pCleanDir->setModel(CleanDir);
// pCleanDir->setSleepS(3600);
// pCleanDir->setUseFlag(nCheckThreadEable);
// pCleanDir->setDays(nCheckDirDays);
// pCleanDir->SetImgStorageFolder(strRltImgPath);
// pCleanDir->setMiniSize(nMinSpaceSize);
// pCleanDir->start();
// m_pDCThreadList.append(pCleanDir);
QDiskCleanThread *pDCleanThread = new QDiskCleanThread;
pDCleanThread->setUseFlag(lpSysConfig::instance()->m_CheckEnable);
pDCleanThread->setDays(lpSysConfig::instance()->m_CheckFileDays);
pDCleanThread->SetImgStorageFolder(strErrorPath);
pDCleanThread->setMiniSize(lpSysConfig::instance()->m_MinSpaceSizeG);
pDCleanThread->start();
m_pDCThreadList.append(pDCleanThread);
QString strRltImgPath = QCoreApplication::applicationDirPath() + "/DBFiles/Images/";
QDiskCleanThread *pCleanDir = new QDiskCleanThread;
pCleanDir->setModel(CleanDir);
pCleanDir->setSleepS(3600);
pCleanDir->setUseFlag(lpSysConfig::instance()->m_CheckEnable);
pCleanDir->setDays(lpSysConfig::instance()->m_CheckFileDays);
pCleanDir->SetImgStorageFolder(strRltImgPath);
pCleanDir->setMiniSize(lpSysConfig::instance()->m_MinSpaceSizeG);
pCleanDir->start();
m_pDCThreadList.append(pCleanDir);
}
}
CWfCtrl::~CWfCtrl()
{
writeSettingFile();
{//此处线程需要修改 响应时间过慢
if (m_pDCThreadList.size() > 0){
for (int nIndex = 0; nIndex < m_pDCThreadList.size(); nIndex++)
{
@ -66,7 +64,6 @@ CWfCtrl::~CWfCtrl()
}
}
m_pDCThreadList.clear();
//m_pColossus->setOnlineModel(m_nOnlineMode);
if (m_pConnectChecker)
{
delete m_pConnectChecker;
@ -82,10 +79,6 @@ CWfCtrl::~CWfCtrl()
qDeleteAll(m_mpModels);
m_mpModels.clear();
qDebug() << "~CWfCtrl";
if (m_setting){
delete m_setting;
m_setting = NULL;
}
}
void CWfCtrl::ISetOnlineModel(bool b)
@ -161,12 +154,10 @@ bool CWfCtrl::initStation()
if (camOpt.deviceType != 100)//虚拟相机模式下不开启定时删除图像的模式
{
QDiskCleanThread *pDCleanThread = new QDiskCleanThread;
pDCleanThread->setUseFlag(nCheckThreadEable);
pDCleanThread->setDays(nCheckImgFileDays);
//QString strErrorPath = QCoreApplication::applicationDirPath() + "//errorImage//";
//pDCleanThread->SetImgStorageFolder(strErrorPath);
pDCleanThread->setUseFlag(lpSysConfig::instance()->m_CheckEnable);
pDCleanThread->setDays(lpSysConfig::instance()->m_CheckFileDays);
pDCleanThread->SetImgStorageFolder(camOpt.folder);
pDCleanThread->setMiniSize(nMinSpaceSize);
pDCleanThread->setMiniSize(lpSysConfig::instance()->m_MinSpaceSizeG);
pDCleanThread->start();
m_pDCThreadList.append(pDCleanThread);
}
@ -263,7 +254,7 @@ bool CWfCtrl::ISelModel(int nStation, QString strModel)
pStation->setCurrentModel(strModel);
if (m_pColossus) {
//需要测试
m_pColossus->selModel(nStation, strModel/*pStation->currentRunningModel()*/);
m_pColossus->selModel(nStation, strModel);
//m_pColossus->ReSetModifyState();
}
}
@ -339,52 +330,3 @@ bool CWfCtrl::IUpdateModelInfo()
}
return true;
}
QString CWfCtrl::IGetCommName()
{
return "null com";
}
bool CWfCtrl::IGetUserInfo(QString& user, int& level)
{
// if (!m_pMainBack) {
// return false;
// }
// return m_pMainBack->IGetUserInfo(user, level);
if (m_strUserName.isEmpty())
user = QObject::tr("未登录");
else
user = m_strUserName;
level = m_nLevel;
return true;
}
void CWfCtrl::ISetUserInfo(QString& user, int& level)
{
m_strUserName = user;
m_nLevel = level;
}
void CWfCtrl::readSettingFile()
{
if (m_setting){
QString m_str = "/CheckThread/";
nCheckImgFileDays = m_setting->value(m_str + "days", 7).toInt();
nCheckDirDays = m_setting->value(m_str + "days_dir", 30).toInt();
nCheckThreadEable = m_setting->value(m_str + "IsUse", true).toBool();
nMinSpaceSize = m_setting->value(m_str + "spacesize", 10).toInt();
}
}
void CWfCtrl::writeSettingFile()
{
if (m_setting){
QString m_str = "/CheckThread/";
m_setting->setValue(m_str + "days", nCheckImgFileDays);
m_setting->setValue(m_str + "days_dir", nCheckDirDays);
m_setting->setValue(m_str + "IsUse", nCheckThreadEable);
m_setting->setValue(m_str + "spacesize", nMinSpaceSize);
}
}

@ -21,9 +21,6 @@ public:
virtual void ISetOnlineModel(bool);
virtual bool IBatchModel();
virtual bool IConnectStatus();
virtual QString IGetCommName();
virtual void ISetUserInfo(QString& user, int& level);
virtual bool IGetUserInfo(QString& user, int& level);
virtual void registerConnect();
virtual QStringList IGetStationKeys();
virtual IStation* IGetStationById(int);
@ -44,26 +41,15 @@ private:
bool initModel();
bool initCurrentModel();
static QString genModelName(int nIndex, QString strModel);
void readSettingFile();
void writeSettingFile();
private:
bool m_nOnlineMode{ false };
class WorkChecker *m_pConnectChecker{ nullptr };
QMap<QString, IStation*> m_pStationMap;
QMap<QString, WfModel*> m_mpModels;
ICoreCtrl *m_pCoreCtrl{ nullptr };
IMainCallback *m_pMainBack{ nullptr };
WfColossus *m_pColossus{ nullptr };
class QSqliteWheelHubWf *m_pWfDb{ nullptr };
QList<QDiskCleanThread*> m_pDCThreadList;
QSettings *m_setting{ nullptr };
int nCheckImgFileDays;//检测保存图片超过的时间bmp格式的图片 由算法自动保存的2~5M大小
int nCheckDirDays;//检测保存结果图片文件夹超过的时间(保存的是缩略图 100多k大小的图片
bool nCheckThreadEable;
int nMinSpaceSize;
QString m_strUserName;
int m_nLevel{ 0 };
};
#endif

@ -0,0 +1,54 @@
#ifndef _H_LP_SINGLETON_BASE_H_
#define _H_LP_SINGLETON_BASE_H_
#include <mutex>
#include <atomic>
template<class T>
class lp_singleton_base
{
public:
static T* instance()
{
T *sin = s_this.load(std::memory_order_acquire);
if (!sin) {
std::lock_guard<std::mutex> locker(s_mutex);
sin = s_this.load(std::memory_order_relaxed);
if (!sin) {
sin = new T;
s_this.store(sin, std::memory_order_release);
}
}
return sin;
}
static void uninstance()
{
T *sin = s_this.load(std::memory_order_relaxed);
if (sin) {
std::lock_guard<std::mutex> locker(s_mutex);
delete sin;
sin = nullptr;
}
}
protected:
lp_singleton_base() = default;
virtual ~lp_singleton_base() = default;
private:
lp_singleton_base(const T&) = delete;
T& operator=(const T&) = delete;
static std::atomic<T*> s_this;
static std::mutex s_mutex;
};
template<class T>
std::atomic<T*> lp_singleton_base<T>::s_this;
template<class T>
std::mutex lp_singleton_base<T>::s_mutex;
#endif

@ -8,7 +8,8 @@
#include <QLibrary>
#include "quserinfo_global.h"
#include "Serialport_global.h"
#include "QProcess"
#include <QProcess>
#include "lpSysConfig.h"
#define LEAPER_LOGO ":/leaper/Resource/app.png"
#define DELETE_POINTER(p) if (p) {delete p; p = NULL;}
@ -21,8 +22,11 @@ CMainWin::CMainWin(QWidget *parent)
ui.setupUi(this);
lpSysLog::instance()->Init();
readConfig();
lpSysConfig::instance()->readConfig();
lpSysConfig::instance()->writeConfig();
SetLanguage(m_strCurLanguage);
SYSLOG_STATUS << "系统启动";
{
QString strPath = QCoreApplication::applicationDirPath();
@ -31,9 +35,6 @@ CMainWin::CMainWin(QWidget *parent)
dbDir.mkpath(DBFilePath);
m_db = new StationDB(DBFilePath + "\\AntMan.db");
m_db->InitDatabase();
QSettings setting(strPath + "\\user\\systemfile.ini", QSettings::IniFormat);
connect(this, SIGNAL(sgShowLog(int, QString)), this, SLOT(onShowLog(int, QString)));
SYSLOG_STATUS << "ϵͳÆô¶¯";
}
m_pCameraTrig = new AutoTrigger;
@ -84,13 +85,13 @@ CMainWin::CMainWin(QWidget *parent)
m_pSerialPort->loadAnalysefunc(this, &CMainWin::onAppanalysis);
//关闭框架的串口使用
QString strDefaultPort = "COM6";
bool bOpen = m_pSerialPort->OpenCom(strDefaultPort, QString::number(115200));
QString strDefaultPort = lpSysConfig::instance()->m_ComName;
int baut = lpSysConfig::instance()->m_Baut;
bool bOpen = m_pSerialPort->OpenCom(strDefaultPort, QString::number(baut));
if (bOpen == false)
{
QMessageBox infobox(QMessageBox::Information, QString(QObject::tr("Ìáʾ")), QString("error %1 %2 ").arg(strDefaultPort).arg(115200), QMessageBox::Yes | QMessageBox::No, NULL);
infobox.setWindowIcon(QIcon(":/image/leaper"));
QMessageBox infobox(QMessageBox::Information, QString(QObject::tr("提示")), QString("Com %1 %2 open failed").arg(strDefaultPort).arg(baut), QMessageBox::Yes | QMessageBox::No, NULL);
infobox.setWindowIcon(QIcon(LEAPER_LOGO));
infobox.exec();
}
connect(&m_HeartBit, SIGNAL(timeout()), this, SLOT(onHeardBit()));
@ -98,6 +99,7 @@ CMainWin::CMainWin(QWidget *parent)
}
}
//工具栏按钮事件绑定
connect(ui.actionSetting, SIGNAL(triggered()), this, SLOT(onActionClicked()));
connect(ui.actionManage, SIGNAL(triggered()), this, SLOT(onActionClicked()));
connect(ui.actionTest, SIGNAL(triggered()), this, SLOT(onActionClicked()));
@ -107,10 +109,12 @@ CMainWin::CMainWin(QWidget *parent)
connect(ui.main_Login_action, SIGNAL(triggered()), this, SLOT(onActionClicked()));
connect(ui.main_action_userManager, SIGNAL(triggered()), this, SLOT(onActionClicked()));
//图像结果展示
connect(this, SIGNAL(sgShowImg(int, QImage)), this, SLOT(onShowImage(int, QImage)));
connect(this, SIGNAL(sgSelModel(int, QString)), this, SLOT(onSelModel(int, QString)));
m_TimerID_Status = startTimer(1000);
connect(this, SIGNAL(sgShowLog(int, QString)), this, SLOT(onShowLog(int, QString)));
m_TimerID_Status = startTimer(1000);
ui.main_action_userManager->setVisible(false);
ui.action->setVisible(false);
@ -196,7 +200,6 @@ void CMainWin::IVariantMapToUI(emTpUiDataType dataType, const QString& camKey, c
SYSLOG_STATUS << QString("◎工位%1收到算法结果,当前型号为[%2],发送角度为:%3").arg(pStation->stationId()).arg(pStation->currentRunningModel()).arg(dAngle);
emit sgShowImg(pStation->stationId(),image);
emit sgShowLog(pStation->stationId(), strResult);
//emit pStation->sgPrint2Window(strResult);
pStation->revResult();
QString str2 = pStation->currentRunningModel();
@ -786,12 +789,6 @@ void CMainWin::rmTranslator()
}
}
void CMainWin::readConfig()
{
QSettings setting("language.ini", QSettings::IniFormat);
m_strCurLanguage = setting.value("language", "Chinese").toString();
}
void CMainWin::writeConfig()
{
QSettings setting("language.ini", QSettings::IniFormat);
@ -879,12 +876,8 @@ Q_SLOT void CMainWin::onChangeUI(QString strUsr, int nLevel)
}
Q_SLOT void CMainWin::onLogInOut(QString strName, int level, int state)
{
if (m_pWfCtrl) {
m_pWfCtrl->ISetUserInfo(strName, level);
onChangeUI(strName, level);
m_strUserName = strName;
}
if (state == 0) {
ui.main_Login_action->setText(QObject::tr("注 销"));
}

@ -131,6 +131,7 @@ private:
QAboutUI m_aboutWid;
QString m_strUserName;
QString m_strComName;
};
#endif

@ -6,7 +6,7 @@
#include "QPLCIndexUI.h"
#include "WfModel.h"
#include "QAddModeUI.h"
#define LP_WF_PLC_MAX_INDEX 100
#pragma execution_character_set("utf-8")
QModelMangerUI::QModelMangerUI(QWidget *parent)
: QWidget(parent)
@ -88,10 +88,10 @@ Q_SLOT void QModelMangerUI::onButtonClicked()
if (QMessageBox::Yes == msgBox.exec()) {
bool b = m_pCtrl->IDeleteModel(currentTab(), strModel);
if (!b) {
ui.mLblModelState->setText(tr("delete %1 failed!").arg(strModel));
ui.mLblModelState->setText(QObject::tr("delete %1 failed!").arg(strModel));
}
else {
ui.mLblModelState->setText(tr("delete %1 successful!").arg(strModel));
ui.mLblModelState->setText(QObject::tr("delete %1 successful!").arg(strModel));
}
}
}
@ -126,10 +126,34 @@ Q_SLOT bool QModelMangerUI::OnCellDoubleClicked(const QModelIndex &index)
if (dlg.exec() == QDialog::Accepted)
{
int nIndex = dlg.getModelIndex();
pModel->nIndex = nIndex;
QStringList strList = pStation->modelList();
bool bExist = false;
QString strExistModel;
foreach(QString var, strList) {
if (var == strModel)
continue;
if (nIndex != LP_WF_PLC_MAX_INDEX && nIndex == pStation->wfModel(var)->nIndex) {
bExist = true;
strExistModel = var;
break;
}
}
if (bExist == true)
{
QMessageBox msgWarning(QMessageBox::Warning, QObject::tr("警告"), strName + QObject::tr("索引修改失败,与%1索引值冲突").arg(strExistModel), QMessageBox::Yes);
msgWarning.setWindowIcon(QIcon(":/leaper/Resource/app.png"));
msgWarning.setButtonText(QMessageBox::Yes, QObject::tr("确认"));
msgWarning.exec();
ui.mLblModelState->setText(QObject::tr(" %1 的 PLC索引值修改失败").arg(strModel));
return false;
}
pModel->nIndex = nIndex;
if (m_pCtrl)
m_pCtrl->ISaveModel(stationID, strModel);
ui.mLblModelState->setText(QObject::tr(" %1 的 PLC索引值修改成功").arg(strModel));
}
}
return true;
@ -176,11 +200,7 @@ void QModelMangerUI::showEvent(QShowEvent *event)
void QModelMangerUI::closeEvent(QCloseEvent *event)
{
// qDebug() << "start save solution";
// if (m_pColossus && m_pWfCtrl) {
// m_pColossus->saveTask(m_pCtrl->IGetModelInfos());
// }
// qDebug() << "finish save solution";
}
void QModelMangerUI::onInitModelList(IWfCtrl *pCtrl)

@ -136,6 +136,7 @@
<ClCompile Include="..\..\src\lpMain\WfCtrl.cpp" />
<ClCompile Include="CMainWin.cpp" />
<ClCompile Include="lpMain.cpp" />
<ClCompile Include="lpSysConfig.cpp" />
<ClCompile Include="QAboutUI.cpp" />
<ClCompile Include="QAddModeUI.cpp" />
<ClCompile Include="QModelMangerUI.cpp" />
@ -158,6 +159,10 @@
<QtUic Include="QTestModeWid.ui" />
</ItemGroup>
<ItemGroup>
<QtMoc Include="lpSysConfig.h">
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtSerialBus;$(QTDIR)\include\QtSerialPort;$(QTDIR)\include\QtSql;.\..\..\3part\SerialPortTool\include;.\..\..\src\lpMain;.\..\..\src\lpMain\algela;.\..\..\src\lpMain\QDiskCleanThread;.\..\..\src\lpMain\sqliteDB;.\..\..\src\lpMain\UI;.\..\..\3part\opencv3.4.1\include;.\..\..\3part\opencv3.4.1\include\opencv;.\..\..\3part\opencv3.4.1\include\opencv2;.\..\..\3part\libzkq\include;.\..\..\3part\lpSyslog\inc;.\..\..\3part\customgui\include;.\..\..\src\userCtrl;.\..\..\src\lpMain\CoreCtrl;.\..\..\src\lpBase</IncludePath>
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtSerialBus;$(QTDIR)\include\QtSerialPort;$(QTDIR)\include\QtSql;.\..\..\3part\SerialPortTool\include;.\..\..\src\lpMain;.\..\..\src\lpMain\algela;.\..\..\src\lpMain\QDiskCleanThread;.\..\..\src\lpMain\sqliteDB;.\..\..\src\lpMain\UI;.\..\..\3part\opencv3.4.1\include;.\..\..\3part\opencv3.4.1\include\opencv;.\..\..\3part\opencv3.4.1\include\opencv2;.\..\..\3part\libzkq\include;.\..\..\3part\lpSyslog\inc;.\..\..\3part\customgui\include;.\..\..\src\userCtrl;.\..\..\src\lpMain\CoreCtrl;.\..\..\src\lpBase</IncludePath>
</QtMoc>
<QtMoc Include="QAddModeUI.h">
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtSerialBus;$(QTDIR)\include\QtSerialPort;$(QTDIR)\include\QtSql;.\..\..\3part\SerialPortTool\include;.\..\..\src\lpMain;.\..\..\src\lpMain\algela;.\..\..\src\lpMain\QDiskCleanThread;.\..\..\src\lpMain\sqliteDB;.\..\..\src\lpMain\UI;.\..\..\3part\opencv3.4.1\include;.\..\..\3part\opencv3.4.1\include\opencv;.\..\..\3part\opencv3.4.1\include\opencv2;.\..\..\3part\libzkq\include;.\..\..\3part\lpSyslog\inc;.\..\..\3part\customgui\include;.\..\..\src\userCtrl;.\..\..\src\lpMain\CoreCtrl;.\..\..\src\lpBase</IncludePath>
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtSerialBus;$(QTDIR)\include\QtSerialPort;$(QTDIR)\include\QtSql</IncludePath>
@ -190,6 +195,7 @@
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtSerialBus;$(QTDIR)\include\QtSerialPort;$(QTDIR)\include\QtSql;.\..\..\3part\SerialPortTool\include;.\..\..\src\lpMain;.\..\..\src\lpMain\algela;.\..\..\src\lpMain\QDiskCleanThread;.\..\..\src\lpMain\sqliteDB;.\..\..\src\lpMain\UI;.\..\..\3part\opencv3.4.1\include;.\..\..\3part\opencv3.4.1\include\opencv;.\..\..\3part\opencv3.4.1\include\opencv2;.\..\..\3part\libzkq\include;.\..\..\3part\lpSyslog\inc;.\..\..\3part\customgui\include;.\..\..\src\userCtrl;.\..\..\src\lpMain\CoreCtrl;.\..\..\src\lpBase</IncludePath>
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtSerialBus;$(QTDIR)\include\QtSerialPort;$(QTDIR)\include\QtSql</IncludePath>
</QtMoc>
<ClInclude Include="..\..\src\lpMain\lp_singleton_base.h" />
<ClInclude Include="..\..\src\lpMain\WfModel.h" />
<QtMoc Include="..\..\src\lpMain\Station.h">
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtSerialBus;$(QTDIR)\include\QtSerialPort;$(QTDIR)\include\QtSql;.\..\..\3part\SerialPortTool\include;.\..\..\src\lpMain;.\..\..\src\lpMain\algela;.\..\..\src\lpMain\QDiskCleanThread;.\..\..\src\lpMain\sqliteDB;.\..\..\src\lpMain\UI;.\..\..\3part\opencv3.4.1\include;.\..\..\3part\opencv3.4.1\include\opencv;.\..\..\3part\opencv3.4.1\include\opencv2;.\..\..\3part\libzkq\include;.\..\..\3part\lpSyslog\inc;.\..\..\3part\customgui\include;.\..\..\src\userCtrl;.\..\..\src\lpMain\CoreCtrl;.\..\..\src\lpBase</IncludePath>

@ -41,9 +41,6 @@
<Filter Include="lpMain\db">
<UniqueIdentifier>{d4ee84cc-3ae8-4d69-b15a-24ed868a2f7a}</UniqueIdentifier>
</Filter>
<Filter Include="lpMain\ui">
<UniqueIdentifier>{aeffe6ee-5f98-4bbf-b0fc-bada2f76bf5d}</UniqueIdentifier>
</Filter>
<Filter Include="CoreCtrl">
<UniqueIdentifier>{460a87f9-e992-4ca0-8545-eea6c2194b2b}</UniqueIdentifier>
</Filter>
@ -130,6 +127,9 @@
<ClCompile Include="QAddModeUI.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="lpSysConfig.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<QtMoc Include="IMainWidget.h">
@ -207,6 +207,9 @@
<QtMoc Include="QAddModeUI.h">
<Filter>Header Files</Filter>
</QtMoc>
<QtMoc Include="lpSysConfig.h">
<Filter>Header Files</Filter>
</QtMoc>
</ItemGroup>
<ItemGroup>
<QtUic Include="CMainWin.ui">
@ -253,6 +256,9 @@
<ClInclude Include="..\..\src\lpMain\WfModel.h">
<Filter>lpMain</Filter>
</ClInclude>
<ClInclude Include="..\..\src\lpMain\lp_singleton_base.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Image Include="..\..\src\lpMain\wanfeng.png">

@ -0,0 +1,43 @@
#include "lpSysConfig.h"
#include <QSettings>
#include <QApplication>
lpSysConfig::lpSysConfig(QObject *parent)
: QObject(parent)
{
m_AppPath = QApplication::applicationDirPath();
m_CfgPath = m_AppPath + QString("//user//systemConfig.ini");
}
lpSysConfig::~lpSysConfig()
{
}
void lpSysConfig::readConfig()
{
QSettings setting(m_CfgPath, QSettings::IniFormat);
m_CurLanguage = setting.value("language/select", "Chinese").toString();
m_ComName = setting.value("COM/Port", "COM3").toString();
m_Baut = setting.value("COM/Baute", 115200).toInt();
m_CheckFileDays = setting.value("CheckThread/days", 7).toInt();
m_CheckDirDays = setting.value("CheckThread/days_dir", 30).toInt();
m_CheckEnable = setting.value("CheckThread/Enable", false).toBool();
m_MinSpaceSizeG = setting.value("CheckThread/spacesize", 10).toInt();//G
m_TrigerFilter = setting.value("TrigDetector/FilterTime", 10).toInt();
}
void lpSysConfig::writeConfig()
{
QSettings setting(m_CfgPath, QSettings::IniFormat);
setting.setValue("language/select", m_CurLanguage);
setting.setValue("COM/Port", m_ComName);
setting.setValue("COM/Baute", m_Baut);
setting.setValue("CheckThread/days", m_CheckFileDays);
setting.setValue("CheckThread/days_dir", m_CheckDirDays);
setting.setValue("CheckThread/Enable", m_CheckEnable);
setting.setValue("CheckThread/spacesize", m_MinSpaceSizeG);//G
setting.setValue("TrigDetector/FilterTime", m_TrigerFilter);
}

@ -0,0 +1,34 @@
#ifndef _H_LPSYSCONFIG_H_
#define _H_LPSYSCONFIG_H_
#include <QObject>
#include "lp_singleton_base.h"
class lpSysConfig : public QObject,public lp_singleton_base<lpSysConfig>
{
Q_OBJECT
public:
lpSysConfig(QObject *parent = nullptr);
~lpSysConfig();
void readConfig();
void writeConfig();
public:
QString m_ComName{"COM3"};
int m_Baut{ 115200 };
QString m_CurLanguage{"Chinese"};//中英翻译语言
QString m_AppPath;//应用程序根目录
int m_CheckFileDays{ 7 };//检测保存图片超过的时间bmp格式的图片 由算法自动保存的2~5M大小
int m_CheckDirDays{ 30 };//检测保存结果图片文件夹超过的时间(保存的是缩略图 100多k大小的图片
bool m_CheckEnable{ false };
int m_MinSpaceSizeG{ 10 };//G
int m_TrigerFilter{ 10 };
private:
QString m_CfgPath;
};
#endif

@ -459,7 +459,8 @@ double tempScoreShoot(Mat &_img, Mat &template_img, detectMode mode)
return 0;
}
}
qDebug() << "end tempScoreShoot";
return 0;
}
//template<typename _Point>
//double pointDis(const _Point& i, const _Point& j)

Loading…
Cancel
Save