Basic Image AlgorithmS Library  2.8.0
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
DPPanTiltControlDialog.cpp
1 #include "DPPanTiltControlDialog.hh"
2 #include <wx/msgdlg.h>
3 
4 using namespace BIAS;
5 using namespace std;
6 
8 DPPanTiltControlDialog(wxFrame *parent, wxWindowID id, const wxString &title )
9  : wxDialog(parent, id, title, wxDefaultPosition, wxDefaultSize,
10  wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
11 {
12  wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL );
13 
14  CenterOnScreen();
15 
16  wxBoxSizer *button_sizer_top = new wxBoxSizer( wxHORIZONTAL );
17  wxBoxSizer *button_sizer_middle = new wxBoxSizer( wxHORIZONTAL );
18  wxBoxSizer *button_sizer_bottom = new wxBoxSizer( wxHORIZONTAL );
19  wxBoxSizer *button_sizer_end = new wxBoxSizer( wxHORIZONTAL );
20 
21  button_sizer_top->Add(
22  new wxButton( this, ID_UP, wxT("Up") ),
23  0, // make horizontally unstretchable
24  wxALL, // make border all around (implicit top alignment)
25  10 ); // set border width to 10
26  button_sizer_middle->Add(
27  new wxButton( this, ID_LEFT, wxT("Left") ),
28  0, // make horizontally unstretchable
29  wxALL, // make border all around (implicit top alignment)
30  10 ); // set border width to 10
31  button_sizer_middle->Add(
32  new wxButton( this, ID_RIGHT, wxT("Right") ),
33  0, // make horizontally unstretchable
34  wxALL, // make border all around (implicit top alignment)
35  10 ); // set border width to 10
36 
37  button_sizer_middle->Add(
38  new wxButton( this, ID_AUTO, wxT("Auto") ),
39  0, // make horizontally unstretchable
40  wxALL, // make border all around (implicit top alignment)
41  10 ); // set border width to 10
42 
43  button_sizer_bottom->Add(
44  new wxButton( this, ID_DOWN, wxT("Down") ),
45  0, // make horizontally unstretchable
46  wxALL, // make border all around (implicit top alignment)
47  10 ); // set border width to 10
48  button_sizer_end->Add(
49  new wxButton( this, ID_RESET, wxT("Soft Reset") ),
50  0, // make horizontally unstretchable
51  wxALL, // make border all around (implicit top alignment)
52  10 ); // set border width to 10
53  button_sizer_end->Add(
54  new wxButton( this, ID_RESETFULL, wxT("Full Reset") ),
55  0, // make horizontally unstretchable
56  wxALL, // make border all around (implicit top alignment)
57  10 ); // set border width to 10
58  button_sizer_end->Add(
59  new wxButton( this, ID_DPQUIT, wxT("OK") ),
60  0, // make horizontally unstretchable
61  wxALL, // make border all around (implicit top alignment)
62  10 ); // set border width to 10
63 
64 
65  topsizer->Add(
66  button_sizer_top,
67  0, // make vertically unstretchable
68  wxALIGN_CENTER ); // no border and centre horizontally
69  topsizer->Add(
70  button_sizer_middle,
71  0, // make vertically unstretchable
72  wxALIGN_CENTER ); // no border and centre horizontally
73  topsizer->Add(
74  button_sizer_bottom,
75  0, // make vertically unstretchable
76  wxALIGN_CENTER ); // no border and centre horizontally
77  topsizer->Add(
78  button_sizer_end,
79  0, // make vertically unstretchable
80  wxALIGN_CENTER ); // no border and centre horizontally
81 
82 
83  SetSizer( topsizer ); // use the sizer for layout
84 
85  topsizer->SetSizeHints( this ); // set size hints to honour minimum size
86 }
87 
88 BEGIN_EVENT_TABLE(DPPanTiltControlDialog, wxDialog)
89  EVT_BUTTON(ID_LEFT,DPPanTiltControlDialog::OnLeft)
90  EVT_BUTTON(ID_RIGHT,DPPanTiltControlDialog::OnRight)
91  EVT_BUTTON(ID_UP,DPPanTiltControlDialog::OnUp)
92  EVT_BUTTON(ID_DOWN, DPPanTiltControlDialog::OnDown)
93  EVT_BUTTON(ID_AUTO, DPPanTiltControlDialog::OnAutoMove)
94  EVT_BUTTON(ID_RESET, DPPanTiltControlDialog::OnReset)
95  EVT_BUTTON(ID_RESETFULL, DPPanTiltControlDialog::OnResetFull)
96  EVT_BUTTON(ID_DPQUIT, DPPanTiltControlDialog::OnQuit)
97 END_EVENT_TABLE()
98 
99 
100 void DPPanTiltControlDialog::SetDPControl(DPPanTiltControl *dpControl)
101 {
102  pDpPanTiltControl_ = dpControl;
103  pDpPanTiltControl_->SetMode(ABSOLUTEMODE);
104  pDpPanTiltControl_->SetSpeed(DPPTU_MAXSPEED, DPPTU_MAXSPEED);
105  pDpPanTiltControl_->SetPosition(0,0);
106 }
107 
108 void DPPanTiltControlDialog::OnLeft(wxCommandEvent& WXUNUSED(event))
109 {
110 
111  pDpPanTiltControl_->MoveLeft(100);
112 }
113 
114 void DPPanTiltControlDialog::OnRight(wxCommandEvent& WXUNUSED(event))
115 {
116  pDpPanTiltControl_->MoveRight(100);
117 }
118 
119 void DPPanTiltControlDialog::OnUp(wxCommandEvent& WXUNUSED(event))
120 {
121  pDpPanTiltControl_->MoveUp(100);
122 }
123 
124 void DPPanTiltControlDialog::OnDown(wxCommandEvent& WXUNUSED(event))
125 {
126  pDpPanTiltControl_->MoveDown(100);
127 }
128 
129 void DPPanTiltControlDialog::OnAutoMove(wxCommandEvent& WXUNUSED(event))
130 {
131  wxMessageBox(wxT("Circular auto-motion has been removed from basic interface!"),
132  wxT("Error"), wxICON_ERROR);
133  //pDpPanTiltControl_->StartCircularMovement();
134 }
135 
136 void DPPanTiltControlDialog::OnResetFull(wxCommandEvent& WXUNUSED(event))
137 {
138  reset_ptu();
139 }
140 
141 void DPPanTiltControlDialog::OnReset(wxCommandEvent& WXUNUSED(event))
142 {
143  pDpPanTiltControl_->ResetPanTiltUnit();
144 }
145 void DPPanTiltControlDialog::OnQuit(wxCommandEvent& WXUNUSED(event))
146 {
147  pDpPanTiltControl_->SetMode(SPEEDMODE);
148  Close(TRUE);
149 }
void OnQuit(wxCommandEvent &event)
Basic controller interface for Directed Perception Pan Tilt Unit.
void MoveRight(int nValue)
Move camera nValue steps right.
void OnAutoMove(wxCommandEvent &event)
void MoveDown(int nValue)
Move camera nValue steps downwards.
DPPanTiltControlDialog(wxFrame *parent, wxWindowID id, const wxString &title)
void OnUp(wxCommandEvent &event)
void OnDown(wxCommandEvent &event)
void OnRight(wxCommandEvent &event)
void OnLeft(wxCommandEvent &event)
bool ResetPanTiltUnit()
Reset the position of the pan tilt unit to 0.
void MoveLeft(int nValue)
Move camera nValue steps left.
void MoveUp(int nValue)
Move camera nValue steps upwards.
int SetMode(int nMode)
Set the mode in which the camera is to operate.
void OnReset(wxCommandEvent &event)
void OnResetFull(wxCommandEvent &event)