From c431f69cdc8693a56ee3129ad9771dfbb38fb511 Mon Sep 17 00:00:00 2001 From: zara Date: Mon, 28 Oct 2024 09:42:33 +0800 Subject: [PATCH] 1028 --- CMakeLists.txt | 12 ++--- mainwindow.cpp | 49 +++++++++++++++-- mainwindow.h | 2 + mainwindow.ui | 141 ++++++++++++++++++++++++++----------------------- menu1.cpp | 84 ++++++++++++++++++++++++++++- menu1.h | 11 +++- menu1.ui | 133 ++++++++++++++++++++++++++++------------------ multipoint.cpp | 20 +++++++ usbcontrol.cpp | 37 ++++++++++++- usbcontrol.h | 8 +++ usbthread.cpp | 11 ++++ usbthread.h | 7 +++ 12 files changed, 381 insertions(+), 134 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a36e1c2..8388b07 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.5) -set(PROJECT_VERSION 1.4.2.17) +set(PROJECT_VERSION 1.4.2.19) add_definitions(-DProjectVersion=\"${PROJECT_VERSION}\") project(zxrcClient VERSION ${PROJECT_VERSION} LANGUAGES CXX) @@ -62,8 +62,8 @@ set(LIBS -find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets) -find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets) +find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets SerialPort) +find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets SerialPort) find_package(QFluentWidgets REQUIRED) set(PROJECT_SOURCES @@ -94,7 +94,7 @@ set(PROJECT_SOURCES datathread.cpp datathread.h qt5app.rc.in - ${CMAKE_CURRENT_BINARY_DIR}/qt5app.rc +# ${CMAKE_CURRENT_BINARY_DIR}/qt5app.rc multipoint.cpp multipoint.h idpath.cpp @@ -122,7 +122,7 @@ set(PROJECT_SOURCES add_executable (zxrcClientSA WIN32 ${PROJECT_SOURCES} ) target_include_directories (zxrcClientSA PRIVATE ${INCLUDE_DIRS}) target_link_directories (zxrcClientSA PRIVATE ${LIB_DIRS}) -target_link_libraries (zxrcClientSA PRIVATE Qt${QT_VERSION_MAJOR}::Widgets) +target_link_libraries (zxrcClientSA PRIVATE Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::SerialPort) target_link_libraries (zxrcClientSA PRIVATE QFluentWidgets::Widgets ${LIBS}) target_link_libraries (zxrcClientSA PRIVATE ${OpenCV_LIBS}) target_compile_definitions (zxrcClientSA PRIVATE CLIENT=0) @@ -156,7 +156,7 @@ set(LOCALALGO add_executable (zxrcClientPC WIN32 ${LOCALALGO} ${PROJECT_SOURCES}) target_include_directories (zxrcClientPC PRIVATE ${INCLUDE_DIRS}) target_link_directories (zxrcClientPC PRIVATE ${LIB_DIRS}) -target_link_libraries (zxrcClientPC PRIVATE Qt${QT_VERSION_MAJOR}::Widgets) +target_link_libraries (zxrcClientPC PRIVATE Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::SerialPort) target_link_libraries (zxrcClientPC PRIVATE QFluentWidgets::Widgets ${LIBS}) target_link_libraries (zxrcClientPC PRIVATE ${OpenCV_LIBS}) target_compile_definitions (zxrcClientPC PRIVATE CLIENT=2) diff --git a/mainwindow.cpp b/mainwindow.cpp index 8533731..7de49c1 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -97,6 +97,7 @@ void MainWindow::initUI() ui->toolBar->addWidget(ui->spinBox); ui->toolBar->addWidget(ui->label_3); ui->toolBar->addWidget(ui->spinBox_2); + ui->toolBar->addWidget(ui->pushButton_13); m1 = new menu1(); @@ -191,6 +192,7 @@ void MainWindow::initConnect() connect(m1,SIGNAL(signalsetGPOL(int)),ucontrol,SLOT(setGPOL(int))); connect(m1,SIGNAL(signalsetIT(double)),ucontrol,SLOT(setIT(double))); + connect(m1,SIGNAL(signalsetspname(QString)),ucontrol,SLOT(slotsetspname(QString))); connect(m1,&menu1::signalsetIT,[this](double it){ this->d_it = it; @@ -239,6 +241,7 @@ void MainWindow::initConnect() connect(m1,SIGNAL(signalonepoint()),ucontrol,SLOT(onepoint())); connect(m1,SIGNAL(signalsaveb()),ucontrol,SLOT(saveb())); connect(m1,SIGNAL(signalopenb(bool)),ucontrol,SLOT(openb(bool))); + connect(m1,SIGNAL(signalsetge(bool)),ucontrol,SLOT(setge(bool))); connect(m2,SIGNAL(signalsag(bool)),ucontrol,SLOT(setsag(bool))); @@ -246,7 +249,6 @@ void MainWindow::initConnect() connect(m2,SIGNAL(signalsetkf(int)),ucontrol,SLOT(setkf(int))); connect(m2,SIGNAL(signalsethist(int)),ucontrol,SLOT(sethist(int))); - #elif CLIENT==2 // connect(usb,SIGNAL(signalGetImage(cv::Mat)),m_tp,SLOT(slotprocimg(cv::Mat))); // connect(m_tp,SIGNAL(signalsendimg(cv::Mat)),m_avg,SLOT(slotprocimg(cv::Mat))); @@ -574,8 +576,8 @@ void MainWindow::on_pushButton_2_clicked() #if CLIENT == 0 || CLIENT == 1 ucontrol->setIT(5.0); ucontrol->setGPOL(800); - ucontrol->openk(true); - ucontrol->openb(true); +// ucontrol->openk(true); +// ucontrol->openb(true); @@ -881,7 +883,7 @@ void MainWindow::slotShowImage(cv::Mat img) - if(b_stat &(!b_fullscreen)){ + if(b_stat &(!b_fullscreen) &(!ui->pushButton_13->isChecked())){ QPainter p(&pix); QPen pen = p.pen(); QPen npen(QColor(0xad,0x14,0x53)); @@ -896,8 +898,27 @@ void MainWindow::slotShowImage(cv::Mat img) if(b_fullscreen) ui->imagelabel->setPixmap(pix.scaled(ui->imagelabel->size(),Qt::KeepAspectRatio,Qt::SmoothTransformation)); else - ui->imagelabel->setPixmap(pix); + { + if(ui->pushButton_13->isChecked()){ + if(ui->scrollArea->size() - QSize(20,20) != ui->imagelabel->size()){ + ui->imagelabel->resize(ui->scrollArea->size() - QSize(30,30)); + ui->imagelabel->move(10,10); + ui->imagelabel->setAlignment(Qt::AlignLeft|Qt::AlignTop); + + } + ui->imagelabel->setPixmap(pix.scaled(ui->scrollArea->size() - QSize(30,30),Qt::KeepAspectRatio,Qt::SmoothTransformation)); + } + else{ + if(ui->imagelabel->size() != QSize(rows,cols)){ + ui->imagelabel->resize(rows,cols); + ui->imagelabel->move(10,10); + ui->imagelabel->setAlignment(Qt::AlignLeft|Qt::AlignTop); + + } + ui->imagelabel->setPixmap(pix); + } + } } void MainWindow::slotlogtext(QString msg) @@ -1028,7 +1049,11 @@ void MainWindow::on_spinBox_valueChanged(int arg1) rows = arg1; ui->scrollAreaWidgetContents->setMinimumHeight(rows+20); ui->imagelabel->resize(cols,rows); + ui->imagelabel->move(10,10); + ui->imagelabel->setAlignment(Qt::AlignLeft|Qt::AlignTop); + qDebug()<<__LINE__<scrollArea->width()<<" "<scrollArea->height(); + qDebug()<imagelabel->width()<<" "<imagelabel->height(); #if CLIENT==2 m_mp->setparas(rows,cols); @@ -1045,6 +1070,9 @@ void MainWindow::on_spinBox_2_valueChanged(int arg1) cols = arg1; ui->scrollAreaWidgetContents->setMinimumWidth(cols+20); ui->imagelabel->resize(cols,rows); + ui->imagelabel->move(10,10); + ui->imagelabel->setAlignment(Qt::AlignLeft|Qt::AlignTop); + #if CLIENT == 2 m_mp->setparas(rows,cols); #endif @@ -1190,3 +1218,14 @@ void MainWindow::on_pushButton_12_clicked() } } + +void MainWindow::on_pushButton_13_clicked() +{ + if(ui->pushButton_13->isChecked()){ + ui->pushButton_13->setText(u8"适应屏幕"); + } + else{ + ui->pushButton_13->setText(u8"原始大小"); + } +} + diff --git a/mainwindow.h b/mainwindow.h index 92b8748..d2060d9 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -98,6 +98,8 @@ private slots: void on_pushButton_12_clicked(); + void on_pushButton_13_clicked(); + private: void initIns(); void initUI(); diff --git a/mainwindow.ui b/mainwindow.ui index 586c699..a5f3b52 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -15,6 +15,55 @@ + + + + 1 + + + 10000 + + + 512 + + + + + + + 分辨率 + + + 10 + + + + + + + 开始传输 + + + + + + + + 640x512 + + + + + 1280x1024 + + + + + 自定义 + + + + @@ -22,6 +71,26 @@ + + + + 行数 + + + + + + + 1 + + + 10000 + + + 640 + + + @@ -29,14 +98,14 @@ - - + + - 开始传输 + 原始大小 - + Qt::Horizontal @@ -84,7 +153,7 @@ - TextLabel + @@ -287,68 +356,6 @@ - - - - 行数 - - - - - - - - 640x512 - - - - - 1280x1024 - - - - - 自定义 - - - - - - - - 1 - - - 10000 - - - 512 - - - - - - - 1 - - - 10000 - - - 640 - - - - - - - 分辨率 - - - 10 - - - diff --git a/menu1.cpp b/menu1.cpp index c21257b..1efbd30 100644 --- a/menu1.cpp +++ b/menu1.cpp @@ -1,12 +1,15 @@ #include "menu1.h" #include "ui_menu1.h" +#include +#include + menu1::menu1(QWidget *parent) : QWidget(parent), ui(new Ui::menu1) { ui->setupUi(this); -#if CLIENT==2 +//#if CLIENT==2 ui->pushButton_12->hide(); ui->pushButton->hide(); ui->pushButton_2->hide(); @@ -20,7 +23,11 @@ menu1::menu1(QWidget *parent) : ui->pushButton_14->hide(); ui->pushButton_4->hide(); ui->pushButton_7->hide(); -#endif + ui->pushButton_15->hide(); + ui->pushButton_16->hide(); +//#endif + + on_pushButton_17_clicked(); } menu1::~menu1() @@ -34,6 +41,25 @@ void menu1::hideui() ui->pushButton_9->hide(); ui->spinBox->hide(); ui->pushButton_12->hide(); + +#if CLIENT==0 + ui->pushButton_12->hide(); + ui->pushButton->hide(); + ui->pushButton_2->hide(); + ui->pushButton_3->hide(); + ui->pushButton_4->hide(); + ui->pushButton_5->hide(); + ui->pushButton_6->hide(); + ui->pushButton_7->hide(); + ui->pushButton_8->hide(); + ui->pushButton_13->hide(); + ui->pushButton_14->hide(); + ui->pushButton_4->hide(); + ui->pushButton_7->hide(); + ui->pushButton_15->hide(); + ui->pushButton_16->hide(); +#endif + } void menu1::showui() @@ -41,6 +67,25 @@ void menu1::showui() ui->pushButton_9->show(); ui->spinBox->show(); + +#if CLIENT==0 + ui->pushButton_12->show(); + ui->pushButton->show(); + ui->pushButton_2->show(); + ui->pushButton_3->show(); + ui->pushButton_4->show(); + ui->pushButton_5->show(); + ui->pushButton_6->show(); + ui->pushButton_7->show(); + ui->pushButton_8->show(); + ui->pushButton_13->show(); + ui->pushButton_14->show(); + ui->pushButton_4->show(); + ui->pushButton_7->show(); + ui->pushButton_15->show(); + ui->pushButton_16->show(); +#endif + } void menu1::opentec() @@ -144,3 +189,38 @@ void menu1::on_pushButton_14_clicked() emit signalopenb(false); } + +void menu1::on_pushButton_15_clicked() +{ + emit signalsetge(true); +} + + +void menu1::on_pushButton_16_clicked() +{ + emit signalsetge(false); +} + + +void menu1::on_pushButton_17_clicked() +{ + ui->comboBox->blockSignals(true); + ui->comboBox->clear(); + + + foreach (QSerialPortInfo info,QSerialPortInfo::availablePorts()){ + ui->comboBox->addItem(info.portName()); + } + ui->comboBox->blockSignals(false); + if(!ui->comboBox->currentText().isEmpty()){ + emit signalsetspname(ui->comboBox->currentText()); + + } +} + + +void menu1::on_comboBox_currentTextChanged(const QString &arg1) +{ + emit signalsetspname(arg1); +} + diff --git a/menu1.h b/menu1.h index c87b16c..949f05d 100644 --- a/menu1.h +++ b/menu1.h @@ -29,7 +29,8 @@ signals: void signalsetIT(double); void signalopenTEC(bool); void signalset14bit(bool); - + void signalsetge(bool); //灰度等间距 + void signalsetspname(QString); public: void opentec(); @@ -63,6 +64,14 @@ private slots: void on_pushButton_14_clicked(); + void on_pushButton_15_clicked(); + + void on_pushButton_16_clicked(); + + void on_pushButton_17_clicked(); + + void on_comboBox_currentTextChanged(const QString &arg1); + private: Ui::menu1 *ui; }; diff --git a/menu1.ui b/menu1.ui index ba1e10d..5e2050b 100644 --- a/menu1.ui +++ b/menu1.ui @@ -14,38 +14,28 @@ Form - - + + - 开启TEC + 单点校正 - - + + - 切换14Bit + 计算K值 - - + + - 保存K值 - - - - - - - 35.000000000000000 - - - 5.000000000000000 + 开启K值 - + 设置GPOL(mv) @@ -53,33 +43,27 @@ - - - 4000 - - - 0 - - - 800 + + + 开启B值 - - + + - 单点校正 + 存高温背景 - - + + - 存低温背景 + 关闭B值 - + 设置积分时间(ms) @@ -87,51 +71,91 @@ - + - 计算K值 + 存低温背景 - - + + - 存高温背景 + 密度均衡关闭 - + + + + 密度均衡开启 + + + + 保存B值 - - + + - 开启K值 + 开启TEC - + + + + 35.000000000000000 + + + 5.000000000000000 + + + + 关闭K值 - - + + - 开启B值 + 保存K值 - - + + + + 4000 + + + 0 + + + 800 + + + + + - 关闭B值 + 切换14Bit + + + + + + + + + + 刷新串口 @@ -148,6 +172,11 @@ QSpinBox
qfluentwidgets
+ + ComboBox + QComboBox +
qfluentwidgets
+
DoubleSpinBox QDoubleSpinBox diff --git a/multipoint.cpp b/multipoint.cpp index 77368ba..df8f7c8 100644 --- a/multipoint.cpp +++ b/multipoint.cpp @@ -18,6 +18,11 @@ MultiPoint::MultiPoint(QObject *parent) enable = false; b_rmbld = false; b_thre = 4; + + + stages = nullptr; + kstages = nullptr; + bstages = nullptr; } void MultiPoint::saveData(cv::Mat img) @@ -58,6 +63,15 @@ void MultiPoint::calcData(QVector vct) double vn = vct.last(); + + if(stages !=nullptr) + free(stages); + if(kstages != nullptr) + free(kstages); + if(bstages !=nullptr) + free(bstages); + + stages = (double*)malloc(sizeof(double)*rows*cols*(stagecount+1)); kstages = (double*)malloc(sizeof(double)*rows*cols*(stagecount+1)); bstages = (double*)malloc(sizeof(double)*(stagecount+1)); @@ -270,6 +284,12 @@ void MultiPoint::loaddata() stagecount = data.length()/((2*rows*cols+1)*8) - 1; + if(stages !=nullptr) + free(stages); + if(kstages != nullptr) + free(kstages); + if(bstages !=nullptr) + free(bstages); stages = (double*)malloc(sizeof(double)*rows*cols*(stagecount+1)); kstages = (double*)malloc(sizeof(double)*rows*cols*(stagecount+1)); bstages = (double*)malloc(sizeof(double)*(stagecount+1)); diff --git a/usbcontrol.cpp b/usbcontrol.cpp index 325c0bc..ba46c5d 100644 --- a/usbcontrol.cpp +++ b/usbcontrol.cpp @@ -24,6 +24,10 @@ int usbcontrol::sendMessage(char *msg, int msglen) for(int i = 1;i<7;i++){ msg[7] +=msg[i]; } + + if(sp.isOpen()){ + sp.write(msg,8); + } if(bulkinPoint==NULL){ initEndPoint(); } @@ -518,5 +522,36 @@ void usbcontrol::mpset1(int index, unsigned short avg) QString log = t.toString(); log+= u8"保存第" + QString::number(index)+u8"个背景,平均亮度为"+QString::number(avg); - emit signalSendMessage(log); + emit signalSendMessage(log); +} + +void usbcontrol::setge(bool b) +{ + char msg[8] = {0}; + msg[0] = 0x44; + msg[1] = 0x02; + msg[2] = 0x15; + msg[3] = b?1:0; + + sendMessage(msg,8); + + + QDateTime t = QDateTime::currentDateTime(); + QString log = t.toString(); + log+= b?u8"开启灰度等密度均衡":u8"关闭灰度等密度均衡"; + + emit signalSendMessage(log); +} + +void usbcontrol::slotsetspname(QString name) +{ + sp.setPortName(name); + if(sp.open(QIODevice::ReadWrite)){ + sp.setBaudRate(9600); + sp.setStopBits(QSerialPort::StopBits::OneStop); + sp.setParity(QSerialPort::Parity::NoParity); + sp.setDataBits(QSerialPort::Data8); + } + else + emit signalSendMessage(u8"设置串口号错误"); } diff --git a/usbcontrol.h b/usbcontrol.h index 4335c66..c0d29e1 100644 --- a/usbcontrol.h +++ b/usbcontrol.h @@ -13,6 +13,8 @@ #include #include +#include +#include class usbcontrol:public QObject { @@ -51,6 +53,10 @@ public slots: void mpstatus(bool b); void mppop(int index); void mpset1(int index, unsigned short avg); + + void setge(bool b); + + void slotsetspname(QString); signals: void signalSendMessage(QString); @@ -66,6 +72,8 @@ private: unsigned char* contexts; OVERLAPPED inOvLap; + QSerialPort sp; + }; #endif // USBCONTROL_H diff --git a/usbthread.cpp b/usbthread.cpp index c53228d..5a87807 100644 --- a/usbthread.cpp +++ b/usbthread.cpp @@ -29,6 +29,8 @@ usbthread::usbthread(QObject *parent): // lensum = 0; }); tg->start(1000); + + usbstatus = 0; } usbthread::~usbthread() @@ -66,6 +68,11 @@ void usbthread::setStatu(bool _run) isRun = _run; } +int usbthread::getUsbStatus() +{ + return usbstatus; +} + //void usbClass::setcallback(void (*func)(cv::Mat)) //{ // imageCallback = func; @@ -102,14 +109,17 @@ void usbthread::run() CCyBulkEndPoint* bulkinPoint =(CCyBulkEndPoint*)device->EndPointOf(0x81); if(bulkinPoint == NULL){ qDebug()<<"no endpoint "; + usbstatus = 2; return; } if( device->bSuperSpeed !=true){ signalMessage(QString::fromLocal8Bit("当前usb接口并非usb3.0, 请确认连接")); newProcess->setStatu(false); + usbstatus = 3; return; } + usbstatus = 1; unsigned char** buffer = new unsigned char*[128]; unsigned char** contexts = (unsigned char**)malloc(sizeof(unsigned char*)*128); OVERLAPPED inOvLap[128]; @@ -141,6 +151,7 @@ void usbthread::run() + usbstatus = 0; } void usbthread::logout() diff --git a/usbthread.h b/usbthread.h index f165115..e246c98 100644 --- a/usbthread.h +++ b/usbthread.h @@ -27,6 +27,8 @@ public: void stopProcessData(); void setStatu(bool _run); // void setcallback(void(*func)(cv::Mat)); + + int getUsbStatus();/// 0 初始化 1 正常工作 2 无设备 3 接插不稳定 signals: void signalGetImage(cv::Mat); @@ -60,6 +62,11 @@ private: QTimer* tg; int lensum; + + int usbstatus; + + + };