Basic Image AlgorithmS Library  2.8.0
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
wxTauControlFrame.cpp
1 #include "wxTauControlFrame.h"
2 #ifdef WIN32
3 #include <windows.h>
4 #endif
5 #include <Base/Common/W32Compat.hh>
6 #include <Gui/StringConv.hh>
7 #include <wx/msgdlg.h>
8 #include <iostream>
9 #include <sstream>
10 
11 using namespace BIAS;
12 using namespace std;
13 
15 :
17 {
18  m_notebook1->Enable(false);
19  wxString text= wxT("Not Connected!");
20  SetStatusText(text, 0);
21 #ifdef WIN32
22  m_textCtrlDevice->SetValue(AsciiToWx("COM0"));
23 #endif
24 }
25 
26 void wxTauControlFrame::OnSetFFC( wxCommandEvent& event )
27 {
28  if(!serialFlirControl_.IsConnected()) return;
29  //0 = manual, 1= auto, 2= external
30  int sel = m_radioBoxFFC->GetSelection();
31  int ffcInterval = atoi(m_textFFCInterval->GetValue().ToAscii());
32  int ffcTmpChange = atoi(m_textCtrlTempChange->GetValue().ToAscii());
33  int ffcLGInterval = atoi(m_textCtrlLGFFCInt->GetValue().ToAscii());
34  int ffcLGTmpChange = atoi(m_textCtrlLGTC->GetValue().ToAscii());
35  //mode
36  FLIR_STATUS_MESSAGE ret = serialFlirControl_.SetFFCMode(sel);
37  if(ret != CAM_OK){
38  biasusleep(500);
39  ret = serialFlirControl_.SetFFCMode(sel);
40  if(ret != CAM_OK){
41  wxString text= wxT("Failed, try again!");
42  SetStatusText(text, 0);
43  }
44  }
45  //interval
46  ret = serialFlirControl_.SetFFCInterval(ffcInterval,ffcLGInterval);
47  if(ret != CAM_OK){
48  biasusleep(500);
49  ret = serialFlirControl_.SetFFCInterval(ffcInterval,ffcLGInterval);
50  if(ret != CAM_OK){
51  wxString text= wxT("Failed, try again!");
52  SetStatusText(text, 0);
53  }
54  }
55  //temp change
56  ret = serialFlirControl_.SetFFCTempChange(ffcTmpChange,ffcLGTmpChange);
57  if(ret != CAM_OK){
58  biasusleep(500);
59  ret = serialFlirControl_.SetFFCTempChange(ffcTmpChange,ffcLGTmpChange);
60  if(ret != CAM_OK){
61  wxString text= wxT("Failed, try again!");
62  SetStatusText(text, 0);
63  }
64  }
65 }
66 
67 void wxTauControlFrame::OnOperationMode( wxCommandEvent& event )
68 {
69  if(!serialFlirControl_.IsConnected()) return;
70  int sel = event.GetInt();
71  if(sel == 0) sel = 0; //real time
72  if(sel == 1) sel = 1; //frozen
73  else sel = 0; //real time
74  FLIR_STATUS_MESSAGE ret = serialFlirControl_.SetVideoMode(sel);
75  if(ret != CAM_OK){
76  biasusleep(500);
78  if(ret != CAM_OK){
79  wxString text= wxT("Failed, try again!");
80  SetStatusText(text, 0);
81  }
82  }
83 }
84 
85 void wxTauControlFrame::OnTestPattern( wxCommandEvent& event )
86 {
87  // TODO: Implement OnTestPattern
88 }
89 
90 void wxTauControlFrame::OnExternalSync( wxCommandEvent& event )
91 {
92  if(!serialFlirControl_.IsConnected()) return;
93  int sel = event.GetInt();
94  //Disable=0, slave=1, master=2
95  FLIR_STATUS_MESSAGE ret = serialFlirControl_.SetExternalSync(sel);
96  if(ret != CAM_OK){
97  biasusleep(500);
99  }
100  if(ret == CAM_OK){
101  wxString text= wxT("Set external sync mode.");
102  SetStatusText(text, 0);
103  }
104  else{
105  stringstream txt; txt<<"Could not set external sync:";
107  wxString text= AsciiToWx(txt.str());
108  SetStatusText(text, 0);
109  }
110 }
111 
112 void wxTauControlFrame::OnGainMode( wxCommandEvent& event )
113 {
114  if(!serialFlirControl_.IsConnected()) return;
115  int sel = event.GetInt();
116  //Auto=0, Low=1, High=2, Manual=3
117  FLIR_STATUS_MESSAGE ret = serialFlirControl_.SetGainMode(sel);
118  if(ret != CAM_OK){
119  biasusleep(500);
120  ret = serialFlirControl_.SetGainMode(sel);
121  }
122  if(ret == CAM_OK){
123  wxString text= wxT("Set gain mode.");
124  SetStatusText(text, 0);
125  }
126  else{
127  stringstream txt; txt<<"Could not set gain mode:";
129  wxString text= AsciiToWx(txt.str());
130  SetStatusText(text, 0);
131  }
132 }
133 
134 void wxTauControlFrame::OnReset( wxCommandEvent& event )
135 {
136  if(!serialFlirControl_.IsConnected()) return;
137  FLIR_STATUS_MESSAGE ret = serialFlirControl_.SetDefaults();
138  if(ret != CAM_OK){
139  biasusleep(500);
141  }
142  if(ret == CAM_OK){
143  wxString text= wxT("Reset Camera.");
144  SetStatusText(text, 0);
145  }
146  else{
147  stringstream txt; txt<<"Could not reset camera:";
149  wxString text= AsciiToWx(txt.str());
150  SetStatusText(text, 0);
151  }
152 }
153 
154 void wxTauControlFrame::OnOrientation( wxCommandEvent& event )
155 {
156  if(!serialFlirControl_.IsConnected()) return;
157  int sel = event.GetInt();
158  cout<<"Orientation selection:"<<sel<<endl;
159  FLIR_STATUS_MESSAGE ret = serialFlirControl_.SetVideoOrientation(sel);
160  if(ret != CAM_OK){
161  biasusleep(500);
163  }
164  if(ret == CAM_OK){
165  wxString text= wxT("Set Orientation.");
166  SetStatusText(text, 0);
167  }
168  else{
169  stringstream txt; txt<<"Could not set orientation:";
171  wxString text= AsciiToWx(txt.str());
172  SetStatusText(text, 0);
173  }
174 }
175 
176 void wxTauControlFrame::OnPolarity( wxCommandEvent& event )
177 {
178  if(!serialFlirControl_.IsConnected()) return;
179  FLIR_STATUS_MESSAGE ret = serialFlirControl_.SetColoring(m_choicePolarity->GetSelection());
180  if(ret != CAM_OK){
181  biasusleep(500);
182  ret = serialFlirControl_.SetColoring(m_choicePolarity->GetSelection());
183  }
184  if(ret == CAM_OK){
185  wxString text= wxT("Set Polarity.");
186  SetStatusText(text, 0);
187  }
188  else{
189  stringstream txt; txt<<"Could not set polarity:";
191  wxString text= AsciiToWx(txt.str());
192  SetStatusText(text, 0);
193  }
194 }
195 
196 void wxTauControlFrame::OnZoom( wxCommandEvent& event )
197 {
198  if(!serialFlirControl_.IsConnected()) return;
199  int sel = event.GetInt();
200  if(sel == 0) sel = 0; //no zoom
201  if(sel == 1) sel = 4; //2x zoom
202  if(sel == 2) sel = 8; //4x zoom
203  FLIR_STATUS_MESSAGE ret = serialFlirControl_.SetVideoMode(sel);
204  if(ret != CAM_OK){
205  biasusleep(500);
206  ret = serialFlirControl_.SetVideoMode(sel);
207  }
208  if(ret == CAM_OK){
209  wxString text= wxT("Set Zoom.");
210  SetStatusText(text, 0);
211  }
212  else{
213  stringstream txt; txt<<"Could not set zoom:";
215  wxString text= AsciiToWx(txt.str());
216  SetStatusText(text, 0);
217 
218  }
219 }
220 
221 void wxTauControlFrame::OnFFCWarning( wxCommandEvent& event )
222 {
223  // TODO: Implement OnFFCWarning
224 }
225 
226 void wxTauControlFrame::OnScrollDDE( wxScrollEvent& event )
227 {
228  // TODO: Implement OnScrollDDE
229 }
230 
231 void wxTauControlFrame::OnVideoStandard( wxCommandEvent& event )
232 {
233  if(!serialFlirControl_.IsConnected()) return;
234  int sel = event.GetInt();
235 
236  FLIR_STATUS_MESSAGE ret = serialFlirControl_.SetVideoStandard(sel);
237  if(ret != CAM_OK){
238  biasusleep(500);
240  }
241  if(ret == CAM_OK){
242  wxString text= wxT("Set Video Standard.");
243  SetStatusText(text, 0);
244  }
245  else{
246  stringstream txt; txt<<"Could not set video standard:";
248  wxString text= AsciiToWx(txt.str());
249  SetStatusText(text, 0);
250  }
251 }
252 
253 void wxTauControlFrame::OnAlgorithm( wxCommandEvent& event )
254 {
255 if(!serialFlirControl_.IsConnected()) return;
256  int sel = event.GetInt();
257 
258  FLIR_STATUS_MESSAGE ret = serialFlirControl_.SetAGCAlgorithm(sel);
259  if(ret != CAM_OK){
260  biasusleep(500);
262  }
263  if(ret == CAM_OK){
264  wxString text= wxT("Set AGC Algorithm.");
265  SetStatusText(text, 0);
266  }
267  else{
268  stringstream txt; txt<<"Could not set AGC Algorithm :";
270  wxString text= AsciiToWx(txt.str());
271  SetStatusText(text, 0);
272  }
273 }
274 
275 void wxTauControlFrame::OnPlateauValue( wxCommandEvent& event )
276 {
277  // TODO: Implement OnPlateauValue
278 }
279 
280 void wxTauControlFrame::OnMaxGain( wxCommandEvent& event )
281 {
282  // TODO: Implement OnMaxGain
283 }
284 
285 void wxTauControlFrame::OnContrast( wxScrollEvent& event )
286 {
287  // TODO: Implement OnContrast
288 }
289 
290 void wxTauControlFrame::OnBrightness( wxScrollEvent& event )
291 {
292  // TODO: Implement OnBrightness
293 }
294 
295 void wxTauControlFrame::OnBrightnessBias( wxScrollEvent& event )
296 {
297  // TODO: Implement OnBrightnessBias
298 }
299 
301 OnSetSpotMeterMode( wxCommandEvent& event ){
302  if(!serialFlirControl_.IsConnected()) return;
303  int sel = event.GetInt();
304  FLIR_STATUS_MESSAGE ret = serialFlirControl_.SetSpotMeterMode(sel);
305  if(ret != CAM_OK){
306  biasusleep(500);
308  }
309  if(ret == CAM_OK){
310  wxString text= wxT("Set Spot Meter Mode.");
311  SetStatusText(text, 0);
312  }
313  else{
314  stringstream txt; txt<<"Could not set Spot Meter Mode:";
316  wxString text= AsciiToWx(txt.str());
317  SetStatusText(text, 0);
318  }
319 }
320 
322 OnGetSpotMeterValue( wxCommandEvent& event ){
323  if(!serialFlirControl_.IsConnected()) return;
324  double deg=0;
325  FLIR_STATUS_MESSAGE ret = serialFlirControl_.GetSpotMeterCelcius(deg);
326  if(ret != CAM_OK){
327  biasusleep(500);
329  }
330  if(ret == CAM_OK){
331  stringstream d; d<< deg;
332  m_textCtrSpotMeterValue->SetValue(AsciiToWx(d.str()));
333  wxString text= wxT("Got Spot Meter Mode Value.");
334  SetStatusText(text, 0);
335  }
336  else{
337  stringstream txt; txt<<"Could not get Spot Meter Mode:";
339  wxString text= AsciiToWx(txt.str());
340  SetStatusText(text, 0);
341  }
342 }
343 
345 OnSpotMeterDisplay( wxCommandEvent& event ){
346  if(!serialFlirControl_.IsConnected()) return;
347  int sel = event.GetInt();
348  FLIR_STATUS_MESSAGE ret = serialFlirControl_.SetSpotMeterDisplay(sel);
349  if(ret != CAM_OK){
350  biasusleep(500);
352  }
353  if(ret == CAM_OK){
354  wxString text= wxT("Set Spot Meter Mode.");
355  SetStatusText(text, 0);
356  }
357  else{
358  stringstream txt; txt<<"Could not set display:";
360  wxString text= AsciiToWx(txt.str());
361  SetStatusText(text, 0);
362  }
363 }
364 
365 void wxTauControlFrame::OnConnect( wxCommandEvent& event )
366 {
367  wxString dev = m_textCtrlDevice->GetValue();
368 
369  FLIR_STATUS_MESSAGE ret = CAM_OK;
370  //bool tryToConnect=false;
372  //tryToConnect = false;
374  }
375  else{
376  //tryToConnect = true;
377  ret = serialFlirControl_.ConnectCamera(WxToAscii(dev));
378  }
379 
380  if(ret!=CAM_OK){
381  wxMessageDialog messageDialog(this,
382  wxT("Sorry, could not communicate with Flir thermal camera!"),
383  wxT("ShowCamWx - FLIR "), wxICON_ERROR | wxOK);
384  messageDialog.ShowModal();
385  }
386 
388  m_buttonConnect->SetLabel(AsciiToWx("Disconnect"));
389  m_notebook1->Enable(true);
390  string serial; serialFlirControl_.GetSerialNumber(serial);
391  stringstream txt; txt<<"Connected! Camera Serial Number:Sensor Serial Number ";
392  txt<<serial;
393  wxString text= AsciiToWx(txt.str());
394  SetStatusText(text, 0);
395  }
396  else{
397  m_buttonConnect->SetLabel(AsciiToWx("Connect"));
398  m_notebook1->Enable(false);
399  wxString text= wxT("Disconnected!");
400  SetStatusText(text, 0);
401  }
402 
403 }
404 
405 void wxTauControlFrame::OnClose( wxCommandEvent& event )
406 {
409  Show(false);
410 }
Class wxTauControlFrameInterface.
FLIR_STATUS_MESSAGE SetSpotMeterDisplay(unsigned spotmeter)
BIAS::FlirThermalCameraSerialControl serialFlirControl_
void OnBrightness(wxScrollEvent &event)
FLIR_STATUS_MESSAGE DisconnectCamera()
disconnnect camera control
void OnExternalSync(wxCommandEvent &event)
void OnOrientation(wxCommandEvent &event)
wxString AsciiToWx(const char *thestring)
Converts a C string to a wxString.
Definition: StringConv.hh:32
bool IsConnected()
check whether camera control is connected
FLIR_STATUS_MESSAGE SetSpotMeterMode(unsigned spotmeter)
FLIR_STATUS_MESSAGE GetSpotMeterCelcius(double &degree)
FLIR_STATUS_MESSAGE SetFFCTempChange(unsigned tmpChange, unsigned tmpChangeLowGain)
Set the flat field correction max temp change.
void OnBrightnessBias(wxScrollEvent &event)
std::string StatusCodeToString(FLIR_STATUS_MESSAGE code)
FLIR_STATUS_MESSAGE SetDefaults()
set default camera parameters
void OnZoom(wxCommandEvent &event)
void OnOperationMode(wxCommandEvent &event)
void OnPolarity(wxCommandEvent &event)
FLIR_STATUS_MESSAGE SetFFCInterval(unsigned interval, unsigned intervalLowGain)
Set the flat field correction interval in frames.
FLIR_STATUS_MESSAGE SetVideoOrientation(unsigned orientation)
set orientation of video allowed range 0,...,4 0 = normal 1 = Invert 2 = Revert 3 = Invert and Revert...
FLIR_STATUS_MESSAGE SetGainMode(unsigned mode)
sets the gain mode
void OnContrast(wxScrollEvent &event)
FLIR_STATUS_MESSAGE SetVideoMode(unsigned level)
allowed values are 0,1,4,8 0=real time 1 = freeze frame 4 = 2x zoom 8 = 4x zoom
void OnVideoStandard(wxCommandEvent &event)
FLIR_STATUS_MESSAGE SetColoring(unsigned color)
set different color shemes allowed range 0,...,12
void OnPlateauValue(wxCommandEvent &event)
FLIR_STATUS_MESSAGE GetSerialNumber(std::string &serial)
void OnGainMode(wxCommandEvent &event)
FLIR_STATUS_MESSAGE SetFFCMode(unsigned mode)
Set the flat field correction allowed values 0,1,2.
void OnReset(wxCommandEvent &event)
void OnGetSpotMeterValue(wxCommandEvent &event)
void OnScrollDDE(wxScrollEvent &event)
void OnSetFFC(wxCommandEvent &event)
void OnSpotMeterDisplay(wxCommandEvent &event)
FLIR_STATUS_MESSAGE SetExternalSync(unsigned sync)
sets the gain mode
FLIR_STATUS_MESSAGE ConnectCamera(std::string port)
connect over serial port
void OnFFCWarning(wxCommandEvent &event)
FLIR_STATUS_MESSAGE SetAGCAlgorithm(unsigned algo)
Set the algorithm for Automatic Gain Control.
void OnConnect(wxCommandEvent &event)
void OnTestPattern(wxCommandEvent &event)
FLIR_STATUS_MESSAGE SetVideoStandard(unsigned std)
set the video standard 0=NTSC 1=PAL
void OnClose(wxCommandEvent &event)
void OnSetSpotMeterMode(wxCommandEvent &event)
void OnMaxGain(wxCommandEvent &event)
void OnAlgorithm(wxCommandEvent &event)
wxTauControlFrame(wxWindow *parent)
Constructor.