123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739 |
- #include "dialog.h"
- #include "ui_dialog.h"
- #include <QTimer> //定时器类
- #include <windows.h>
- #include<iostream>
- #include<qcursor.h>
- #include "infoserialize/infoserialize.h"
- #include <QJsonDocument>
- #include <QJsonObject>
- #include <QJsonValue>
- Dialog::Dialog(QWidget *parent) :
- QDialog(parent),
- ui(new Ui::Dialog)
- {
-
- QPushButton *minimizeButton = new QPushButton("隐藏", this);
- connect(minimizeButton, &QPushButton::clicked, this, &Dialog::on_minimizeButton_clicked);
- ui->setupUi(this);
- serailPort = new SerailPort();
-
- infoserialize myinfoserialize;
- QFile file("D:/irdet/cfg/prjpara.cfg");
- if(!file.open(QIODevice::ReadOnly))
- {
- return ;
- }
- QDataStream output(&file);
- output >> myinfoserialize;
- file.close();
- QString qstrip = ui->IPLineEdit->text();
- QString qstraccount = ui->AcccountLineEdit->text();
- QString qstrpwd = ui->PwdLineEdit->text();
- ui->IPLineEdit->setText(myinfoserialize.qstrip);
- ui->AcccountLineEdit->setText(myinfoserialize.qstraccount);
- ui->PwdLineEdit->setText(myinfoserialize.qstrpwd);
- ui->SavePicDirLineEdit->setText(myinfoserialize.qstrdir);
- QStringList srtlistPorts = serailPort->getAllPorts();
- ui->PortcomboBox->addItems(srtlistPorts);
- QStringList srtlistBautRate = serailPort->getAllBautRate();
- ui->BautRatecomboBox->addItems(srtlistBautRate);
-
- ui->BautRatecomboBox->setCurrentText(myinfoserialize.srtBautRate);
- QStringList srtlistDataBit = serailPort->getAllDataBit();
- ui->DataBitcomboBox->addItems(srtlistDataBit);
-
- ui->DataBitcomboBox->setCurrentText(myinfoserialize.srtDataBit);
- QStringList srtlistParityRate = serailPort->getAllParityRate();
- ui->ParityRatecomboBox->addItems(srtlistParityRate);
- ui->ParityRatecomboBox->setCurrentText(myinfoserialize.srtParity);
- QStringList srtlistStopRate = serailPort->getAllStopRate();
- ui->StopRatecomboBox->addItems(srtlistStopRate);
- ui->ParityRatecomboBox->setCurrentText(myinfoserialize.srtStop);
- ui->SendLineEdit->setText("SET@1=4000 #");
- ui->RecvLineEdit_2->setText("25000");
- ui->RecvLineEdit_3->setText("5000");
- ui->RecvLineEdit_4->setText("1000");
- connect(serailPort->serial, &QSerialPort::readyRead, serailPort, &SerailPort::readyRead);
- irdetnetproc();
- }
- void Dialog:: irdetnetproc()
- {
-
- QTcpServer* server=new QTcpServer(this);
-
- bool res=server->listen(QHostAddress::Any,8018);
- qDebug() << "this is listen ret:" << res;
-
- connect(server,&QTcpServer::newConnection,[=]()
- {
- ptcpSocket=server->nextPendingConnection();
- qDebug() << "this is listen tcpSocket:" << ptcpSocket;
-
-
- connect(ptcpSocket,&QTcpSocket::readyRead,[=]()
- {
-
- QByteArray data = ptcpSocket->readAll();
- qDebug()<<"Datas from the remote client:"<<data;
-
- if(nullptr != ptcpSocket1)
- {
- ptcpSocket1->write(data);
- ptcpSocket1->flush();
- }
- });
- });
- QTcpServer* server1=new QTcpServer(this);
-
- bool res1=server1->listen(QHostAddress::Any,9032);
- qDebug() << "this is listen ret:" << res;
-
- connect(server1,&QTcpServer::newConnection,[=]()
- {
- ptcpSocket1=server1->nextPendingConnection();
- qDebug() << "this is listen tcpSocket:" << ptcpSocket1;
-
-
- connect(ptcpSocket1,&QTcpSocket::readyRead,[=]()
- {
-
- QByteArray data = ptcpSocket1->readAll();
- qDebug()<<"Datas from the remote client:"<<data;
- QJsonDocument jsonDoc = QJsonDocument::fromJson(data);
- if (!jsonDoc.isNull()) {
- QJsonObject jsonObj = jsonDoc.object();
- QString interfaceType = jsonObj.value("interface").toString();
- if (interfaceType == "GrabPicture") {
-
- QJsonObject paramObj = jsonObj.value("param").toObject();
- strposition = paramObj.value("position").toString();
- on_SendCmdButton_clicked();
- } else {
- qDebug() << "Unhandled interface type:" << interfaceType;
- }
- } else {
- qDebug() << "Received invalid JSON data";
- }
- });
- });
- }
- Dialog::~Dialog()
- {
- delete ui;
- }
- void Dialog::closeEvent ( QCloseEvent* e )
- {
- if( QMessageBox::question(this,
- tr("Quit"),
- tr("Are you sure to quit this application?"),
- QMessageBox::Yes, QMessageBox::No )
- == QMessageBox::Yes){
- e->accept();
- if(nullptr != phkcamera)
- {
- phkcamera->logout();
- delete phkcamera;
- }
-
-
- QString srtBautRate = ui->BautRatecomboBox->currentText();
- QString srtDataBit = ui->DataBitcomboBox->currentText();
- QString srtParity = ui->ParityRatecomboBox->currentText();
- QString srtStop = ui->StopRatecomboBox->currentText();
- QString qstrip = ui->IPLineEdit->text();
- QString qstraccount = ui->AcccountLineEdit->text();
- QString qstrpwd = ui->PwdLineEdit->text();
- QString qstrdir = ui->SavePicDirLineEdit->text();
- infoserialize myinfoserialize;
- myinfoserialize.qstrip = qstrip;
- myinfoserialize.qstraccount = qstraccount;
- myinfoserialize.qstrpwd = qstrpwd;
- myinfoserialize.qstrdir = qstrdir;
- myinfoserialize.srtBautRate = srtBautRate;
- myinfoserialize.srtDataBit = srtDataBit;
- myinfoserialize.srtParity = srtParity;
- myinfoserialize.srtStop = srtStop;
- QFile file("./prjpara.cfg");
- if(!file.open(QIODevice::WriteOnly))
- {
- return ;
- }
- QDataStream input(&file);
- input << myinfoserialize;
- file.close();
- qDebug()<<"ok";
- }
- else
- e->ignore();
- }
- void Dialog::on_OpenPortButton_clicked()
- {
- bool bPortStatus = serailPort->getPorStatus();
-
- if(bPortStatus)
- {
- serailPort->serial->close();
- serailPort->setPorStatus(false);
-
- ui->PortcomboBox->setEnabled(true);
- ui->BautRatecomboBox->setEnabled(true);
- ui->DataBitcomboBox->setEnabled(true);
- ui->ParityRatecomboBox->setEnabled(true);
- ui->StopRatecomboBox->setEnabled(true);
- ui->OpenPortButton->setText("打开串口");
- return;
- }
-
- QString strPortName = ui->PortcomboBox->currentText();
- serailPort->serial->setPortName(strPortName);
-
- QString srtBautRate = ui->BautRatecomboBox->currentText();
- int iBautRate = srtBautRate.toInt();
- serailPort->serial->setBaudRate(iBautRate);
-
- QString srtDataBit = ui->DataBitcomboBox->currentText();
- int iDataBit = srtDataBit.toInt();
- switch (iDataBit)
- {
- case 5:
- serailPort->serial->setDataBits(QSerialPort::Data5);
- break;
- case 6:
- serailPort->serial->setDataBits(QSerialPort::Data6);
- break;
- case 7:
- serailPort->serial->setDataBits(QSerialPort::Data7);
- break;
- case 8:
- serailPort->serial->setDataBits(QSerialPort::Data8);
- break;
- default:
- break;
- }
-
- QString srtParity = ui->ParityRatecomboBox->currentText();
- int iParityBitInx = ui->ParityRatecomboBox->currentIndex();
-
-
- switch (iParityBitInx)
- {
- case 0:
- serailPort->serial->setParity(QSerialPort::NoParity);
- break;
- case 1:
- serailPort->serial->setParity(QSerialPort::EvenParity);
- break;
- case 2:
- serailPort->serial->setParity(QSerialPort::OddParity);
- break;
- case 3:
- serailPort->serial->setParity(QSerialPort::MarkParity);
- break;
- case 4:
- serailPort->serial->setParity(QSerialPort::SpaceParity);
- break;
- default:
- serailPort->serial->setParity(QSerialPort::UnknownParity);
- break;
- }
-
- QString srtStop = ui->StopRatecomboBox->currentText();
- int iStopIndex = ui->StopRatecomboBox->currentIndex();
-
- switch (iStopIndex)
- {
- case 0:
- serailPort->serial->setStopBits(QSerialPort::OneStop);
- break;
- case 1:
- serailPort->serial->setStopBits(QSerialPort::OneAndHalfStop);
- break;
- case 2:
- serailPort->serial->setStopBits(QSerialPort::TwoStop);
- break;
- }
- serailPort->serial->setFlowControl(QSerialPort::NoFlowControl);
-
- if(!serailPort->serial->QSerialPort::open(QIODevice::ReadWrite))
- {
- if(serailPort->serial->isOpen())
- {
- QMessageBox::information(this,"提示","打开串口",QMessageBox::Ok);
- }
- QMessageBox::information(this,"错误提示","无法打开串口",QMessageBox::Ok);
- return;
- }
-
- ui->PortcomboBox->setEnabled(false);
- ui->BautRatecomboBox->setEnabled(false);
- ui->DataBitcomboBox->setEnabled(false);
- ui->ParityRatecomboBox->setEnabled(false);
- ui->StopRatecomboBox->setEnabled(false);
- serailPort->setPorStatus(true);
- ui->OpenPortButton->setText("关闭串口");
- }
- void Dialog::on_OpenButton_clicked()
- {
- QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
- phkcamera = new hkcamera();
- QString qstrip = ui->IPLineEdit->text();
- QString qstraccount = ui->AcccountLineEdit->text();
- QString qstrpwd = ui->PwdLineEdit->text();
- BOOL bconnect = phkcamera->connect(qstrip, 8000, qstraccount, qstrpwd);
- if(!bconnect){
- QApplication::restoreOverrideCursor();
- QMessageBox::critical(this,"错误","连接相机失败");
- return;
- }
- HWND hWnd = (HWND)ui->DisplayLabel->winId();
- BOOL bdisplaypic = phkcamera->displaypic(hWnd);
- if(!bdisplaypic){
- QApplication::restoreOverrideCursor();
- QMessageBox::critical(this,"错误","连接相机成功,但预览失败");
- return;
- }
- ui->OpenButton->setEnabled(false);
- ui->CloseButton->setEnabled(true);
- ui->SavePicButton->setEnabled(true);
- QApplication::restoreOverrideCursor();
-
- return;
- }
- void Dialog::on_SavePicButton_clicked()
- {
-
- QDateTime datetime= QDateTime::currentDateTime();
- QString strtime = datetime.toString("yyyyMMddhhmmss");
- QString qstrdir = ui->SavePicDirLineEdit->text();
- qstrdir = QDir::fromNativeSeparators(qstrdir);
- while(qstrdir.endsWith('/'))
- {
- qstrdir.chop(1);
- }
- QString qstrfilename = qstrdir + "/" + strtime + ".jpg";
- phkcamera->savepic(qstrfilename);
- }
- void Dialog::on_CloseButton_clicked()
- {
- phkcamera->stopdisplaypic();
- ui->OpenButton->setEnabled(true);
- ui->CloseButton->setEnabled(false);
- }
- void Dialog::grabPicandRes()
- {
- QString qstrdirname = "D:/irdet/grabpic";
-
-
- QDateTime datetime= QDateTime::currentDateTime();
- QString strtime = datetime.toString("yyyyMMddHHmmss");
- qint64 timestamp = QDateTime::currentDateTime().toMSecsSinceEpoch();
- QString msecsStr = QString::number(timestamp % 1000).rightJustified(3, '0');
- strtime += msecsStr;
- QString qstrfilename = qstrdirname + "/" + strtime + ".bmp";
- phkcamera->savepic(qstrfilename);
-
- QJsonObject resultObj;
- resultObj["result"] = true;
- resultObj["msg"] = "操作成功";
- QJsonObject dataObj;
- dataObj["myGrabPicPath"] = qstrfilename;
- resultObj["data"] = dataObj;
-
-
- QJsonObject responseObj;
- responseObj["interface"] = "GrabPicture";
- responseObj["param"] = resultObj;
- QJsonDocument jsonDoc(responseObj);
- QByteArray jsonData = jsonDoc.toJson(QJsonDocument::Indented);
-
- if(nullptr != ptcpSocket1)
- {
- ptcpSocket1->write(jsonData);
- ptcpSocket1->flush();
- }
- }
- void Dialog::on_SendCmdButton_clicked()
- {
-
- grabPicandRes();
- QString qstrsendpower = ui->SendLineEdit->text();
- printf("\r\n");
- std::cout <<qstrsendpower.toStdString()<< endl;
- printf("\r\n");
-
- QDir dir;
-
- QDateTime datetime= QDateTime::currentDateTime();
- QString strtime = datetime.toString("yyyyMMddhhmmss");
- QString qstrdir = ui->SavePicDirLineEdit->text();
- qstrdir = QDir::fromNativeSeparators(qstrdir);
- while(qstrdir.endsWith('/'))
- {
- qstrdir.chop(1);
- }
- QString qstrdirname = qstrdir + "/" + strtime;
- qDebug()<<qstrdirname;
- bool success = dir.mkdir(qstrdirname);
- if (!success) {
- qDebug() << "Failed to create directory!";
- QMessageBox::critical(this, tr("错误!"), tr("创建文件夹失败!"));
- return;
- }
- strnewidr = qstrdirname;
-
- serailPort->sendtext("RUN@1=1#");
-
- Sleep(1000);
- serailPort->sendtext(qstrsendpower);
-
- QString qstrheattimer = ui->RecvLineEdit_2->text();
- int iheatduration = qstrheattimer.toInt();
- hstopheattimerid = startTimer(iheatduration);
-
- QString qstrcooltimer = ui->RecvLineEdit_3->text();
- int ikillduration = iheatduration + qstrcooltimer.toInt();
- hkilltimerid = startTimer(ikillduration);
-
- QString qstsampletimer = ui->RecvLineEdit_4->text();
- int isampleduration = qstsampletimer.toInt();
- htimersampleid = startTimer(isampleduration);
- }
- void Dialog::timerEvent(QTimerEvent * ev)
- {
-
- if(ev->timerId() == htimersampleid){
- qint64 timestamp = QDateTime::currentDateTime().toMSecsSinceEpoch();
- qint64 difference = timestamp - qiheatms;
- qDebug()<<"sample timer time out"<<difference;
-
-
- QDateTime datetime= QDateTime::currentDateTime();
- QString strtime = datetime.toString("yyyyMMddHHmmss");
- QString msecsStr = QString::number(timestamp % 1000).rightJustified(3, '0');
- strtime += msecsStr;
- QString qstrdir = ui->SavePicDirLineEdit->text();
- qstrdir = QDir::fromNativeSeparators(qstrdir);
- while(qstrdir.endsWith('/'))
- {
- qstrdir.chop(1);
- }
- if((difference > 200) && (difference < 1200)){
- strtime = "F" + strtime;
- }
- QString qstrfilename = strnewidr + "/" + strtime + ".bmp";
- qDebug()<<qstrfilename;
- phkcamera->savepic(qstrfilename);
- }
-
- if(ev->timerId() == hstopheattimerid)
- {
- qDebug()<<"stop heat timer time out";
-
- serailPort->sendtext("RUN@1=0#");
- killTimer(hstopheattimerid);
- qiheatms = QDateTime::currentDateTime().toMSecsSinceEpoch();
- }
-
- if(ev->timerId() == hkilltimerid)
- {
- qDebug()<<"stop all timer time out";
-
- killTimer(htimersampleid);
- killTimer(hkilltimerid);
-
- if(nullptr != ptcpSocket)
- {
- QString strsend = strposition + "!" + strnewidr;
- ptcpSocket->write(strsend.toLatin1());
- ptcpSocket->flush();
- }
- }
- }
|