CameraThread.h

Go to the documentation of this file.
00001 /*
00002 *       This file contains class that represents thread with camera input.
00003 *
00004 *       Author:
00005 *                       Tomas Mrkvicka
00006 *                       xmrkvi03@stud.fit.vutbr.cz
00007 *
00008 */
00009 
00010 #include <windows.h>
00011 
00012 //FORWARD DECLARATIONS
00013 namespace NSPipeline
00014 {
00015         class TCameraThread;
00016 };
00017 
00018 #ifndef _PIPELINE_CAMERATHREAD_HH_
00019 #define _PIPELINE_CAMERATHREAD_HH_
00020 
00021 #include "pipeline/Thread.h"
00022 #include "pipeline/CriticalSection.h"
00023 #include "pipeline/Dispatcher.h"
00024 #include "pipeline/Image.h"
00025 #include "pipeline/CameraAbstract.h"
00026 
00027 namespace NSPipeline
00028 {
00029 
00030 ////////////////////////////////////////////////////////////////////////////////
00031 ////////////////////////////////////////////////////////////////////////////////
00032 ////////////////////////////////////////////////////////////////////////////////
00033 // TCameraThread
00034 
00035 /** Tato trida reprezentuje vlakno s bezici kamerou.
00036 *
00037 *       Kamera a dispatcher musi byt predany do objektu. Oba objekty musi byt pozdeji zniceny
00038 *       po zniceni tohoto objektu (tedy tento objekt neprebira referenci a zodpovednost za tyto objekty).
00039 *
00040 *       Pri vytvareni je pro objekt zadan interval v milisekundach, ktery uplyne mezi ziskanim dvou snimku.
00041 *
00042 *       Trida vytvori pro kameru alokator snimku, jehoz velikost lze ovlivnit. Jakmile nejsou k dispozici
00043 *       zadne dalsi snimky pak kamera negeneruje zadna dalsi snimky.
00044 *
00045 *       \warning Tento objekt udrzuje manager snimku a proto muze byt odstranen pouze tehdy, kdyz v aplikaci
00046 *       neexistuji reference na snimky.
00047 */
00048 class TCameraThread
00049 {
00050 //PUBLIC METHODS
00051 public:
00052         TCameraThread( TDispatcher * dispatcher, TCameraAbstract * camera, DWORD sleepTime, DWORD reservedFrames = 100 );
00053         ~TCameraThread(void);
00054 
00055         BOOL                                    Start(void);
00056         BOOL                                    Stop(void);
00057 
00058         DWORD                                   GetSleepTime(void) const;
00059 
00060 //STATIC PRIVATE METHODS
00061 private:
00062         static DWORD WINAPI             TCameraDLLRun(void* ptr);
00063 
00064 //PRIVATE FAKE METHODS
00065 private:
00066                                                         TCameraThread( const TCameraThread & orig );///< falesny kopirovaci konstruktor
00067         void                                    operator=( const TCameraThread & orig );        ///< falesny operator prirazeni
00068 
00069 
00070 //PRIVATE COMPONENTS
00071 private:
00072         TThread*                                m_thread;               ///< vlakno pro beh teto kamery
00073         bool                                    m_isRunning;    ///< urcuje zda kamera (vlakno) bezi
00074 
00075         TCameraAbstract*                m_camera;               ///< objekt pro ziskavani obrazovych dat (exteni objekt)
00076         DWORD                                   m_sleepTime;    ///< pocet milisekund mezi ziskanim dvou snimku 
00077 
00078         TDispatcher*                    m_dispatcher;   ///< dispatcher do ktereho se predavaji vytvorene snimky
00079                                                                                         ///< (externi objekt)
00080         
00081         TImageSetManager*               m_manager;              ///< manazer snimku
00082 };
00083 //OK 2007-08-25 15:21:35 B04-315B\Tom
00084 
00085 /** Vrati cas, ktery uplyne mezi ziskanim dvou snimku z kamery.
00086 *
00087 *       Cas je uveden v milisekundach.
00088 */
00089 inline DWORD TCameraThread::GetSleepTime(void) const
00090 {
00091         return m_sleepTime;
00092 }
00093 //OK 2007-08-25 15:21:51 B04-315B\Tom
00094 
00095 // TCameraThread
00096 ////////////////////////////////////////////////////////////////////////////////
00097 ////////////////////////////////////////////////////////////////////////////////
00098 ////////////////////////////////////////////////////////////////////////////////
00099 
00100 }; //END of NSPipeline
00101 using namespace NSPipeline;
00102 
00103 #endif

Generated on Sat Nov 17 16:23:26 2007 for Image Processing Pipeline by  doxygen 1.4.6-NO