--- trunk/FlisServer/FlisServerDlg.cpp 2007/11/29 16:16:34 103 +++ trunk/FlisServer/FlisServerDlg.cpp 2007/12/03 09:22:26 130 @@ -4,8 +4,8 @@ #include "stdafx.h" #include "FlisServer.h" #include "FlisServerDlg.h" -#include ".\flisserverdlg.h" #include +#include ".\flisserverdlg.h" #ifdef _DEBUG #define new DEBUG_NEW @@ -63,9 +63,11 @@ ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() + ON_MESSAGE(UWM_MYMESSAGE, OnShowString) //}}AFX_MSG_MAP - ON_BN_CLICKED(IDC_test, OnBnClickedtest) ON_BN_CLICKED(IDCLOSE, OnBnClickedClose) + ON_BN_CLICKED(IDC_GSMPIN, OnBnClickedGsmpin) + ON_BN_CLICKED(IDC_Start, OnBnClickedStart) END_MESSAGE_MAP() @@ -100,8 +102,8 @@ // TODO: Add extra initialization here StartSerial(); - //SetPin(); DBConnect(); + ResetSms = 0; return TRUE; // return TRUE unless you set the focus to a control } @@ -182,98 +184,7 @@ } return buf; } -void CFlisServerDlg::OnBnClickedtest() -{ - // TODO: Add your control notification handler code here -/* -////////////////Read sms ting////////////////// - CString tekst; - std::vector data; - data.push_back('a'); - data.push_back('t'); - data.push_back('+'); - data.push_back('c'); - data.push_back('m'); - data.push_back('g'); - data.push_back('r'); - data.push_back('='); - data.push_back('1'); - writeFrame(data); - ReadSms(); -////////////////Read sms ting////////////////// -*/ -/* -////////////////DBRead stuff////////////////// - CString testdata; - std::vector data; - data = DBRead(); - for (int i=0; i tlfnr; - vector smsdata; - tlfnr.push_back('2'); - tlfnr.push_back('9'); - tlfnr.push_back('7'); - tlfnr.push_back('2'); - tlfnr.push_back('2'); - tlfnr.push_back('6'); - tlfnr.push_back('0'); - tlfnr.push_back('3'); - - SendSmsHead(tlfnr); - - //35:29860132:75 <--- demo pakke; - smsdata.push_back('3'); - smsdata.push_back('5'); - smsdata.push_back(':'); - smsdata.push_back('2'); - smsdata.push_back('9'); - smsdata.push_back('8'); - smsdata.push_back('6'); - smsdata.push_back('0'); - smsdata.push_back('1'); - smsdata.push_back('3'); - smsdata.push_back('2'); - smsdata.push_back(':'); - smsdata.push_back('7'); - smsdata.push_back('5'); - - SendSmsData(smsdata); - Sleep(2000); - if(Serial.getComstat().cbInQue > 0) - { - CString tekst; - std::vector answer = readFrame(); - Sleep(50); - char array1[25]; - int i; - for (int i=0; i data) { for (int i=0; i data; @@ -303,7 +214,7 @@ data.push_back('5'); writeFrame(data); - Sleep(750); +/* Sleep(750); if(Serial.getComstat().cbInQue > 0) { std::vector answer = readFrame(); @@ -324,7 +235,7 @@ } m_Textwindow.SetWindowText(tekst); } -return 0; +*/ } void CFlisServerDlg::SendSmsData(std::vector data) { @@ -335,7 +246,28 @@ Sleep(5); } Serial.writeByte(0x1A); - Sleep(500); + Sleep(3000); + if(Serial.getComstat().cbInQue > 0) + { + CString tekst; + std::vector answer = readFrame(); + Sleep(50); + char array1[150]; + int i; + for (int i=0; i data) @@ -370,7 +302,8 @@ void CFlisServerDlg::DBConnect() { CString dsn; - dsn.Format("ODBC;Description=asd;DRIVER=PostgreSQL ANSI;SERVER=192.168.134.132; uid=serrenab;password=furnacemonitor;database=flisfyr;sslmode=prefer"); + //dsn.Format("ODBC;Description=asd;DRIVER=PostgreSQL ANSI;SERVER=t-hoerup.dk; uid=serrenab;password=furnacemonitor;database=flisfyr;sslmode=prefer"); //Torben + dsn.Format("ODBC;Description=asd;DRIVER=PostgreSQL ANSI;SERVER=192.168.134.132; uid=serrenab;password=furnacemonitor;database=flisfyr;sslmode=prefer"); //skole server db.OpenEx(dsn, CDatabase::noOdbcDialog); } vector CFlisServerDlg::DBRead(void) @@ -386,17 +319,17 @@ rs.MoveFirst(); while(!rs.IsEOF()) { - Commands Mycom; - rs.GetFieldValue((short)0, IDnr); - rs.GetFieldValue(3, CommandID); - rs.GetFieldValue(4, InstallationsID); - - Mycom.IDnr = IDnr; - Mycom.CommandID = CommandID; - Mycom.InstallationsID = InstallationsID; + Commands Mycom; + rs.GetFieldValue((short)0, IDnr); + rs.GetFieldValue(3, CommandID); + rs.GetFieldValue(4, InstallationsID); + + Mycom.IDnr = IDnr; + Mycom.CommandID = CommandID; + Mycom.InstallationsID = InstallationsID; - buffer.push_back(Mycom); - rs.MoveNext(); + buffer.push_back(Mycom); + rs.MoveNext(); } } rs.Close(); @@ -438,14 +371,14 @@ char CharData[150]; strcpy(CharData,data); - int s=22; + int s=24; for (int i=0; i<=7; i++) { TlfNr.AppendChar(CharData[s]); s++; } - for (int s=55; s<=(data.GetLength()-3); s++) + for (int s=57; s<=(data.GetLength()-3); s++) { FyrData.AppendChar(CharData[s]); } @@ -458,7 +391,7 @@ FremFejl = Splitter(FyrData); PowerFail = Splitter(FyrData); /////////////////////////////////////////////////////////////////////////////////////////////////////// -///////////////////// Her skal sendes data til databasen ////////////////////////////////////////////// +///////////////////// Her skal sendes data til databasen ////NÅR HEDIN KAN SENDE SMS/////////////////// m_Textwindow.GetWindowText(oldtekst); oldtekst.Append("\r\n"); oldtekst.Append("På næste linie kommer SmsCount. \r\n"); @@ -478,6 +411,9 @@ oldtekst.Append("\r\n"); oldtekst.Append("På næste linie kommer PowerFail. \r\n"); oldtekst.Append(PowerFail); + oldtekst.Append("\r\n"); + oldtekst.Append("På næste linie kommer TlfNR. \r\n"); + oldtekst.Append(TlfNr); m_Textwindow.SetWindowText(oldtekst); /////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////// Her skal sendes data til databasen ////////////////////////////////////////////// @@ -497,7 +433,10 @@ void CFlisServerDlg::OnBnClickedClose() { // TODO: Add your control notification handler code here - + continueThread = 0; + DeleteSms(); //<--- crasher, men gider ikke bruge flere af mine penge på at teste det med sms'er, hele close laver crash, bare ikke når jeg stepper. :S + + Sleep(500); if( Serial.isOpen() ) { Serial.close(); @@ -507,5 +446,334 @@ { db.Close(); } + OnOK(); + +} + +void CFlisServerDlg::OnBnClickedGsmpin() +{ + // TODO: Add your control notification handler code here + SetPin(); + Sleep(35000); + OnBnClickedStart(); +} +void CFlisServerDlg::DeleteSms() +{ + vector atcommand; + atcommand.push_back('a'); + atcommand.push_back('t'); + atcommand.push_back('+'); + atcommand.push_back('c'); + atcommand.push_back('m'); + atcommand.push_back('g'); + atcommand.push_back('d'); + atcommand.push_back('='); + atcommand.push_back('1'); + atcommand.push_back(','); + atcommand.push_back('3'); + + writeFrame(atcommand); + Sleep(500); +} +LRESULT CFlisServerDlg::OnShowString(WPARAM wParam, LPARAM lParam) +{ + CString *s = (CString*) lParam; + GetDlgItem(IDC_Textwindow)->SetWindowText(*s); + + delete s; + return 0; + +}UINT threadWrapper(LPVOID thread) +{ + CFlisServerDlg *t = (CFlisServerDlg*) thread; + t->runthread(); + return 0; +} + +void CFlisServerDlg::startthread() +{ + AfxBeginThread(threadWrapper, (LPVOID) this); +} + +void CFlisServerDlg::runthread() +{ + while (continueThread != 0) + { + Reader(); + } +} +void CFlisServerDlg::Reader() +{ + if(Serial.getComstat().cbInQue > 0) + { + Sleep(250); + std::vector answer = readFrame(); + Sleep(500); + CString tekst, oldtekst; + int lol; + char array1[250]; + int i; + for (int i=0; i data; + data.push_back('a'); + data.push_back('t'); + data.push_back('+'); + data.push_back('c'); + data.push_back('m'); + data.push_back('g'); + data.push_back('r'); + data.push_back('='); + + for (int i=0; i< smscount.GetLength(); i++) + { + data.push_back(smscount[i]); + } + for (int i=0; i data; + data = DBRead(); + for (int i=0; i 1) + { + testdata.Append(data[i].InstallationsID); + testdata.Append(":"); + } + } + sIDnr = Splitter(testdata); + sCommandID = Splitter(testdata); + sInstallationsID = "0"; + if (commandtest > 1) + { + sInstallationsID = Splitter(testdata); + iAll = 0; + } + + if (sIDnr.GetLength() > 0) + { + DBReadData(sIDnr,sCommandID,sInstallationsID); + } + Sleep(500); + } +} +void CFlisServerDlg::DBReadData(CString IDnr,CString CommandID,CString InstallationsID) +{ + CString ServerTlfNr; + int i = 0; + ServerTlfNr = "29860132"; + + + std::vector inst; + inst = DBReadPhone(InstallationsID); + while (i < inst.size()) + { + CString TlfNr, Imei, updaterate; + TlfNr.Empty(); + Imei.Empty(); + updaterate.Empty(); + + CString dataen = inst[i].InstPhoneNr; + TlfNr.Append(dataen); + CString Imeidata = inst[i].Imei; + Imei.Append(Imeidata); + CString updaterat = inst[i].Updaterate; + updaterate.Append(updaterat); + i++; + + vector tlfnr; + for (int i=0; i smsdata; + + for (int i=0; i CFlisServerDlg::DBReadPhone(CString sInstallationsID) +{ + vector buffer; + + CString SQL, phonenr, imei, updaterate; + int installernull; + Installation Myinst; + installernull = atoi(sInstallationsID); + if (installernull > 1) + { + SQL.Format("select installationphonenr, imei, updaterate from installation WHERE id = %s", sInstallationsID); + } + else if(installernull < 2) + { + SQL.Format("select installationphonenr, imei, updaterate from installation"); + } + CRecordset rs(&db); + rs.Open(AFX_DB_USE_DEFAULT_TYPE, SQL); + if (rs.GetRecordCount()>0) + { + rs.MoveFirst(); + while(!rs.IsEOF()) + { + + rs.GetFieldValue((short)0,phonenr); + rs.GetFieldValue(1,imei); + rs.GetFieldValue(2,updaterate); + + Myinst.InstPhoneNr = phonenr; + Myinst.Imei = imei; + Myinst.Updaterate = updaterate; + + buffer.push_back(Myinst); + rs.MoveNext(); + } + } + rs.Close(); + return buffer; +} +int CFlisServerDlg::tversum(__int64 input) +{ + int sum = 0; + while (input > 0) + { + sum += (input %10); + input /= 10; + } + return sum; +} +void CFlisServerDlg::OnBnClickedStart() +{ +// TODO: Add your control notification handler code here + + continueThread = 1; + + AfxBeginThread(threadWrapper,AfxGetMainWnd()); }