fix various bugs
add commandline parser for various options allow cameras to be operated in serial fashion allow disabeling of quirks allow changing of Photonfocus quirk timeings
This commit is contained in:
parent
3a77df6dd5
commit
b9b4b0fc2a
10 changed files with 134 additions and 36 deletions
|
|
@ -6,7 +6,8 @@
|
|||
#include <unistd.h>
|
||||
#include <QTimer>
|
||||
|
||||
Cameras::Cameras(uvosled* led): led_(led)
|
||||
Cameras::Cameras(uvosled* led, bool quirks, bool serial):
|
||||
led_(led), quirks_(quirks), serial_(serial)
|
||||
{
|
||||
ledTimer.setSingleShot(true);
|
||||
cameraFailureTimer.setSingleShot(true);
|
||||
|
|
@ -82,7 +83,7 @@ bool Cameras::addCamera(const cam::Camera::Description& desc)
|
|||
|
||||
cameras_.back()->cam()->setExposureTime(exposrueTime_);
|
||||
|
||||
if(desc.getVendor().find("Photonfocus") != std::string::npos)
|
||||
if(quirks_ && desc.getVendor().find("Photonfocus") != std::string::npos)
|
||||
{
|
||||
qDebug()<<"Mitiagting broken PhotonFocus single shot mode";
|
||||
std::shared_ptr<Camera> camera = cameras_.back();
|
||||
|
|
@ -107,7 +108,13 @@ bool Cameras::addCamera(const cam::Camera::Description& desc)
|
|||
camera->cam()->setAcquisitionMode(cam::Camera::MODE_FREE);
|
||||
camera->cam()->setFrameRate(10);
|
||||
camera->cam()->startAcquisition();
|
||||
QTimer::singleShot(5000, [camera, this](){finishAddCamera(camera);});
|
||||
if(!serial_)
|
||||
QTimer::singleShot(quirkTime, this, [this, camera](){finishAddCamera(camera);});
|
||||
else
|
||||
{
|
||||
std::this_thread::sleep_for(std::chrono::microseconds(static_cast<long>(quirkTime*1000)));
|
||||
finishAddCamera(camera);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -147,10 +154,23 @@ void Cameras::lightOff()
|
|||
|
||||
void Cameras::trigger()
|
||||
{
|
||||
lightFor(lighting_, exposrueTime_*1.5);
|
||||
|
||||
for(auto& camera : cameras_)
|
||||
camera->cam()->trigger();
|
||||
if(serial_)
|
||||
{
|
||||
if(captureingCamera == 0)
|
||||
lightFor(lighting_, exposrueTime_*1.5*cameras_.size());
|
||||
cameras_[captureingCamera]->cam()->trigger();
|
||||
++captureingCamera;
|
||||
if(captureingCamera < cameras_.size())
|
||||
QTimer::singleShot(exposrueTime_*1000, this, &Cameras::trigger);
|
||||
else
|
||||
captureingCamera = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
lightFor(lighting_, exposrueTime_*1.5);
|
||||
for(auto& camera : cameras_)
|
||||
camera->cam()->trigger();
|
||||
}
|
||||
}
|
||||
|
||||
bool Cameras::start()
|
||||
|
|
@ -242,7 +262,12 @@ void Cameras::imageRecived(Camera::Image img)
|
|||
qDebug()<<"Recived"<<images_.size()<<"of"<<cameras_.size()<<"images";
|
||||
|
||||
if(images_.size() == 1)
|
||||
cameraFailureTimer.start(exposrueTime_*1000+1000);
|
||||
{
|
||||
if(!serial_)
|
||||
cameraFailureTimer.start(exposrueTime_*1000+1000);
|
||||
else
|
||||
cameraFailureTimer.start(exposrueTime_*1000*(cameras_.size()+1)+2000);
|
||||
}
|
||||
|
||||
if(images_.size() == cameras_.size())
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue