improve uvosled support
This commit is contained in:
		
							parent
							
								
									945d70b2ef
								
							
						
					
					
						commit
						27660bc842
					
				
					 2 changed files with 36 additions and 8 deletions
				
			
		| 
						 | 
				
			
			@ -8,7 +8,13 @@
 | 
			
		|||
 | 
			
		||||
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)
 | 
			
		||||
| 
						 | 
				
			
			@ -109,13 +115,30 @@ void Cameras::finishAddCamera(std::shared_ptr<Camera> camera)
 | 
			
		|||
	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()
 | 
			
		||||
{
 | 
			
		||||
	lightFor(lighting_, exposrueTime_*1.5);
 | 
			
		||||
 | 
			
		||||
	for(auto& camera : cameras_)
 | 
			
		||||
		camera->cam()->trigger();
 | 
			
		||||
 | 
			
		||||
	/*if(led_ && !free_)
 | 
			
		||||
		uvosled_capture(led_, lighting_.mask, lighting_.brightness, exposrueTime_*1.5, exposrueTime_*0.25);*/
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool Cameras::start()
 | 
			
		||||
| 
						 | 
				
			
			@ -127,8 +150,8 @@ bool Cameras::start()
 | 
			
		|||
			ret = false;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/*if(free_ && led_)
 | 
			
		||||
		uvosled_set_current(led_, lighting_.mask, lighting_.brightness);*/
 | 
			
		||||
	if(free_)
 | 
			
		||||
		uvosled_set_current(led_, lighting_.mask, lighting_.brightness);
 | 
			
		||||
 | 
			
		||||
	return ret;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -142,8 +165,7 @@ bool Cameras::stop()
 | 
			
		|||
			ret = false;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if(led_)
 | 
			
		||||
		uvosled_set_current(led_, 0xFF, 0);
 | 
			
		||||
	lightOff();
 | 
			
		||||
	return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,6 +9,7 @@
 | 
			
		|||
#include <stdint.h>
 | 
			
		||||
#include <QSettings>
 | 
			
		||||
#include <opencv2/core/mat.hpp>
 | 
			
		||||
#include <QTimer>
 | 
			
		||||
 | 
			
		||||
#include "profile.h"
 | 
			
		||||
#include "camera.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -28,10 +29,14 @@ private:
 | 
			
		|||
	LightingSetup lighting_;
 | 
			
		||||
	std::vector<std::shared_ptr<Camera>> cameras_;
 | 
			
		||||
	std::vector<Camera::Image> images_;
 | 
			
		||||
	QTimer ledTimer;
 | 
			
		||||
 | 
			
		||||
	bool lightFor(const LightingSetup& lighting, double time);
 | 
			
		||||
 | 
			
		||||
private slots:
 | 
			
		||||
	void imageRecived(Camera::Image img);
 | 
			
		||||
	void finishAddCamera(std::shared_ptr<Camera> camera);
 | 
			
		||||
	void lightOff();
 | 
			
		||||
 | 
			
		||||
signals:
 | 
			
		||||
	void cameraRemoved(std::shared_ptr<Camera> camera);
 | 
			
		||||
| 
						 | 
				
			
			@ -48,13 +53,14 @@ public slots:
 | 
			
		|||
	void setLighting(const LightingSetup& lighting) {lighting_ = lighting;}
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
	Cameras(uvosled* led = nullptr);
 | 
			
		||||
	~Cameras();
 | 
			
		||||
	bool setCameras(const std::vector<cam::Camera::Description>& descriptions);
 | 
			
		||||
	bool addCamera(const cam::Camera::Description& desc);
 | 
			
		||||
	std::vector<cam::Camera::Description> getCameras();
 | 
			
		||||
	std::shared_ptr<Camera> getCamera(size_t id);
 | 
			
		||||
	size_t numCameras(){return cameras_.size();}
 | 
			
		||||
	void clear();
 | 
			
		||||
	Cameras(uvosled* led = nullptr);
 | 
			
		||||
	void load(QSettings& settings);
 | 
			
		||||
	void store(QSettings& settings);
 | 
			
		||||
	void disable(bool disable);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue