Changeset 15 in flair-src for trunk/lib/FlairSensorActuator/src/SimuCamera.cpp
- Timestamp:
- Apr 8, 2016, 3:40:57 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/lib/FlairSensorActuator/src/SimuCamera.cpp
r3 r15 29 29 using namespace flair::gui; 30 30 31 namespace flair { namespace sensor { 31 namespace flair { 32 namespace sensor { 32 33 33 SimuCamera::SimuCamera(const FrameworkManager* parent,string name,uint16_t width,uint16_t height,uint8_t channels,uint32_t dev_id,uint8_t priority) :Thread(parent,name,priority),Camera(parent,name,width,height,cvimage::Type::Format::BGR) { 34 data_rate=new SpinBox(GetGroupBox()->NewRow(),"data rate"," Hz",1,100,1,50); 34 SimuCamera::SimuCamera(const FrameworkManager *parent, string name, 35 uint16_t width, uint16_t height, uint8_t channels, 36 uint32_t dev_id, uint8_t priority) 37 : Thread(parent, name, priority), 38 Camera(parent, name, width, height, cvimage::Type::Format::BGR) { 39 data_rate = 40 new SpinBox(GetGroupBox()->NewRow(), "data rate", " Hz", 1, 100, 1, 50); 35 41 36 buf_size=width*height*channels;42 buf_size = width * height * channels; 37 43 38 img=cvCreateImage(cvSize(width,height),IPL_DEPTH_8U,3);39 output->img->imageData=img->imageData;44 img = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 3); 45 output->img->imageData = img->imageData; 40 46 41 42 43 shmem=new SharedMem((Thread*)this,dev_name.str().c_str(),buf_size);47 ostringstream dev_name; 48 dev_name << "simu_cam_" << dev_id; 49 shmem = new SharedMem((Thread *)this, dev_name.str().c_str(), buf_size); 44 50 } 45 51 46 SimuCamera::SimuCamera(const IODevice* parent,string name,uint16_t width,uint16_t height,uint8_t channels,uint32_t dev_id) : Thread(parent,name,0),Camera(parent,name) { 47 data_rate=NULL; 52 SimuCamera::SimuCamera(const IODevice *parent, string name, uint16_t width, 53 uint16_t height, uint8_t channels, uint32_t dev_id) 54 : Thread(parent, name, 0), Camera(parent, name) { 55 data_rate = NULL; 48 56 49 ostringstream dev_name; 50 dev_name << "simu_cam_" << dev_id; 51 shmem=new SharedMem((Thread*)this,dev_name.str().c_str(),width*height*channels); 57 ostringstream dev_name; 58 dev_name << "simu_cam_" << dev_id; 59 shmem = new SharedMem((Thread *)this, dev_name.str().c_str(), 60 width * height * channels); 52 61 } 53 62 54 63 SimuCamera::~SimuCamera() { 55 56 64 SafeStop(); 65 Join(); 57 66 } 58 67 59 68 void SimuCamera::Run(void) { 60 if(data_rate==NULL) { 61 Thread::Err("not applicable for simulation part.\n"); 62 return; 69 if (data_rate == NULL) { 70 Thread::Err("not applicable for simulation part.\n"); 71 return; 72 } 73 74 SetPeriodUS((uint32_t)(1000000. / data_rate->Value())); 75 76 while (!ToBeStopped()) { 77 WaitPeriod(); 78 79 if (data_rate->ValueChanged() == true) { 80 SetPeriodUS((uint32_t)(1000000. / data_rate->Value())); 63 81 } 64 82 65 SetPeriodUS((uint32_t)(1000000./data_rate->Value())); 83 output->GetMutex(); 84 shmem->Read((char *)img->imageData, buf_size); // remplacer copie par 85 // échange de pointeur sur 86 // double buffering 87 output->ReleaseMutex(); 66 88 67 while(!ToBeStopped()) { 68 WaitPeriod(); 89 output->SetDataTime(GetTime()); 69 90 70 if(data_rate->ValueChanged()==true) { 71 SetPeriodUS((uint32_t)(1000000./data_rate->Value())); 72 } 73 74 output->GetMutex(); 75 shmem->Read((char*)img->imageData,buf_size); // remplacer copie par échange de pointeur sur double buffering 76 output->ReleaseMutex(); 77 78 output->SetDataTime(GetTime()); 79 80 ProcessUpdate(output); 81 } 91 ProcessUpdate(output); 92 } 82 93 } 83 94
Note:
See TracChangeset
for help on using the changeset viewer.