improve uvosled support

This commit is contained in:
2021-06-28 20:28:05 +02:00
parent 945d70b2ef
commit 27660bc842
2 changed files with 36 additions and 8 deletions

View File

@ -8,7 +8,13 @@
Cameras::Cameras(uvosled* led): led_(led) Cameras::Cameras(uvosled* led): led_(led)
{ {
ledTimer.setSingleShot(true);
connect(&ledTimer, &QTimer::timeout, this, &Cameras::lightOff);
}
Cameras::~Cameras()
{
lightOff();
} }
bool Cameras::setCameras(const std::vector<cam::Camera::Description>& descriptions) bool Cameras::setCameras(const std::vector<cam::Camera::Description>& descriptions)
@ -109,13 +115,30 @@ void Cameras::finishAddCamera(std::shared_ptr<Camera> camera)
qDebug()<<"Using camera"<<camera->id(); qDebug()<<"Using camera"<<camera->id();
} }
bool Cameras::lightFor(const LightingSetup& lighting, double time)
{
int ret = 0;
if(led_)
{
ret = uvosled_set_current(led_, lighting.mask, lighting.brightness);
ledTimer.start(time*1000);
}
return ret == 0;
}
void Cameras::lightOff()
{
if(led_)
uvosled_set_current(led_, 0xff, 0);
ledTimer.stop();
}
void Cameras::trigger() void Cameras::trigger()
{ {
lightFor(lighting_, exposrueTime_*1.5);
for(auto& camera : cameras_) for(auto& camera : cameras_)
camera->cam()->trigger(); camera->cam()->trigger();
/*if(led_ && !free_)
uvosled_capture(led_, lighting_.mask, lighting_.brightness, exposrueTime_*1.5, exposrueTime_*0.25);*/
} }
bool Cameras::start() bool Cameras::start()
@ -127,8 +150,8 @@ bool Cameras::start()
ret = false; ret = false;
} }
/*if(free_ && led_) if(free_)
uvosled_set_current(led_, lighting_.mask, lighting_.brightness);*/ uvosled_set_current(led_, lighting_.mask, lighting_.brightness);
return ret; return ret;
} }
@ -142,8 +165,7 @@ bool Cameras::stop()
ret = false; ret = false;
} }
if(led_) lightOff();
uvosled_set_current(led_, 0xFF, 0);
return ret; return ret;
} }

View File

@ -9,6 +9,7 @@
#include <stdint.h> #include <stdint.h>
#include <QSettings> #include <QSettings>
#include <opencv2/core/mat.hpp> #include <opencv2/core/mat.hpp>
#include <QTimer>
#include "profile.h" #include "profile.h"
#include "camera.h" #include "camera.h"
@ -28,10 +29,14 @@ private:
LightingSetup lighting_; LightingSetup lighting_;
std::vector<std::shared_ptr<Camera>> cameras_; std::vector<std::shared_ptr<Camera>> cameras_;
std::vector<Camera::Image> images_; std::vector<Camera::Image> images_;
QTimer ledTimer;
bool lightFor(const LightingSetup& lighting, double time);
private slots: private slots:
void imageRecived(Camera::Image img); void imageRecived(Camera::Image img);
void finishAddCamera(std::shared_ptr<Camera> camera); void finishAddCamera(std::shared_ptr<Camera> camera);
void lightOff();
signals: signals:
void cameraRemoved(std::shared_ptr<Camera> camera); void cameraRemoved(std::shared_ptr<Camera> camera);
@ -48,13 +53,14 @@ public slots:
void setLighting(const LightingSetup& lighting) {lighting_ = lighting;} void setLighting(const LightingSetup& lighting) {lighting_ = lighting;}
public: public:
Cameras(uvosled* led = nullptr);
~Cameras();
bool setCameras(const std::vector<cam::Camera::Description>& descriptions); bool setCameras(const std::vector<cam::Camera::Description>& descriptions);
bool addCamera(const cam::Camera::Description& desc); bool addCamera(const cam::Camera::Description& desc);
std::vector<cam::Camera::Description> getCameras(); std::vector<cam::Camera::Description> getCameras();
std::shared_ptr<Camera> getCamera(size_t id); std::shared_ptr<Camera> getCamera(size_t id);
size_t numCameras(){return cameras_.size();} size_t numCameras(){return cameras_.size();}
void clear(); void clear();
Cameras(uvosled* led = nullptr);
void load(QSettings& settings); void load(QSettings& settings);
void store(QSettings& settings); void store(QSettings& settings);
void disable(bool disable); void disable(bool disable);