--- trunk/FlisServer/FlisServerDlg.cpp 2007/12/04 13:26:00 144 +++ trunk/FlisServer/FlisServerDlg.cpp 2007/12/05 16:03:05 166 @@ -6,6 +6,7 @@ #include "FlisServerDlg.h" #include #include ".\flisserverdlg.h" +#include #ifdef _DEBUG #define new DEBUG_NEW @@ -373,7 +374,23 @@ HandleAcknowledge(TlfNr); return; } - + CAtlRegExp<> regex; + if (regex.Parse("^{[0-9]+}:{[0-9]+}:[0-1]:[0-1]:[0-1]:[0-1]:$") == REPARSE_ERROR_OK) + { + + CAtlREMatchContext<> pContext; + + if (!regex.Match(FyrData, &pContext)) + { + AppendText("Invalid SMS recieved"); + return; + } + } + else + { + AppendText("Regex PARSE error!!!"); //Burde aldrig kunne ske ! + } + SmsCount = Splitter(FyrData); Temper = Splitter(FyrData); Flamme = Splitter(FyrData); @@ -421,6 +438,7 @@ { // TODO: Add your control notification handler code here continueThread = 0; + Sleep(250); DeleteSms(); Sleep(500); @@ -471,6 +489,7 @@ AppendText(tekst); } } + Sleep(10); //Small delay to avoid busy wait } Sleep(100); //Give the modem a chance to send the last data while(Serial.getComstat().cbInQue > 0) @@ -740,6 +759,7 @@ CString SQL, Textwindow; SQL.Format("update command set executed=now() where id=%s",IDnr); db.ExecuteSQL(SQL); + Sleep(100); AppendText("Command executed"); } Sleep(150); @@ -923,27 +943,45 @@ CString SQL, name, value; SQL = "select name, value from config;"; CRecordset rs(&db); - rs.Open(AFX_DB_USE_DEFAULT_TYPE, SQL); - if (rs.GetRecordCount()>0) + try { - rs.MoveFirst(); + rs.Open(AFX_DB_USE_DEFAULT_TYPE, SQL); + if (rs.GetRecordCount()>0) + { + rs.MoveFirst(); - rs.GetFieldValue((short)0, name); - rs.GetFieldValue(1,value); + rs.GetFieldValue((short)0, name); + rs.GetFieldValue(1,value); - Alive.name = name; - Alive.value = value; - Alive.tid = CTime::GetCurrentTime(); - if(Alive.name == "phonenr") - { - Alive.Phonenr = value; - } + Alive.name = name; + Alive.value = value; + Alive.tid = CTime::GetCurrentTime(); + if(Alive.name == "phonenr") + { + Alive.Phonenr = value; + } - buffer.push_back(Alive); - rs.MoveNext(); + buffer.push_back(Alive); + rs.MoveNext(); + } + rs.Close(); + return buffer; } - rs.Close(); - return buffer; + catch (char * str) + { + AppendText("Keepalive failed, closing and opening the db connection again"); + if(db.IsOpen()) + { + db.Close(); + AppendText("DB connection closed"); + } + if(!db.IsOpen()) + { + DBConnect(); + AppendText("DB connection started again"); + } + } + -} \ No newline at end of file +}