Browse Source

更新了加载校正数据的设置, 更新了切换积分时间时加载数据的流程

master
zara 1 year ago
parent
commit
533ec1da66
  1. 4
      CMakeLists.txt
  2. 2
      CMakeLists.txt.user
  3. 44
      devicelist.cpp
  4. 28
      devicelist.h
  5. 67
      devicelist.ui
  6. 2
      idpath.cpp
  7. 34
      idpath.ui
  8. 24
      installsa.nsi.in
  9. 62
      mainwindow.cpp
  10. 6
      mainwindow.h
  11. 38
      menu5.cpp
  12. 4
      menu5.h
  13. 33
      menu5.ui
  14. 132
      multipoint.cpp
  15. 11
      multipoint.h
  16. 44
      passwd.cpp
  17. 29
      passwd.h
  18. 49
      passwd.ui

4
CMakeLists.txt

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
cmake_minimum_required(VERSION 3.5)
set(PROJECT_VERSION 1.4.2.6)
set(PROJECT_VERSION 1.4.2.8)
add_definitions(-DProjectVersion=\"${PROJECT_VERSION}\")
project(zxrcClient VERSION ${PROJECT_VERSION} LANGUAGES CXX)
@ -104,6 +104,8 @@ set(PROJECT_SOURCES @@ -104,6 +104,8 @@ set(PROJECT_SOURCES
player.ui
menu5_1.h menu5_1.cpp menu5_1.ui
menu6.cpp menu6.h menu6.ui
passwd.cpp passwd.h passwd.ui
devicelist.cpp devicelist.h devicelist.ui
)
###

2
CMakeLists.txt.user

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 11.0.1, 2024-07-08T17:21:27. -->
<!-- Written by QtCreator 11.0.1, 2024-07-11T18:01:28. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>

44
devicelist.cpp

@ -0,0 +1,44 @@ @@ -0,0 +1,44 @@
#include "devicelist.h"
#include "ui_devicelist.h"
#include <QDir>
#include <QLabel>
#include <QDebug>
#include <QTableWidgetItem>
devicelist::devicelist(QWidget *parent) :
QDialog(parent),
ui(new Ui::devicelist)
{
ui->setupUi(this);
QDir d("datas");
QStringList devices = d.entryList(QStringList(),QDir::AllDirs,QDir::Name);
int i = 0;
ui->tableWidget->setColumnCount(1);
for(QString device:devices){
if(device == "." || device == ".."){
continue;
}
ui->tableWidget->setRowCount(i+1);
ui->tableWidget->setItem(i,0,new QTableWidgetItem(device));
i++;
qDebug()<<"device = "<<device;
}
ui->tableWidget->horizontalHeader()->hide();
ui->tableWidget->verticalHeader()->hide();
ui->tableWidget->resizeColumnsToContents();
ui->tableWidget->resizeRowsToContents();
ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
// ui->tableWidget->verticalHeader()->setSectionResizeMode(QHeaderView::Stretch);}
}
devicelist::~devicelist()
{
delete ui;
}
void devicelist::on_buttonBox_accepted()
{
emit signalIDpath(ui->tableWidget->currentItem()->text());
}

28
devicelist.h

@ -0,0 +1,28 @@ @@ -0,0 +1,28 @@
#ifndef DEVICELIST_H
#define DEVICELIST_H
#include <QDialog>
namespace Ui {
class devicelist;
}
class devicelist : public QDialog
{
Q_OBJECT
public:
explicit devicelist(QWidget *parent = nullptr);
~devicelist();
signals:
void signalIDpath(QString);
private slots:
void on_buttonBox_accepted();
private:
Ui::devicelist *ui;
};
#endif // DEVICELIST_H

67
devicelist.ui

@ -0,0 +1,67 @@ @@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>devicelist</class>
<widget class="QDialog" name="devicelist">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>240</width>
<height>320</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QTableWidget" name="tableWidget"/>
</item>
<item row="0" column="1">
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>devicelist</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>devicelist</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

2
idpath.cpp

@ -15,6 +15,6 @@ idpath::~idpath() @@ -15,6 +15,6 @@ idpath::~idpath()
void idpath::on_buttonBox_accepted()
{
emit signalIDpath(ui->lineEdit->text()+"-"+ui->doubleSpinBox->text());
emit signalIDpath(ui->lineEdit->text());//+"-"+ui->doubleSpinBox->text());
}

34
idpath.ui

@ -7,7 +7,7 @@ @@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>318</width>
<height>78</height>
<height>81</height>
</rect>
</property>
<property name="windowTitle">
@ -15,16 +15,22 @@ @@ -15,16 +15,22 @@
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>机芯编号</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="lineEdit"/>
</item>
<item row="0" column="2" rowspan="2">
<item row="1" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="1" rowspan="2">
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Vertical</enum>
@ -34,16 +40,6 @@ @@ -34,16 +40,6 @@
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>积分时间</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QDoubleSpinBox" name="doubleSpinBox"/>
</item>
</layout>
</widget>
<resources/>

24
installsa.nsi.in

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
; Script generated by the HM NIS Edit Script Wizard.
; HM NIS Edit Wizard helper defines
!define PRODUCT_NAME "中芯热成上位机SA"
!define PRODUCT_NAME "中芯热成上位机SA"
!define PRODUCT_VERSION "@CMAKE_PROJECT_VERSION_MAJOR@.@CMAKE_PROJECT_VERSION_MINOR@.@CMAKE_PROJECT_VERSION_PATCH@.@CMAKE_PROJECT_VERSION_TWEAK@"
!define PRODUCT_PUBLISHER "zxrc"
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\zxrcClientSA.exe"
@ -47,7 +47,7 @@ SetCompressor lzma @@ -47,7 +47,7 @@ SetCompressor lzma
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "${PRODUCT_NAME} ${PRODUCT_VERSION}Setup.exe"
InstallDir "$PROGRAMFILES\中芯热成上位机"
InstallDir "$PROGRAMFILES\中芯热成上位机"
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
ShowInstDetails show
ShowUnInstDetails show
@ -60,9 +60,9 @@ Section "MainSection" SEC01 @@ -60,9 +60,9 @@ Section "MainSection" SEC01
SetOutPath "$INSTDIR"
SetOverwrite ifnewer
File "zxrcClientSA.exe"
CreateDirectory "$SMPROGRAMS\中芯热成上位机"
CreateShortCut "$SMPROGRAMS\中芯热成上位机\中芯热成上位机.lnk" "$INSTDIR\zxrcClientSA.exe"
CreateShortCut "$DESKTOP\中芯热成上位机.lnk" "$INSTDIR\zxrcClientSA.exe"
CreateDirectory "$SMPROGRAMS\中芯热成上位机"
CreateShortCut "$SMPROGRAMS\中芯热成上位机\中芯热成上位机.lnk" "$INSTDIR\zxrcClientSA.exe"
CreateShortCut "$DESKTOP\中芯热成上位机.lnk" "$INSTDIR\zxrcClientSA.exe"
SetOverwrite try
File "D3Dcompiler_47.dll"
@ -125,7 +125,7 @@ Section "MainSection" SEC01 @@ -125,7 +125,7 @@ Section "MainSection" SEC01
SectionEnd
Section -AdditionalIcons
CreateShortCut "$SMPROGRAMS\中芯热成上位机\Uninstall.lnk" "$INSTDIR\uninst.exe"
CreateShortCut "$SMPROGRAMS\中芯热成上位机\Uninstall.lnk" "$INSTDIR\uninst.exe"
SectionEnd
Section -Post
@ -141,12 +141,12 @@ SectionEnd @@ -141,12 +141,12 @@ SectionEnd
Function un.onUninstSuccess
HideWindow
MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功地从你的计算机移除。"
MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功地从你的计算机移除。"
FunctionEnd
Function un.onInit
!insertmacro MUI_UNGETLANGUAGE
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "你确实要完全移除 $(^Name) ,其及所有的组件?" IDYES +2
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "你确实要完全移除 $(^Name) ,其及所有的组件?" IDYES +2
Abort
FunctionEnd
@ -204,11 +204,11 @@ Section Uninstall @@ -204,11 +204,11 @@ Section Uninstall
Delete "$INSTDIR\D3Dcompiler_47.dll"
Delete "$INSTDIR\zxrcClientSA.exe"
Delete "$SMPROGRAMS\中芯热成上位机\Uninstall.lnk"
Delete "$DESKTOP\中芯热成上位机.lnk"
Delete "$SMPROGRAMS\中芯热成上位机\中芯热成上位机.lnk"
Delete "$SMPROGRAMS\中芯热成上位机\Uninstall.lnk"
Delete "$DESKTOP\中芯热成上位机.lnk"
Delete "$SMPROGRAMS\中芯热成上位机\中芯热成上位机.lnk"
RMDir "$SMPROGRAMS\中芯热成上位机"
RMDir "$SMPROGRAMS\中芯热成上位机"
RMDir "$INSTDIR\translations"
RMDir "$INSTDIR\styles"
RMDir "$INSTDIR\platforms"

62
mainwindow.cpp

@ -11,8 +11,10 @@ MainWindow::MainWindow(QWidget *parent) @@ -11,8 +11,10 @@ MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
qDebug()<<QDir::homePath();
ui->setupUi(this);
ui->label->setText(QDir::homePath());
initIns();
ddd;
@ -50,7 +52,10 @@ void MainWindow::initUI() @@ -50,7 +52,10 @@ void MainWindow::initUI()
fps = 0;
fpscount = 0;
path = QApplication::applicationDirPath()+"/";
path = QDir::homePath()+"/zxrcfiles/";
QDir d;
d.mkdir(path);
QString title = QString::fromLocal8Bit("中芯热成上位机");
#if CLIENT==0
@ -87,15 +92,16 @@ void MainWindow::initUI() @@ -87,15 +92,16 @@ void MainWindow::initUI()
ddd;
ui->toolbox->addItem(m1,u8"相机设置");
#if CLIENT==2
ui->toolbox->addItem(m5,u8"图像校正");
#endif
ui->toolbox->addItem(m2,u8"算法设置");
ui->toolbox->addItem(m3,u8"显示设置");
ui->toolbox->addItem(m4,u8"保存设置");
ddd;
#if CLIENT==2
ui->toolbox->addItem(m5,u8"多点校正");
#endif
#if CLIENT==0
ui->toolbox->addItem(m5_1,u8"多点校正");
#endif
@ -105,7 +111,7 @@ void MainWindow::initUI() @@ -105,7 +111,7 @@ void MainWindow::initUI()
#if CLIENT==2
menu6* m6 = new menu6;
ui->toolbox->addItem(m6, u8"测温设置");
// ui->toolbox->addItem(m6, u8"测温设置");
connect(m6,&menu6::signalSetTemp,[=](double temp){
b_temp_save = true;
d_temp = temp;
@ -165,6 +171,15 @@ void MainWindow::initConnect() @@ -165,6 +171,15 @@ void MainWindow::initConnect()
connect(m1,SIGNAL(signalsetGPOL(int)),ucontrol,SLOT(setGPOL(int)));
connect(m1,SIGNAL(signalsetIT(double)),ucontrol,SLOT(setIT(double)));
connect(m1,&menu1::signalsetIT,[this](double it){
this->d_it = it;
if(m_mp!=nullptr){
ddd<<this->deviceid<<it;
// m_mp->loaddata(this->deviceid,it);
m_mp->setit(it);
}
});
connect(m1,SIGNAL(signalopenTEC(bool)),ucontrol,SLOT(tec(bool)));
connect(m1,SIGNAL(signalset14bit(bool)),ucontrol,SLOT(bit14(bool)));
connect(m1,&menu1::signalset14bit,[=](bool b){
@ -276,11 +291,20 @@ void MainWindow::initConnect() @@ -276,11 +291,20 @@ void MainWindow::initConnect()
connect(m5,SIGNAL(signalsave()),m_mp,SLOT(save()));
connect(m5,SIGNAL(signalcalc(QVector<double>)),m_mp,SLOT(calcData(QVector<double>)));
connect(m5,SIGNAL(signalsavedata(QString)),m_mp,SLOT(savedata(QString)));
// connect(m5,SIGNAL(signalsavedata(QString)),m_mp,SLOT(savedata(QString)));
connect(m5,&menu5::signalsavedata,[=](QString path){
m_mp->savedata(path,d_it );
});
connect(m_mp,SIGNAL(signalNewFrame(double)),m5,SLOT(slotRefresh(double)));
connect(m5,SIGNAL(signalloaddata(QString)),m_mp,SLOT(loaddata(QString)));
// connect(m5,SIGNAL(signalloaddata(QString)),m_mp,SLOT(loaddata(QString)));
connect(m5,&menu5::signalloaddata,[this](QString path){
// m_mp->loaddata(path,this->d_it);
this->deviceid = path;
m_mp->setdevice(path);
});
connect(m5,SIGNAL(signaloff()),m_mp,SLOT(off()));
connect(m_mp,SIGNAL(signalLog(QString)),this,SLOT(slotlogtext(QString)));
#endif
#if CLIENT==0
@ -462,6 +486,9 @@ void MainWindow::on_pushButton_clicked()// 开启传输 @@ -462,6 +486,9 @@ void MainWindow::on_pushButton_clicked()// 开启传输
usb->start();
ui->pushButton->setText(u8"停止传输");
t->stop();
ucontrol->setIT(5.00);
on_pushButton_2_clicked();
d_it = 5.00;
});
t->start(2000);
ui->label->setText(QString::fromLocal8Bit("开启传输中,请等待"));
@ -847,11 +874,21 @@ void MainWindow::keyPressEvent(QKeyEvent *ev) @@ -847,11 +874,21 @@ void MainWindow::keyPressEvent(QKeyEvent *ev)
}
if((ev->modifiers() == Qt::ControlModifier) && (ev->key()== Qt::Key_A)){
m1->showui();
passwd* pswd = new passwd();
pswd->show();
connect(pswd,&QDialog::accepted,[=](){
// m1->showui();
if(m5!=nullptr)
m5->showui();
});
}
if((ev->modifiers() == Qt::ControlModifier) && (ev->key()== Qt::Key_Q)){
m1->hideui();
// m1->hideui();
if(m5!=nullptr)
m5->hideui();
}
}
void MainWindow::initIns()
@ -888,6 +925,13 @@ void MainWindow::initIns() @@ -888,6 +925,13 @@ void MainWindow::initIns()
b_temp = false;
b_temp_save = false;
QDir d;
if(!d.exists("datas"))
if(! d.mkdir("datas")){
slotlogtext(u8"无法新建数据文件夹, 请重新安装软件, 注意安装路径的权限问题");
}
d.mkdir("files");
}

6
mainwindow.h

@ -11,6 +11,8 @@ @@ -11,6 +11,8 @@
#include "menu5.h"
#include "menu5_1.h"
#include "menu6.h"
#include "passwd.h"
#include "devicelist.h"
#include "usbcontrol.h"
#include "usbthread.h"
@ -27,6 +29,7 @@ @@ -27,6 +29,7 @@
#include "qfluentwidgets"
#include <QMap>
#include <QDir>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
@ -156,5 +159,8 @@ private: @@ -156,5 +159,8 @@ private:
bool b_temp_save;
double d_temp;
QMap<double, double> m_temp;
double d_it;// 积分时间
QString deviceid;
};
#endif // MAINWINDOW_H

38
menu5.cpp

@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
#include <QCheckBox>
#include <QFileDialog>
#include "devicelist.h"
menu5::menu5(QWidget *parent) :
QWidget(parent),
ui(new Ui::menu5)
@ -19,9 +19,12 @@ menu5::menu5(QWidget *parent) : @@ -19,9 +19,12 @@ menu5::menu5(QWidget *parent) :
connect(ui->tableWidget->horizontalHeader(),&QHeaderView::sectionClicked,[=](int i){
if(i == 1){
for(int i = 0; i< ui->tableWidget->rowCount();i++){
qobject_cast<QCheckBox*>(ui->tableWidget->cellWidget(i,1))->setChecked(true);
}
}
});
hideui();
}
menu5::~menu5()
@ -29,6 +32,24 @@ menu5::~menu5() @@ -29,6 +32,24 @@ menu5::~menu5()
delete ui;
}
void menu5::hideui()
{
ui->pushButton->hide();
ui->pushButton_2->hide();
ui->pushButton_3->hide();
ui->tableWidget->hide();
ui->pushButton_6->hide();
}
void menu5::showui()
{
ui->pushButton->show();
ui->pushButton_2->show();
ui->pushButton_3->show();
ui->tableWidget->show();
ui->pushButton_6->show();
}
void menu5::slotRefresh(double gray)
{
qDebug()<<__FILE__<<__LINE__;
@ -99,9 +120,9 @@ void menu5::on_pushButton_4_clicked() @@ -99,9 +120,9 @@ void menu5::on_pushButton_4_clicked()
// emit signalloaddata();
// QString path = QFileDialog::getExistingDirectory(nullptr,QString::fromLocal8Bit("选择数据保存路径"),QString("./"));
//emit signalloaddata(path);
idpath* p = new idpath;
devicelist* p = new devicelist;
p->show();
connect(p,&idpath::signalIDpath,[=](QString path){
connect(p,&devicelist::signalIDpath,[=](QString path){
emit signalloaddata(path);
p->deleteLater();
});
@ -113,3 +134,12 @@ void menu5::on_pushButton_5_clicked() @@ -113,3 +134,12 @@ void menu5::on_pushButton_5_clicked()
emit signaloff();
}
void menu5::on_pushButton_6_clicked()
{
grays.clear();
while(ui->tableWidget->rowCount()>0){
ui->tableWidget->removeRow(0);
}
}

4
menu5.h

@ -16,6 +16,8 @@ public: @@ -16,6 +16,8 @@ public:
explicit menu5(QWidget *parent = nullptr);
~menu5();
void hideui();
void showui();
public slots:
void slotRefresh(double);
@ -29,6 +31,8 @@ private slots: @@ -29,6 +31,8 @@ private slots:
void on_pushButton_5_clicked();
void on_pushButton_6_clicked();
signals:
void signalsave();
void signalcalc(QVector<double> );

33
menu5.ui

@ -14,31 +14,31 @@ @@ -14,31 +14,31 @@
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="2" column="0">
<widget class="QPushButton" name="pushButton_2">
<item row="6" column="0">
<widget class="QPushButton" name="pushButton_5">
<property name="text">
<string>开始计算</string>
<string>关闭校正</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QPushButton" name="pushButton_4">
<item row="0" column="0">
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>加载数据</string>
<string>存32帧亮度</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QPushButton" name="pushButton">
<item row="5" column="0">
<widget class="QPushButton" name="pushButton_4">
<property name="text">
<string>存32帧亮度</string>
<string>加载数据</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QPushButton" name="pushButton_3">
<widget class="QPushButton" name="pushButton_2">
<property name="text">
<string>保存数据</string>
<string>开始计算</string>
</property>
</widget>
</item>
@ -63,9 +63,16 @@ @@ -63,9 +63,16 @@
</widget>
</item>
<item row="4" column="0">
<widget class="QPushButton" name="pushButton_5">
<widget class="QPushButton" name="pushButton_3">
<property name="text">
<string>关闭校正</string>
<string>保存数据</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QPushButton" name="pushButton_6">
<property name="text">
<string>清空列表</string>
</property>
</widget>
</item>

132
multipoint.cpp

@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
#include "QDebug"
#include <QFile>
#include <QFileDialog>
#include <QDir>
MultiPoint::MultiPoint(QObject *parent)
: QObject{parent}
@ -12,6 +13,8 @@ MultiPoint::MultiPoint(QObject *parent) @@ -12,6 +13,8 @@ MultiPoint::MultiPoint(QObject *parent)
ready = false;
b_save = false;
n_save = 0;
stagecount =0;
ittime = 5;
}
void MultiPoint::saveData(cv::Mat img)
@ -30,43 +33,37 @@ void MultiPoint::calcData(QVector<double> vct) @@ -30,43 +33,37 @@ void MultiPoint::calcData(QVector<double> vct)
qDebug()<<__FILE__<<__LINE__;
ready = false;
// stagecount = datas.size();
stagecount = vct.length();
if(stagecount<2)
return;
qDebug()<<"statge count = "<< stagecount;
// double v0 = datas[vct.at(0)].key();
double v0 = vct.first();
// double vn =( datas.begin()+stagecount-1).key();
double vn = vct.last();
stages = (double*)malloc(sizeof(double)*rows*cols*(stagecount+1));
kstages = (double*)malloc(sizeof(double)*rows*cols*(stagecount+1));
bstages = (double*)malloc(sizeof(double)*rows*cols*(stagecount+1));
bstages = (double*)malloc(sizeof(double)*(stagecount+1));
// QMap<double,cv::Mat>::Iterator start = datas.begin();
// QMap<double,cv::Mat>::Iterator end ;
memset(kstages,0,sizeof(double)*rows*cols);
memset(bstages,0,sizeof(double)*rows*cols);
memset(bstages,0,sizeof(double)*1);
int k = 1;
// for(;k<stagecount;start++,k++){
for(;k<stagecount;k++){
// end = start+1;
// double vs = start.key();
// double ve = end.key();
// cv::Mat ms = start.value();
// cv::Mat me = end.value();
double vs = vct.at(k-1);
double ve = vct.at(k);
@ -81,7 +78,7 @@ void MultiPoint::calcData(QVector<double> vct) @@ -81,7 +78,7 @@ void MultiPoint::calcData(QVector<double> vct)
double* ss = stages+(k-1)*rows*cols;
double* ks = kstages+k*rows*cols;
*(bstages+k) = vs;
double* bs = bstages+k*rows*cols;
/// y = kx+b
@ -93,16 +90,13 @@ void MultiPoint::calcData(QVector<double> vct) @@ -93,16 +90,13 @@ void MultiPoint::calcData(QVector<double> vct)
for(int i = 0;i<ms.rows;i++){
for(int j = 0;j< ms.cols;j++){
*(ss+i*ms.cols+j) = int( ms.at<float>(i,j));
*(ks+i*ms.cols+j) = int((ve-vs)/(me.at<float>(i,j) - ms.at<float>(i,j)));
// *(bs+i*ms.cols+j) = vs ;
//- k*ms.at<float>(i,j);
*(ss+i*ms.cols+j) = ms.at<float>(i,j);
*(ks+i*ms.cols+j) =(ve-vs)/(me.at<float>(i,j) - ms.at<float>(i,j));
}
}
}
qDebug()<<__FILE__<<__LINE__;
double* ss = stages+(k-1)*rows*cols;
@ -120,9 +114,7 @@ void MultiPoint::calcData(QVector<double> vct) @@ -120,9 +114,7 @@ void MultiPoint::calcData(QVector<double> vct)
for(int i = 0;i<rows;i++){
qDebug()<<"i"<<i;
for(int j = 0;j<cols;j++){
*(ss+i*cols+j) =int( ms.at<float>(i,j));
*(ss+i*cols+j) = ms.at<float>(i,j);
*(ks+i*cols+j) = 0;
}
@ -198,56 +190,54 @@ void MultiPoint::save() @@ -198,56 +190,54 @@ void MultiPoint::save()
b_save = true;
}
void MultiPoint::savedata(QString path)
void MultiPoint::savedata(QString path, double ittime)
{
// int k =0;
// for(QMap<double,cv::Mat>::Iterator iter = datas.begin();iter!= datas.end();iter++){
// cv::imwrite(QString::number(k).toStdString()+ ".tiff",iter.value());
// k+=1;
// }
QDir d;
d.mkdir(path);
QFile fs(path+ "/s.bin");
fs.open(QIODevice::ReadWrite);
fs.write((char*)stages,(stagecount+1)*cols*rows*8);
fs.close();
d.mkdir("datas/"+path);
QFile fk(path+ "/k.bin");
fk.open(QIODevice::ReadWrite);
fk.write((char*)kstages,(stagecount+1)*cols*rows*8);
fk.close();
QFile afs("datas/"+path+"/"+QString::number(ittime,'f',2)+".tgz");
afs.open(QIODevice::ReadWrite);
afs.write((char*)stages,(stagecount+1)*cols*rows*8);
afs.write((char*)kstages,(stagecount+1)*cols*rows*8);
afs.write((char*)bstages,(stagecount+1)*8);
afs.close();
QFile fb(path+"/b.bin");
fb.open(QIODevice::ReadWrite);
fb.write((char*)bstages,(stagecount+1)*cols*rows*8);
fb.close();
}
void MultiPoint::loaddata(QString path )
void MultiPoint::loaddata()
{
QFile fk(path+"/k.bin");
fk.open(QIODevice::ReadOnly);
QByteArray data = fk.readAll();
kstages = (double*)malloc(data.length());
memcpy(kstages,data.data(),data.size());
QFile fb(path+"/b.bin");
fb.open(QIODevice::ReadOnly);
data = fb.readAll();
bstages = (double*)malloc(data.length());
memcpy(bstages,data.data(),data.length());
QFile fs(path+"/s.bin");
fs.open(QIODevice::ReadOnly);
data = fs.readAll();
stages = (double*)malloc(data.length());
memcpy(stages,data.data(),data.length());
stagecount = data.length()/8/rows/cols - 1;
QDir d;
qDebug()<<__FILE__<<__LINE__<<deviceid<<ittime;
if(!d.exists("datas/"+deviceid) || deviceid=="." || deviceid==".." || deviceid==""){
emit signalLog( u8"没有这个设备号的数据");
ready = false;
return;
}
QFile afs("datas/"+deviceid+"/"+QString::number(ittime,'f',2)+".tgz");
if(!afs.exists()){
emit signalLog( u8"没有这个积分时间的数据");
ready = false;
return;
}
emit signalLog(u8"设备号"+deviceid+u8",积分时间"+QString::number(ittime,'f',2)+u8"数据已加载");
afs.open(QIODevice::ReadWrite);
QByteArray data = afs.readAll();
stagecount = data.length()/((2*rows*cols+1)*8) - 1;
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));
memcpy(stages,data.data(),sizeof(double)*rows*cols*(stagecount+1));
memcpy(kstages,data.data()+sizeof(double)*rows*cols*(stagecount+1),sizeof(double)*rows*cols*(stagecount+1));
memcpy(bstages,data.data()+2*sizeof(double)*rows*cols*(stagecount+1),sizeof(double)*(stagecount+1));
qDebug()<<"stagecount"<<stagecount;
ready = true;
}
@ -262,3 +252,15 @@ void MultiPoint::setparas(int _row, int _col) @@ -262,3 +252,15 @@ void MultiPoint::setparas(int _row, int _col)
rows = _row;
cols = _col;
}
void MultiPoint::setdevice(QString id)
{
deviceid = id;
loaddata();
}
void MultiPoint::setit(double it)
{
ittime = it;
loaddata();
}

11
multipoint.h

@ -27,18 +27,22 @@ public slots: @@ -27,18 +27,22 @@ public slots:
void save();
void savedata(QString);
void savedata(QString,double ittime);
void loaddata(QString);
void loaddata();
void off();
void setparas(int _row,int _col);
void setdevice(QString);
void setit(double);
signals:
void signalsendimg(cv::Mat);
void signalNewFrame(double);
void signalLog(QString);
private:
@ -63,7 +67,8 @@ private: @@ -63,7 +67,8 @@ private:
int rows;
int cols;
QString deviceid;
double ittime;
};

44
passwd.cpp

@ -0,0 +1,44 @@ @@ -0,0 +1,44 @@
#include "passwd.h"
#include "ui_passwd.h"
#include <QDebug>
passwd::passwd(QWidget *parent) :
QDialog(parent),
ui(new Ui::passwd)
{
ui->setupUi(this);
}
passwd::~passwd()
{
delete ui;
}
void passwd::on_buttonBox_accepted()
{
if(ui->lineEdit->text() != "zxrc"){
qDebug()<<__FILE__<<__LINE__;
return;
}
else{
this->accept();
}
}
void passwd::on_pushButton_clicked()
{
if(ui->lineEdit->text() != "zxrc"){
setWindowTitle(u8"密码错误请重试");
}
else{
this->accept();
}
}
void passwd::on_pushButton_2_clicked()
{
this->reject();
}

29
passwd.h

@ -0,0 +1,29 @@ @@ -0,0 +1,29 @@
#ifndef PASSWD_H
#define PASSWD_H
#include <QDialog>
namespace Ui {
class passwd;
}
class passwd : public QDialog
{
Q_OBJECT
public:
explicit passwd(QWidget *parent = nullptr);
~passwd();
private slots:
void on_buttonBox_accepted();
void on_pushButton_clicked();
void on_pushButton_2_clicked();
private:
Ui::passwd *ui;
};
#endif // PASSWD_H

49
passwd.ui

@ -0,0 +1,49 @@ @@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>passwd</class>
<widget class="QDialog" name="passwd">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>240</width>
<height>70</height>
</rect>
</property>
<property name="windowTitle">
<string>输入密码</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>输入管理员密码</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLineEdit" name="lineEdit">
<property name="echoMode">
<enum>QLineEdit::Password</enum>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>确定</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="pushButton_2">
<property name="text">
<string>取消</string>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>
Loading…
Cancel
Save