/[H7]/trunk/H7 Server/H7 ServerDlg.cpp
ViewVC logotype

Diff of /trunk/H7 Server/H7 ServerDlg.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 8 by hedin, Mon Jan 29 14:35:42 2007 UTC revision 28 by hedin, Wed Jan 31 12:42:51 2007 UTC
# Line 6  Line 6 
6  #include "H7 ServerDlg.h"  #include "H7 ServerDlg.h"
7  #include ".\h7 serverdlg.h"  #include ".\h7 serverdlg.h"
8  #include <vector>  #include <vector>
9    #include "Define.h"
10    
11  #ifdef _DEBUG  #ifdef _DEBUG
12  #define new DEBUG_NEW  #define new DEBUG_NEW
13  #endif  #endif
14    
15    
16    void WriteLastError(char *format)
17    {
18            LPVOID lpMsgBuf;
19            FormatMessage(
20                    FORMAT_MESSAGE_ALLOCATE_BUFFER |
21                    FORMAT_MESSAGE_FROM_SYSTEM |
22                    FORMAT_MESSAGE_IGNORE_INSERTS,
23                    NULL,
24                    GetLastError(),
25                    MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),      // Default language
26                    (LPTSTR) &lpMsgBuf,
27                    0,
28                    NULL
29            );
30            printf(format, lpMsgBuf);
31            CString Tmp;
32            Tmp.Format( "%s", lpMsgBuf);
33            MessageBox(0,Tmp,"",MB_OK);
34    }
35    
36      std::vector<CString> GetAvailableComPorts()      std::vector<CString> GetAvailableComPorts()
37      {      {
38          std::vector<CString> ports;          std::vector<CString> ports;
# Line 135  BOOL CH7ServerDlg::OnInitDialog() Line 156  BOOL CH7ServerDlg::OnInitDialog()
156  /**********************************************************************/  /**********************************************************************/
157          // TODO: Add extra initialization here          // TODO: Add extra initialization here
158                    
159          // Sets values in baud-rate combo box            // if there is no free com ports, the program shut down.
160          m_BaudRate.AddString("1200");                                            if (!ServerInit() )
161          m_BaudRate.AddString("2400");                                            {
162          m_BaudRate.AddString("4800");   // Don't work, used for error test.                                      OnOK();
163          m_BaudRate.AddString("9600");                                                    return false;
164          m_BaudRate.AddString("19200");          }
   
         // Checks how many COM ports there are.  
         std::vector<CString> Serial = GetAvailableComPorts();  
         for (unsigned int i=0; i<Serial.size(); i++)  
                 m_Serial.AddString(Serial[i]);  
         m_Serial.SetCurSel(0);  
   
         // Load saved settings from regedit.  
         unsigned long Port;  
         unsigned long BaudRate;  
 //      CString LoadCom;  
   
 // Used to format the loaded values.  
         CString TPort;  
         CString TBaudRate;  
   
         CRegKey reg;  
         reg.Create(HKEY_LOCAL_MACHINE, "SOFTWARE\\Projekt\\Server");  
         reg.QueryDWORDValue("Port", Port);  
         reg.QueryDWORDValue("BaudRate", BaudRate);  
   
         char LoadCom[20];  
         unsigned long size = 20;  
         reg.QueryStringValue("Serial", LoadCom, &size);  
   
         TPort.Format("%d", Port);  
         TBaudRate.Format("%d", BaudRate);  
 //      TLoadCom.Format("%s", TLoadCom);  
165    
         m_Port.SetWindowText(TPort);  
         m_BaudRate.SetWindowText(TBaudRate);  
         m_Serial.SetWindowText(LoadCom);  
         MessageBox(LoadCom);  
166  /**********************************************************************/  /**********************************************************************/
167          return TRUE;  // return TRUE  unless you set the focus to a control          return TRUE;  // return TRUE  unless you set the focus to a control
168  }  }
# Line 229  HCURSOR CH7ServerDlg::OnQueryDragIcon() Line 218  HCURSOR CH7ServerDlg::OnQueryDragIcon()
218    
219  void CH7ServerDlg::OnBnClickedStart()  void CH7ServerDlg::OnBnClickedStart()
220  {  {
221    // Add's user defined Baud-Rate to regedit before the server start.
222          CRegKey reg;          CRegKey reg;
223            CString Baud;
224            m_BaudRate.GetWindowText(Baud);
225    
226          reg.Create(HKEY_LOCAL_MACHINE, "SOFTWARE\\Projekt\\Server");          reg.Create(HKEY_LOCAL_MACHINE, "SOFTWARE\\Projekt\\Server");
227          unsigned long Port;          reg.SetDWORDValue("BaudRate", atoi(Baud) );
         reg.QueryDWORDValue("Port", Port);  
228    
229          CString tmp;          StartTcp();
230          tmp.Format("%d", Port);          StartSerial();
         m_Port.SetWindowText(tmp);  
231  }  }
232    
233  int CH7ServerDlg::StartTcp(void)  int CH7ServerDlg::StartTcp(void)
234  {  {
235    // Get the TCP Port number from regedit.
236          unsigned long Port;          unsigned long Port;
237          CRegKey reg;          CRegKey reg;
238          reg.Create(HKEY_LOCAL_MACHINE, "SOFTWARE\\Projekt\\Server");          reg.Create(HKEY_LOCAL_MACHINE, "SOFTWARE\\Projekt\\Server");
239          reg.QueryDWORDValue("Port", Port);          reg.QueryDWORDValue("Port", Port);
240            reg.Close();
241    
242    // Restats the TCP Connection
243          TcpServer.Close();          TcpServer.Close();
244    
245          TcpServer.Create(Port);          TcpServer.Create(Port);
246          TcpServer.Listen();          TcpServer.Listen();
247    
248    // Prints TCP Port number to the status box.
249            CString tmp;
250            tmp.Format("%d", Port);
251            m_Port.SetWindowText(tmp);
252    
253          return 0;          return 0;
254  }  }
255    
256  void CH7ServerDlg::OnBnClickedTest()  void CH7ServerDlg::OnBnClickedRestart()
257  {  {
258          //**************** <TCP Port section> ****************/          CWaitCursor wait;               // Musen viser timeglas.
259          CString Port = "";          CString Port;
           
260          m_Port.GetWindowText(Port);          m_Port.GetWindowText(Port);
 // Saving Port number in regedit as int  
261          CRegKey reg;          CRegKey reg;
262          reg.Create(HKEY_LOCAL_MACHINE, "SOFTWARE\\Projekt\\Server");          reg.Create(HKEY_LOCAL_MACHINE, "SOFTWARE\\Projekt\\Server");
263          reg.SetDWORDValue("Port", atoi(Port) );          reg.SetDWORDValue("Port", atoi(Port) );
264            
265            CString tmp;
266            m_Serial.GetWindowText(tmp);
267            reg.SetStringValue("Serial",tmp);
268          reg.Close();          reg.Close();
 // Debug info to the status edit box.  
         m_Status.SetWindowText(Port);  
 //**************** </TCP Port section> ****************/  
269          StartTcp();          StartTcp();
270            StartSerial();
271  }  }
272    
273    void CH7ServerDlg::OnBnClickedTest()
274    {
275    
276  void CH7ServerDlg::OnBnClickedRestart()  }
277    bool CH7ServerDlg::ServerInit(void)
278  {  {
279          CWaitCursor wait;               // Musen viser timeglas.          unsigned int i;
         CString Port;  
         m_Port.GetWindowText(Port);  
280          CRegKey reg;          CRegKey reg;
281    // Sets values in baud-rate combo box  
282            m_BaudRate.AddString("1200");                                  
283            m_BaudRate.AddString("2400");                                  
284            m_BaudRate.AddString("4800");   // Don't work, used for error test.                    
285            m_BaudRate.AddString("9600");                                  
286            m_BaudRate.AddString("19200");
287    
288            unsigned long Baud;
289            CString GetBaud;
290          reg.Create(HKEY_LOCAL_MACHINE, "SOFTWARE\\Projekt\\Server");          reg.Create(HKEY_LOCAL_MACHINE, "SOFTWARE\\Projekt\\Server");
291          reg.SetDWORDValue("Port", atoi(Port) );          reg.QueryDWORDValue("BaudRate", Baud);
292          StartTcp();  
293            switch (Baud)
294            {
295            case 1200:
296                    m_BaudRate.SetCurSel(0);
297                    break;
298            case 2400:
299                    m_BaudRate.SetCurSel(1);
300                    break;
301            case 4800:
302                    m_BaudRate.SetCurSel(2);
303                    break;
304            case 9600:
305                    m_BaudRate.SetCurSel(3);
306                    break;
307            case 19200:
308                    m_BaudRate.SetCurSel(4);
309                    break;
310            default:
311                    m_BaudRate.SetCurSel(3);
312                    break;
313            }
314    
315            m_BaudRate.GetWindowText(GetBaud);
316            reg.SetDWORDValue("BaudRate", atoi(GetBaud) );
317    
318    // Checks how many COM ports there are.
319            std::vector<CString> Serial = GetAvailableComPorts();
320            for (i=0; i<Serial.size(); i++)
321                    m_Serial.AddString(Serial[i]);
322    
323    // Load saved settings from regedit.
324            unsigned long Port;
325            unsigned long BaudRate;
326    
327            // Used to format the loaded values.
328            CString TPort;
329            CString TBaudRate;
330    
331            reg.Create(HKEY_LOCAL_MACHINE, "SOFTWARE\\Projekt\\Server");
332            reg.QueryDWORDValue("Port", Port);
333            reg.QueryDWORDValue("BaudRate", BaudRate);
334    
335            char LoadCom[20];
336            unsigned long size = 20;
337            reg.QueryStringValue("Serial", LoadCom, &size);
338    
339            TPort.Format("%d", Port);
340            TBaudRate.Format("%d", BaudRate);
341    
342            m_Port.SetWindowText(TPort);
343            m_BaudRate.SetWindowText(TBaudRate);
344            m_Serial.SetWindowText(LoadCom);
345    
346            if( Serial.size() == 0 ){
347                    MessageBox( "No (free) serial port's found" );
348                    return false;
349            }
350    // Checks for valid COM port in regedit.
351            for (i=0; i< Serial.size() ; i++)
352            {
353                    if (LoadCom == Serial[i])
354                    {
355                            m_Serial.SetCurSel(i);
356                            break;
357                    }
358            }
359            if (i == Serial.size() )
360            {
361                    m_Serial.SetCurSel(0);
362                    reg.SetStringValue("Serial", Serial[0]);
363            }
364            reg.Close();
365            return true;
366    }
367    
368    int CH7ServerDlg::StartSerial(void)
369    {
370            char SerialPort[6];
371            unsigned long size = 6;
372            unsigned long Baud;
373    
374            CRegKey reg;
375    
376            
377            reg.Create(HKEY_LOCAL_MACHINE, "SOFTWARE\\Projekt\\Server");
378    
379            reg.QueryStringValue("Serial", SerialPort, &size);
380            reg.QueryDWORDValue("BaudRate", Baud);
381    
382    // Starter Serial forbindelsen, hvis den ikke allerede er startet.
383            if (!H7Serial.isOpen())
384                    H7Serial.open(SerialPort,Baud);
385    
386    // Updater status vindue.
387            UpdateStatus( "LED3: ",H7Serial.readTarget(0) );
388            UpdateStatus( "LED4: ",H7Serial.readTarget(1) );
389            UpdateStatus( "LED5: ",H7Serial.readTarget(2) );
390            UpdateStatus( "Switch2: ",H7Serial.readTarget(3) );
391            UpdateStatus( "Switch3: ", H7Serial.readTarget(4) );
392            UpdateStatus( "Potmeter: ", H7Serial.readTarget(5) );
393            UpdateStatus( "Temperatur: ", H7Serial.readTarget(6) );
394    
395    
396    
397            H7Serial.writeTarget(LED3,OFF);
398            return 0;
399    }
400    
401    void CH7ServerDlg::NewLine(void)
402    {
403            CString nLine = "";
404            m_Status.GetWindowText(nLine);
405            if( nLine.GetLength() != 0 )
406                    nLine += "\r\n";
407            m_Status.SetWindowText(nLine);
408    }
409    
410    CString CH7ServerDlg::OnOff(int value)
411    {
412            CString Test;
413            if( value == 0 )
414                    Test = "Slukket";
415            else
416                    Test = "Tændt";
417    
418            return CString(Test);
419    }
420    
421    void CH7ServerDlg::UpdateStatus(CString name, short value)
422    {
423            CString tmp,StatusWindow;
424            tmp.Format( "%d", value );
425    
426            m_Status.GetWindowText(StatusWindow);
427            StatusWindow += name;
428            StatusWindow += tmp;
429            m_Status.SetWindowText(StatusWindow);
430            NewLine();
431    
432  }  }

Legend:
Removed from v.8  
changed lines
  Added in v.28

  ViewVC Help
Powered by ViewVC 1.1.20