/[H9]/trunk/FlisServer/FlisServerDlg.cpp
ViewVC logotype

Diff of /trunk/FlisServer/FlisServerDlg.cpp

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

revision 132 by kevin, Mon Dec 3 11:46:03 2007 UTC revision 136 by kevin, Mon Dec 3 14:13:20 2007 UTC
# Line 63  BEGIN_MESSAGE_MAP(CFlisServerDlg, CDialo Line 63  BEGIN_MESSAGE_MAP(CFlisServerDlg, CDialo
63          ON_WM_SYSCOMMAND()          ON_WM_SYSCOMMAND()
64          ON_WM_PAINT()          ON_WM_PAINT()
65          ON_WM_QUERYDRAGICON()          ON_WM_QUERYDRAGICON()
         ON_MESSAGE(UWM_MYMESSAGE, OnShowString)  
66          //}}AFX_MSG_MAP          //}}AFX_MSG_MAP
67          ON_BN_CLICKED(IDCLOSE, OnBnClickedClose)          ON_BN_CLICKED(IDCLOSE, OnBnClickedClose)
68          ON_BN_CLICKED(IDC_GSMPIN, OnBnClickedGsmpin)          ON_BN_CLICKED(IDC_GSMPIN, OnBnClickedGsmpin)
# Line 158  HCURSOR CFlisServerDlg::OnQueryDragIcon( Line 157  HCURSOR CFlisServerDlg::OnQueryDragIcon(
157  }  }
158  int CFlisServerDlg::StartSerial(void)  int CFlisServerDlg::StartSerial(void)
159  {  {
160            
161          int Baud;          int Baud;
         CString SerialPort = "COM3";  
162    
163            ConfigFile config;
164            try {
165                    config.ReadSettings();
166            } catch(...) {
167                    MessageBox("Could not open config file");
168                    OnOK();
169                    return true;
170            }
171            
172          Baud = 1200;          Baud = 1200;
173          if( Serial.isOpen() )          if( Serial.isOpen() )
174          {          {
175                  Serial.close();                  try
176                  Serial.open( SerialPort, Baud );                  {
177                            Serial.close();
178                            Serial.open( config.comport, Baud );
179                    }
180                    catch (exception* e)
181                    {
182                            MessageBox( "Serial.open() exception" );
183                            return 0;
184                    }
185          }          }
186          else          else
187          {          {
188                  Serial.open( SerialPort, Baud );                  try
189                    {
190                            Serial.open( config.comport, Baud );
191                    }
192                    catch (exception* e)
193                    {
194                            MessageBox( "Serial.open() exception 2" );
195                            return 0;
196                    }
197          }          }
198            
199                                    
200  return 0;  return 0;
201  }  }
# Line 232  void CFlisServerDlg::SendSmsData(std::ve Line 256  void CFlisServerDlg::SendSmsData(std::ve
256                  CString tekst;                  CString tekst;
257                  std::vector<unsigned char> answer = readFrame();                  std::vector<unsigned char> answer = readFrame();
258                  Sleep(50);                  Sleep(50);
259                          char array1[150];  
260                          int i;                  for (int i=0; i<answer.size(); i++)
                         for (int i=0; i<answer.size(); i++)  
                         {  
                                 array1[i] = answer[i];  
                         }  
                   
                         for (int i=0; i<answer.size(); i++)  
261                          {                          {
262                                  if ((array1[i] != 0x0A) && (array1[i] != 0x0D))                                  if ((answer[i] != 0x0A) && (answer[i] != 0x0D))
263                                  {                                  {
264                                          tekst.AppendChar(array1[i]);                                          tekst.AppendChar(answer[i]);
265                                  }                                  }
266                          }                          }
267                          m_Textwindow.SetWindowText(tekst);                          AppendText(tekst);
268          }          }
269    
270  }  }
271  void CFlisServerDlg::SendSmsHead(std::vector<unsigned char> data)  void CFlisServerDlg::SendSmsHead(std::vector<unsigned char> tlfnr)
272  {  {
273          vector<unsigned char> atcommand;          vector<unsigned char> atcommand;
274          atcommand.push_back('a');          atcommand.push_back('a');
# Line 270  void CFlisServerDlg::SendSmsHead(std::ve Line 288  void CFlisServerDlg::SendSmsHead(std::ve
288                  Sleep(5);                  Sleep(5);
289          }          }
290                    
291          for (int i=0; i<data.size(); i++)          for (int i=0; i<tlfnr.size(); i++)
292          {          {
293                  Serial.writeByte( data[i] );                  Serial.writeByte( tlfnr[i] );
294                  Sleep(5);                  Sleep(5);
295          }          }
296          Serial.writeByte(atcommand[s]);          Serial.writeByte(atcommand[s]);
# Line 282  void CFlisServerDlg::SendSmsHead(std::ve Line 300  void CFlisServerDlg::SendSmsHead(std::ve
300  void CFlisServerDlg::DBConnect()  void CFlisServerDlg::DBConnect()
301  {  {
302          CString dsn;          CString dsn;
303          //dsn.Format("ODBC;Description=asd;DRIVER=PostgreSQL ANSI;SERVER=t-hoerup.dk; uid=serrenab;password=furnacemonitor;database=flisfyr;sslmode=prefer");   //Torben          ConfigFile config;
304          dsn.Format("ODBC;Description=asd;DRIVER=PostgreSQL ANSI;SERVER=192.168.134.132; uid=serrenab;password=furnacemonitor;database=flisfyr;sslmode=prefer");   //skole server          try {
305                    config.ReadSettings();
306            } catch(...) {
307                    MessageBox("Could not open config file");
308            }
309            
310            dsn.Format("ODBC;Description=asd;DRIVER=PostgreSQL ANSI;SERVER=%s; uid=%s;password=%s;database=%s;sslmode=prefer",config.host,config.username, config.password, config.database);
311          db.OpenEx(dsn, CDatabase::noOdbcDialog);          db.OpenEx(dsn, CDatabase::noOdbcDialog);
312  }  }
313  vector<Commands> CFlisServerDlg::DBRead(void)  vector<Commands> CFlisServerDlg::DBReadCommands(void)
314  {  {
315          vector<Commands> buffer;          vector<Commands> buffer;
316    
317          CString SQL, IDnr, CommandID, InstallationsID;          CString SQL, IDnr, CommandID, InstallationsID;
318          SQL = "select id,date_trunc('second', created) as created,executed,commandid,installationid from command WHERE executed IS NULL;";          SQL = "select id,date_trunc('second', created) as created,executed,commandid,installationid from command WHERE executed IS NULL ORDER BY created ASC LIMIT 1;";
319          CRecordset rs(&db);          CRecordset rs(&db);
320          rs.Open(AFX_DB_USE_DEFAULT_TYPE, SQL);          rs.Open(AFX_DB_USE_DEFAULT_TYPE, SQL);
321          if (rs.GetRecordCount()>0)          if (rs.GetRecordCount()>0)
322          {          {
323                  rs.MoveFirst();                  rs.MoveFirst();
                 while(!rs.IsEOF())  
                 {  
                         Commands Mycom;  
                         rs.GetFieldValue((short)0, IDnr);  
                         rs.GetFieldValue(3, CommandID);  
                         rs.GetFieldValue(4, InstallationsID);  
324                                                    
325                          Mycom.IDnr = IDnr;                  Commands Mycom;
326                          Mycom.CommandID = CommandID;                  rs.GetFieldValue((short)0, IDnr);
327                          Mycom.InstallationsID = InstallationsID;                  rs.GetFieldValue(3, CommandID);
328                    rs.GetFieldValue(4, InstallationsID);
329                    
330                    Mycom.IDnr = IDnr;
331                    Mycom.CommandID = CommandID;
332                    Mycom.InstallationsID = InstallationsID;
333    
334                    buffer.push_back(Mycom);
335                    rs.MoveNext();
336    
                         buffer.push_back(Mycom);  
                         rs.MoveNext();  
                 }  
337          }          }
338          rs.Close();          rs.Close();
339          return buffer;          return buffer;
# Line 318  vector<Commands> CFlisServerDlg::DBRead( Line 341  vector<Commands> CFlisServerDlg::DBRead(
341  void CFlisServerDlg::ReadSms()  void CFlisServerDlg::ReadSms()
342  {  {
343          CString tekst, oldtekst;          CString tekst, oldtekst;
344          Sleep(950);          Sleep(950);             //Holder en pause for at lade hele sms'en komme ind i serial køen.
345          if(Serial.getComstat().cbInQue > 0)          if(Serial.getComstat().cbInQue > 0)
346          {          {
347                  std::vector<unsigned char> answer = readFrame();                  std::vector<unsigned char> answer = readFrame();
348                  Sleep(50);                  //Sleep(50);
349                          char array1[250];  
                         int i;  
                         for (int i=0; i<answer.size(); i++)  
                         {  
                                 array1[i] = answer[i];  
                         }  
                   
350                          for (int i=0; i<answer.size(); i++)                          for (int i=0; i<answer.size(); i++)
351                          {                          {
352                                  if ((array1[i] != 0x0A) && (array1[i] != 0x0D))                                  if ((answer[i] != 0x0A) && (answer[i] != 0x0D))
353                                  {                                  {
354                                          tekst.AppendChar(array1[i]);                                          tekst.AppendChar(answer[i]);
355                                  }                                  }
356                          }                          }
357    
358                          m_Textwindow.GetWindowText(oldtekst);                          AppendText(tekst);
                         oldtekst.Append("\r\n");  
                         oldtekst.Append(tekst);  
                         m_Textwindow.SetWindowText(oldtekst);  
359                          SmsSplit(tekst);                          SmsSplit(tekst);
360          }          }
361  }  }
# Line 350  void CFlisServerDlg::SmsSplit(CString da Line 364  void CFlisServerDlg::SmsSplit(CString da
364          CString FyrData, TlfNr, SmsCount, Temper, Flamme, Flis, FremFejl, PowerFail, oldtekst;          CString FyrData, TlfNr, SmsCount, Temper, Flamme, Flis, FremFejl, PowerFail, oldtekst;
365          char CharData[150];          char CharData[150];
366          strcpy(CharData,data);          strcpy(CharData,data);
367            TlfNr = data.Mid(24,8);
368          int s=24;          FyrData = data.Mid(57,data.GetLength()-3);
         for (int i=0; i<=7; i++)  
         {  
                 TlfNr.AppendChar(CharData[s]);  
                 s++;  
         }  
   
         for (int s=57; s<=(data.GetLength()-3); s++)  
         {  
                 FyrData.AppendChar(CharData[s]);  
         }  
369          FyrData.Append(":");          FyrData.Append(":");
370                    
371          SmsCount = Splitter(FyrData);          SmsCount = Splitter(FyrData);
# Line 386  void CFlisServerDlg::SmsSplit(CString da Line 390  void CFlisServerDlg::SmsSplit(CString da
390                  SQL.Format("insert into logtable (logtime,temperature,flamedetector,solidfuelempty,conveyorerror,powerfailure,messagenr,installationnr) Values (now(),%s,'%s','%s','%s','%s',%s,%s)",Temper, Flamme, Flis, FremFejl, PowerFail, SmsCount,InstallNR);                  SQL.Format("insert into logtable (logtime,temperature,flamedetector,solidfuelempty,conveyorerror,powerfailure,messagenr,installationnr) Values (now(),%s,'%s','%s','%s','%s',%s,%s)",Temper, Flamme, Flis, FremFejl, PowerFail, SmsCount,InstallNR);
391                  db.ExecuteSQL(SQL);                  db.ExecuteSQL(SQL);
392    
393                  m_Textwindow.GetWindowText(Textwindow);                  AppendText("Sms added to Log");
                 Textwindow.Append("\r\n");  
                 Textwindow.Append("Sms added to Log");  
                 m_Textwindow.SetWindowText(Textwindow);  
394                  Sleep(150);                  Sleep(150);
   
 ///////////////////////////////////////////////////////////////////////////////////////////////////////  
 ///////////////////// Her skal sendes data til databasen //////////////////////////////////////////////  
395  }  }
396  CString CFlisServerDlg::Splitter(CString& fyrdata)  CString CFlisServerDlg::Splitter(CString& fyrdata)
397  {  {
# Line 461  void CFlisServerDlg::DeleteSms() Line 459  void CFlisServerDlg::DeleteSms()
459          writeFrame(atcommand);          writeFrame(atcommand);
460          Sleep(500);          Sleep(500);
461  }  }
462  LRESULT CFlisServerDlg::OnShowString(WPARAM wParam, LPARAM lParam)  UINT threadWrapper(LPVOID thread)
 {  
         CString *s = (CString*) lParam;  
         GetDlgItem(IDC_Textwindow)->SetWindowText(*s);  
   
         delete s;  
         return 0;  
   
 }UINT threadWrapper(LPVOID thread)  
463  {  {
464          CFlisServerDlg *t = (CFlisServerDlg*) thread;          CFlisServerDlg *t = (CFlisServerDlg*) thread;
465          t->runthread();          t->runthread();
# Line 497  void CFlisServerDlg::Reader() Line 487  void CFlisServerDlg::Reader()
487                          Sleep(500);                          Sleep(500);
488                          CString tekst, oldtekst;                          CString tekst, oldtekst;
489                          int lol;                          int lol;
                         char array1[250];  
                         int i;  
                         for (int i=0; i<answer.size(); i++)  
                         {  
                                 array1[i] = answer[i];  
                         }  
490                                    
491                          for (int i=0; i<answer.size(); i++)                          for (int i=0; i<answer.size(); i++)
492                          {                          {
493                                  if ((array1[i] != 0x0A) && (array1[i] != 0x0D))                                  if ((answer[i] != 0x0A) && (answer[i] != 0x0D))
494                                  {                                  {
495                                          tekst.AppendChar(array1[i]);                                          tekst.AppendChar(answer[i]);
496                                  }                                  }
497                          }                          }
498                          tekst.Append(":");                          tekst.Append(":");
# Line 528  void CFlisServerDlg::Reader() Line 512  void CFlisServerDlg::Reader()
512                                                    
513                          if(tekst == "OK")                          if(tekst == "OK")
514                          {                                {      
515                                  m_Textwindow.GetWindowText(oldtekst);                                  AppendText("OK tekst modtaget");
                                 oldtekst.Append("\r\n");  
                                 oldtekst.Append("OK tekst modtaget");  
                                 m_Textwindow.SetWindowText(oldtekst);  
516                          }                          }
517                          else if (tekst == "error")                          else if (tekst == "error")
518                          {                          {
519                                  m_Textwindow.GetWindowText(oldtekst);                                  CString send;
520                                  oldtekst.Append("\r\n");                                  send.Append("error tekst");
521                                  oldtekst.Append("error tekst");                                  send.Append("\r\n");
522                                  oldtekst.Append(tekst);                                  send.Append(tekst);
523                                  m_Textwindow.SetWindowText(oldtekst);                                  AppendText(send);
524                          }                          }
525                          else if (plus = true)                          else if (plus == true)
526                          {                          {
527                                  if (command = "cmti")                                  if (command == "cmti")
528                                  {                                  {
529                                          CString smscount, oldteskst;                                          CString smscount, oldteskst;
530                                          int pos = tekst.Find(',',0);                                          int pos = tekst.Find(',',0);
# Line 581  void CFlisServerDlg::Reader() Line 562  void CFlisServerDlg::Reader()
562                                                  ResetSms++;                                                  ResetSms++;
563    
564                                  }                                  }
565                                  else if(command = "wind")                                  else if(command == "wind")
566                                  {                                  {
567                                          m_Textwindow.GetWindowText(oldtekst);  
568                                          oldtekst.Append("\r\n");                                          CString send;
569                                          oldtekst.Append("Først lidt tekst på næste linie\r\n");                                          send.Append("Wind modtaget");
570                                          oldtekst.Append(tekst);                                          send.Append("\r\n");
571                                          m_Textwindow.SetWindowText(oldtekst);                                          send.Append(tekst);
572                                            AppendText(send);
573                                  }                                  }
574                          }                          }
575                          else                          else
576                          {                          {
577                                  m_Textwindow.GetWindowText(oldtekst);                                  CString send;
578                                  oldtekst.Append("\r\n");                                  send.Append("Anden tekst end forventet");
579                                  oldtekst.Append("Anden tekst end forventet");                                  send.Append("\r\n");
580                                  oldtekst.Append("\r\n");                                  send.Append(tekst);
581                                  oldtekst.Append(tekst);                                  AppendText(send);
                                 m_Textwindow.SetWindowText(oldtekst);  
582                          }                          }
583                          if(ResetSms == 20)                          if(ResetSms == 20)
584                          {                          {
585                                  DeleteSms();                                  DeleteSms();
586                                  m_Textwindow.GetWindowText(oldtekst);                                  AppendText("Sms'er slettet da vi nåede grænsen");
                                 oldtekst.Append("\r\n");  
                                 oldtekst.Append("Slettet Sendte og læste beskeder da vi nåede grænsen.");  
                                 m_Textwindow.SetWindowText(oldtekst);  
587                          }                          }
588    
589                  }                  }
590                  if (continueThread = 1)                  if (continueThread == 1)
591                  {                  {
592                                                    
593                          CString testdata, dataframe,testprint, sIDnr, sCommandID, sInstallationsID, sImei;                          CString testdata, dataframe,testprint, sIDnr, sCommandID, sInstallationsID, sImei;
594                          int commandtest = 0;                          int commandtest = 0;
595                          int iAll = 1;                          int iAll = 1;
596                          std::vector<Commands> data;                          std::vector<Commands> data;
597                          data = DBRead();                          data = DBReadCommands();
598                          for (int i=0; i<data.size(); i++)                          for (int i=0; i<data.size(); i++)
599                          {                          {
600                                  testdata.Append(data[i].IDnr);                                  sIDnr = data[i].IDnr;
601                                  testdata.Append(":");                                  sCommandID = data[i].CommandID;
                                 testdata.Append(data[i].CommandID);  
                                 testdata.Append(":");  
602                                  commandtest = atoi(data[i].CommandID);                                  commandtest = atoi(data[i].CommandID);
603    
604                                  if(commandtest > 1)                                  if(commandtest > 1)
605                                  {                                  {
606                                          testdata.Append(data[i].InstallationsID);                                          sInstallationsID = data[i].InstallationsID;
                                         testdata.Append(":");  
607                                  }                                  }
608                          }                          }
609                          sIDnr = Splitter(testdata);                          sIDnr = Splitter(testdata);
# Line 642  void CFlisServerDlg::Reader() Line 617  void CFlisServerDlg::Reader()
617    
618                          if (sIDnr.GetLength() > 0)                          if (sIDnr.GetLength() > 0)
619                          {                          {
620                                  DBReadData(sIDnr,sCommandID,sInstallationsID);                                  SendConfig(sIDnr,sCommandID,sInstallationsID);
621                          }                          }
622                          Sleep(500);                          Sleep(500);
623                  }                  }
624  }  }
625  void CFlisServerDlg::DBReadData(CString IDnr,CString CommandID,CString InstallationsID)  void CFlisServerDlg::SendConfig(CString IDnr,CString CommandID,CString InstallationsID)
626  {  {
627          CString ServerTlfNr;          CString ServerTlfNr;
628          int i = 0;          int i = 0;
# Line 713  void CFlisServerDlg::DBReadData(CString Line 688  void CFlisServerDlg::DBReadData(CString
688                  CString SQL, Textwindow;                  CString SQL, Textwindow;
689                  SQL.Format("update command set executed=now() where id=%s",IDnr);                  SQL.Format("update command set executed=now() where id=%s",IDnr);
690                  db.ExecuteSQL(SQL);                  db.ExecuteSQL(SQL);
691                  m_Textwindow.GetWindowText(Textwindow);                  AppendText("Command executed");
                 Textwindow.Append("\r\n");  
                 Textwindow.Append("Command executed");  
                 m_Textwindow.SetWindowText(Textwindow);  
692                  Sleep(150);                  Sleep(150);
693    
694  }  }
# Line 777  void CFlisServerDlg::OnBnClickedStart() Line 749  void CFlisServerDlg::OnBnClickedStart()
749          m_Textwindow.SetWindowText("Started");          m_Textwindow.SetWindowText("Started");
750          AfxBeginThread(threadWrapper,AfxGetMainWnd());          AfxBeginThread(threadWrapper,AfxGetMainWnd());
751  }  }
752    void CFlisServerDlg::AppendText(CString s)
753    {
754            CString Tekst;
755            m_Textwindow.GetWindowText(Tekst);
756            Tekst.Append("\r\n");
757            Tekst.Append(s);
758            m_Textwindow.SetWindowText(Tekst);
759    
760    }
761    void ConfigFile::ReadSettings()
762    {
763            ifstream file("Server-Settings.ini");
764            if (!file.is_open())
765                    throw("Could not open file");
766    
767            char buf[200];
768            while (!file.eof() ) {
769                    file.getline(buf,200);
770                    CString tmp(buf);
771    
772                    if (tmp.GetAt(0) == '#')
773                            continue;
774    
775                    int pos = tmp.Find('=');
776                    if (pos>0) {
777                            CString key = tmp.Left(pos).Trim().MakeLower();;
778                            CString value = tmp.Right(tmp.GetLength()-pos-1).Trim();
779    
780                            if (key == "host")
781                                    host = value;
782                            else if (key == "username")
783                                    username = value;
784                            else if (key == "password")
785                                    password = value;
786                            else if (key == "database")
787                                    database = value;
788                            else if (key == "comport")
789                                    comport = value;
790                    }
791    
792            }
793    
794            file.close();
795    }

Legend:
Removed from v.132  
changed lines
  Added in v.136

  ViewVC Help
Powered by ViewVC 1.1.20