diff --git a/pylonrecorder.cpp b/pylonrecorder.cpp index 661cb86..21c7e7b 100644 --- a/pylonrecorder.cpp +++ b/pylonrecorder.cpp @@ -21,7 +21,6 @@ #include #include #include -#include "util.h" #if defined(QT_PRINTSUPPORT_LIB) # include @@ -120,33 +119,39 @@ PylonRecorder::PylonRecorder(QWidget *parent) applySettings(); } -void PylonRecorder::setupCameras(){ - for (auto dev : deviceList) { - std::cout << dev.GetFullName() << " " << dev.GetFriendlyName() << std::endl; - } - std::cout << "peng\n"; - std::cout << deviceList.size() << std::endl; - std::cout << "peng\n"; - - if (deviceList.size() == 0) { - qWarning() << "device list is empty!"; - QErrorMessage message(this); - message.showMessage("No camera detected!"); - } else { - std::cout << "peng\n"; - // std::string cname = (std::string)deviceList[0].GetFullName(); - // pyloncam = new PylonWrapper(cname); - qDebug() << "Creating buffer, grabber, and writer"; - buffer = new ImageBuffer(defaultBufferSize); - grabber = new Grabber(pyloncam, buffer, defaultFrameRate); - writer = new Writer(buffer); - connect(writer, &Writer::writingDone, this, &PylonRecorder::writerDone); - } -} +// void PylonRecorder::setupCameras(){ +// std::cerr << "Setting up cameras!" << std::endl; +// qDebug() << "setting up cameras"; +// for (auto dev : deviceList) { +// std::cout << dev.GetFullName() << " " << dev.GetFriendlyName() << std::endl; +// } +// std::string s = "detected "; +// s += deviceList.size(); +// s += " devices"; +// qDebug() << s.c_str(); + +// if (deviceList.size() == 0) { +// qWarning() << "device list is empty!"; +// QErrorMessage message(this); +// message.showMessage("No camera detected!"); +// } else { +// std::cout << "peng\n"; +// std::string cname = (std::string)deviceList[0].GetFullName(); +// // qDebug() << +// // pyloncam = new PylonWrapper(cname); +// qDebug() << "Creating buffer, grabber, and writer"; +// buffer = new ImageBuffer(defaultBufferSize); +// grabber = new Grabber(pyloncam, buffer, defaultFrameRate); +// writer = new Writer(buffer); +// connect(writer, &Writer::writingDone, this, &PylonRecorder::writerDone); +// } +// } void PylonRecorder::detectCameras() { + qDebug() << "Detecting devices!"; Pylon::CTlFactory& TlFactory = Pylon::CTlFactory::GetInstance(); TlFactory.EnumerateDevices(deviceList); + qDebug() << "Found devices!" << deviceList.size(); } PylonRecorder::~PylonRecorder(){ @@ -607,17 +612,14 @@ void PylonRecorder::cameraConfiguration(){ } void PylonRecorder::camerasetup() { - std::cerr << "camera settings accepted1" << std::endl; - std::cerr << d->result() << std::endl; - std::cerr << "camera settings accepted2" << std::endl; - CameraLayout l = d->layout(); - std::cerr << l.rois.size() << l.devices.size() << std::endl; - std::cerr << "camera settings accepted3" << std::endl; - + qDebug() << "Cameras setting " << ((d->result()) ? "Accepted" : "Dicarded"); + this->layout = d->layout(); delete d; } void PylonRecorder::connectCamera() { + this->layout = CameraLayout(); + qDebug() << "connecting camera(s)"; if (deviceList.size() == 0) { detectCameras(); QMessageBox msgBox; @@ -625,23 +627,29 @@ void PylonRecorder::connectCamera() { msgBox.setText(msg); msgBox.exec(); } else { - // std::string cname = (std::string)deviceList[0].GetFullName(); - // pyloncam = new PylonWrapper(cname); - // std::string message; - // bool success = pyloncam->openCamera(message); - // if (success) { - // cameraConnectedLabel->setText("connected"); - // cameraConnectedLabel->setStyleSheet("QLabel { font-size: 10px;font-family: Arial;color: green;}"); - // } else { - // QMessageBox msgBox; - // QString msg = "

Could not open camera device!

" + QString::fromStdString(message) + "

"; - // msgBox.setText(msg); - // msgBox.exec(); - // } - // statusBar()->showMessage(QString::fromStdString(message)); - // updateActions(); cameraConfiguration(); + if (layout.mode == CameraMode::single) { + qDebug() << "single camera mode"; + assert(layout.devices.size() == 1); + std::string cname = layout.devices[0]; + std::string message; + qDebug() << "connecting to camera " << cname.c_str(); + pyloncam = new PylonWrapper(cname); + bool success = pyloncam->openCamera(message); + if (success) { + cameraConnectedLabel->setText("connected"); + cameraConnectedLabel->setStyleSheet("QLabel { font-size: 10px;font-family: Arial;color: green;}"); + } else { + QMessageBox msgBox; + QString msg = "

Could not open camera device!

" + QString::fromStdString(message) + "

"; + msgBox.setText(msg); + msgBox.exec(); + } + statusBar()->showMessage(QString::fromStdString(message)); + updateActions(); + } } + qDebug() << "connecting cam(s) done!"; } @@ -803,7 +811,8 @@ void PylonRecorder::displayBufferPressure() { void PylonRecorder::grabStillFromPylon() { - if (pyloncam->isOpen()) { + qDebug() << "Grab still image form camera!"; + if (pyloncam != nullptr && pyloncam->isOpen()) { MyImage img; bool valid = pyloncam->grabFrame(img); if (valid) { @@ -814,6 +823,7 @@ void PylonRecorder::grabStillFromPylon() { } else { statusBar()->showMessage(tr("Camera is not open! Connect to camera first!")); } + qDebug() << "grabbing still image done!"; } diff --git a/pylonrecorder.h b/pylonrecorder.h index 351fe51..cb8e6a8 100644 --- a/pylonrecorder.h +++ b/pylonrecorder.h @@ -13,6 +13,7 @@ #include "writer.h" #include "projectsettings.h" #include "camconfig.h" +#include "util.h" #include #if defined(QT_PRINTSUPPORT_LIB) @@ -86,7 +87,7 @@ private: void applyScaling(); void adjustScrollBar(QScrollBar *scrollBar, double factor); void detectCameras(); - void setupCameras(); + // void setupCameras(); int defaultBufferSize = 3000, defaultFrameRate = 30, movieCount = 0, defaultExposureTime = 6000, defaultGain=13; QSettings *settings = new QSettings; QImage image; @@ -101,6 +102,7 @@ private: ImageBuffer *buffer; Grabber *grabber; Writer *writer; + CameraLayout layout; bool grabbing, stopRequest, writing, labelSwitch, dryRun; QPalette progressPalette; QString activeLabelStyleHigh = "QLabel { font-size: 10pt;font-family: Arial; color : red; }";