/[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 18 by hedin, Mon Jan 29 16:18:31 2007 UTC revision 19 by hedin, Tue Jan 30 16:13:27 2007 UTC
# Line 12  Line 12 
12  #endif  #endif
13    
14    
15    void WriteLastError(char *format)
16    {
17            LPVOID lpMsgBuf;
18            FormatMessage(
19                    FORMAT_MESSAGE_ALLOCATE_BUFFER |
20                    FORMAT_MESSAGE_FROM_SYSTEM |
21                    FORMAT_MESSAGE_IGNORE_INSERTS,
22                    NULL,
23                    GetLastError(),
24                    MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),      // Default language
25                    (LPTSTR) &lpMsgBuf,
26                    0,
27                    NULL
28            );
29            printf(format, lpMsgBuf);
30            CString Tmp;
31            Tmp.Format( "%s", lpMsgBuf);
32            MessageBox(0,Tmp,"",MB_OK);
33    }
34    
35      std::vector<CString> GetAvailableComPorts()      std::vector<CString> GetAvailableComPorts()
36      {      {
37          std::vector<CString> ports;          std::vector<CString> ports;
# Line 135  BOOL CH7ServerDlg::OnInitDialog() Line 155  BOOL CH7ServerDlg::OnInitDialog()
155  /**********************************************************************/  /**********************************************************************/
156          // TODO: Add extra initialization here          // TODO: Add extra initialization here
157                    
158          ServerInit();          // if there is no free com ports, the program shut down.
159            if (!ServerInit() )
160            {
161                    OnOK();
162                    return false;
163            }
164    
165  /**********************************************************************/  /**********************************************************************/
166          return TRUE;  // return TRUE  unless you set the focus to a control          return TRUE;  // return TRUE  unless you set the focus to a control
# Line 192  HCURSOR CH7ServerDlg::OnQueryDragIcon() Line 217  HCURSOR CH7ServerDlg::OnQueryDragIcon()
217    
218  void CH7ServerDlg::OnBnClickedStart()  void CH7ServerDlg::OnBnClickedStart()
219  {  {
 // Get TCp port  
         CRegKey reg;  
         reg.Create(HKEY_LOCAL_MACHINE, "SOFTWARE\\Projekt\\Server");  
         unsigned long Port;  
         reg.QueryDWORDValue("Port", Port);  
   
220  // Add's user defined Baud-Rate to regedit before the server start.  // Add's user defined Baud-Rate to regedit before the server start.
221            CRegKey reg;
222          CString Baud;          CString Baud;
223          m_BaudRate.GetWindowText(Baud);          m_BaudRate.GetWindowText(Baud);
224    
225            reg.Create(HKEY_LOCAL_MACHINE, "SOFTWARE\\Projekt\\Server");
226          reg.SetDWORDValue("BaudRate", atoi(Baud) );          reg.SetDWORDValue("BaudRate", atoi(Baud) );
227    
228          StartTcp();          StartTcp();
229            StartSerial();
230  }  }
231    
232  int CH7ServerDlg::StartTcp(void)  int CH7ServerDlg::StartTcp(void)
233  {  {
234  // Gets the TCP Port number from regedit.  // Get the TCP Port number from regedit.
235          unsigned long Port;          unsigned long Port;
236          CRegKey reg;          CRegKey reg;
237          reg.Create(HKEY_LOCAL_MACHINE, "SOFTWARE\\Projekt\\Server");          reg.Create(HKEY_LOCAL_MACHINE, "SOFTWARE\\Projekt\\Server");
# Line 249  void CH7ServerDlg::OnBnClickedTest() Line 272  void CH7ServerDlg::OnBnClickedTest()
272  {  {
273                    
274  }  }
275  void CH7ServerDlg::ServerInit(void)  bool CH7ServerDlg::ServerInit(void)
276  {  {
277          int i;          unsigned int i;
278          CRegKey reg;          CRegKey reg;
279  // Sets values in baud-rate combo box    // Sets values in baud-rate combo box  
280          m_BaudRate.AddString("1200");                                            m_BaudRate.AddString("1200");                                  
# Line 318  void CH7ServerDlg::ServerInit(void) Line 341  void CH7ServerDlg::ServerInit(void)
341          m_BaudRate.SetWindowText(TBaudRate);          m_BaudRate.SetWindowText(TBaudRate);
342          m_Serial.SetWindowText(LoadCom);          m_Serial.SetWindowText(LoadCom);
343    
344            if( Serial.size() == 0 ){
345                    MessageBox( "No (free) serial port's found" );
346                    return false;
347            }
348  // Checks for valid COM port in regedit.  // Checks for valid COM port in regedit.
349          for (i=0; i< Serial.size() ; i++)          for (i=0; i< Serial.size() ; i++)
350          {          {
# Line 333  void CH7ServerDlg::ServerInit(void) Line 360  void CH7ServerDlg::ServerInit(void)
360                  reg.SetStringValue("Serial", Serial[0]);                  reg.SetStringValue("Serial", Serial[0]);
361          }          }
362          reg.Close();          reg.Close();
363            return true;
364    }
365    
366    int CH7ServerDlg::StartSerial(void)
367    {
368            char SerialPort[6];
369            unsigned long size = 6;
370            unsigned long Baud;
371            CRegKey reg;
372            
373            reg.Create(HKEY_LOCAL_MACHINE, "SOFTWARE\\Projekt\\Server");
374    
375            reg.QueryStringValue("Serial", SerialPort, &size);
376            reg.QueryDWORDValue("BaudRate", Baud);
377    
378            HANDLE hComPort;
379    
380            hComPort = CreateFile( "COM1",
381                                                                                    GENERIC_READ | GENERIC_WRITE,
382                                                                                    0,
383                                                                                    0,
384                                                                                    OPEN_EXISTING,
385                                                                                    FILE_ATTRIBUTE_NORMAL,
386                                                                                    0
387                                                                            );
388    
389            // Error check.
390            if( hComPort == INVALID_HANDLE_VALUE ){
391                    WriteLastError("Fail\n%s\n");
392                    return 1;
393            }
394    
395    
396            DCB dcb, dcb_restore;
397            
398            // DCB structure for com port setup
399            dcb.DCBlength = sizeof(DCB);
400            dcb_restore.DCBlength = sizeof(DCB);
401    
402            // Error check.
403            if( (!GetCommState(hComPort, &dcb)) ||
404                    (!GetCommState(hComPort, &dcb_restore)) ){
405                    WriteLastError("Fail\n%s\n");
406                    return 2;
407                    }
408    
409            // Init com port setup
410            dcb.BaudRate            = Baud;
411            dcb.ByteSize            = 8;
412            dcb.Parity                      = NOPARITY;
413            dcb.StopBits            = ONESTOPBIT;
414            dcb.fDtrControl         = DTR_CONTROL_DISABLE;
415            dcb.fRtsControl         = RTS_CONTROL_DISABLE;
416            dcb.fParity                     = FALSE;
417            dcb.fDsrSensitivity = FALSE;
418    
419            if( !SetCommState(hComPort,&dcb) ){
420                    WriteLastError("Fail\n%s\n");
421                    return 3;
422            }
423        
424            // ready to send stuff...
425    
426    
427            unsigned char receive;
428            unsigned long rSize;
429            CString Tmp;
430            ReadFile(hComPort,&receive,1,&rSize,0);
431            if( rSize != 1 ){
432                    MessageBox( "Error when trying to receive date from serial port" );
433                    return false;
434            }
435            Tmp.Format( "%s", &receive );
436            m_Status.SetWindowText(Tmp);
437    
438    
439    
440            if( !SetCommState( hComPort, &dcb_restore ) ){
441                    WriteLastError("Fail\n%s\n");
442                    return 4;
443            }
444    
445    
446            return 0;
447  }  }

Legend:
Removed from v.18  
changed lines
  Added in v.19

  ViewVC Help
Powered by ViewVC 1.1.20