// miniView.cpp : implementation of the CMiniView class // //Add ws2_32.lib to Project Settings -> Link -> Object/library modules. #include "stdafx.h" #include "mini.h" #include "miniSet.h" #include "miniDoc.h" #include "miniView.h" #include #include "wcomm.cpp" #include "TCPfunksjonar.cpp" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif int antalmaalingar; //Global variabel //CMiniDoc* pDoc=NULL; CString starttid; ///////////////////////////////////////////////////////////////////////////// // CMiniView IMPLEMENT_DYNCREATE(CMiniView, CRecordView) BEGIN_MESSAGE_MAP(CMiniView, CRecordView) //{{AFX_MSG_MAP(CMiniView) ON_BN_CLICKED(IDC_start, Onstart) ON_WM_DESTROY() ON_WM_TIMER() ON_BN_CLICKED(IDC_stopp, Onstopp) //}}AFX_MSG_MAP // Standard printing commands ON_COMMAND(ID_FILE_PRINT, CRecordView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_DIRECT, CRecordView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_PREVIEW, CRecordView::OnFilePrintPreview) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CMiniView construction/destruction CMiniView::CMiniView() : CRecordView(CMiniView::IDD) { //{{AFX_DATA_INIT(CMiniView) m_pSet = NULL; m_sSet=NULL; m_intervall = 0; //}}AFX_DATA_INIT // TODO: add construction code here } CMiniView::~CMiniView() { } void CMiniView::DoDataExchange(CDataExchange* pDX) { CRecordView::DoDataExchange(pDX); //{{AFX_DATA_MAP(CMiniView) DDX_FieldText(pDX, IDC_MaalingID, m_pSet->m_maalingID, m_pSet); DDX_FieldText(pDX, IDC_tid, m_pSet->m_tid, m_pSet); DDX_FieldText(pDX, IDC_data, m_pSet->m_data, m_pSet); DDX_FieldText(pDX, IDC_SensorID, m_pSet->m_SensorId, m_pSet); DDX_Text(pDX, IDC_intervall, m_intervall); //}}AFX_DATA_MAP } BOOL CMiniView::PreCreateWindow(CREATESTRUCT& cs) { // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs return CRecordView::PreCreateWindow(cs); } void CMiniView::OnInitialUpdate() { m_pSet = &GetDocument()->m_miniSet; m_sSet = &GetDocument()->m_sensorSet; if(!m_sSet->Open()) return; CRecordView::OnInitialUpdate(); //Brukar eit ekstra recordset //Kan likså gjerne bruke eit skript for å hente ut måleintervall if(m_sSet->IsOpen()) { m_sSet->MoveFirst(); m_intervall=m_sSet->m_maaleintervall; } UpdateData(FALSE); GetParentFrame()->RecalcLayout(); ResizeParentToFit(); } ///////////////////////////////////////////////////////////////////////////// // CMiniView printing BOOL CMiniView::OnPreparePrinting(CPrintInfo* pInfo) { // default preparation return DoPreparePrinting(pInfo); } void CMiniView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) { // TODO: add extra initialization before printing } void CMiniView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) { // TODO: add cleanup after printing } ///////////////////////////////////////////////////////////////////////////// // CMiniView diagnostics #ifdef _DEBUG void CMiniView::AssertValid() const { CRecordView::AssertValid(); } void CMiniView::Dump(CDumpContext& dc) const { CRecordView::Dump(dc); } CMiniDoc* CMiniView::GetDocument() // non-debug version is inline { ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMiniDoc))); return (CMiniDoc*)m_pDocument; } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CMiniView database support CRecordset* CMiniView::OnGetRecordset() { return m_pSet; } ///////////////////////////////////////////////////////////////////////////// // CMiniView message handlers void CMiniView::Onstart() { int GamalTid=m_intervall; UpdateData(TRUE); //Data frå skjema til variablar { KillTimer(1); int millisekund=m_intervall*60000; int installResult=SetTimer(1,millisekund,NULL); if(installResult==0)MessageBox("Kan ikkje installere timer"); } runclient("127.0.0.1",5000); antalmaalingar=0; } void CMiniView::OnDestroy() { CRecordView::OnDestroy(); // TODO: Add your message handler code here KillTimer(1); } void CMiniView::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default time_t tid; //må inkludere . Definerer struct tid time(&tid); //Hentar tid frå operativsystemet og legg inn i tid CTime ctid(tid);//Omformar til CTime-format CString stid=ctid.Format("%d-%m-%Y %H:%M:%S");//Lagar tekststreng int sensor=m_pSet->m_SensorId;//Tar vare på siste verdi av SensorID m_pSet->AddNew();//Lagar ny rad i record-settet m_pSet m_pSet->m_tid=stid;//Tid i tabellen må vera varchar og ikkje datetime m_pSet->m_data=Spenning(); m_pSet->m_SensorId=sensor; m_pSet->Update();//Oppdaterer databasen med dei nye verdiane m_pSet->Requery();//Hentar ut alle data frå databasen på nytt m_pSet->MoveLast();//Går til siste rad i record-settet UpdateData(FALSE);//Oppdaterer verdiane i skjemaet if(antalmaalingar==0)starttid=stid; antalmaalingar++; CRecordView::OnTimer(nIDEvent); } void CMiniView::Onstopp() { // TODO: Add your control notification handler code here // Her opererer eg med eit ekstra recordset // Kan kanskje heller bruke skript for å oppdatere start og stopptider if(m_sSet->IsOpen()) { m_sSet->MoveFirst(); m_sSet->Edit(); m_sSet->m_stoppsiste=m_pSet->m_tid; m_sSet->m_startsiste=starttid; m_sSet->m_maaleintervall=m_intervall; m_sSet->Update(); } w.closeConnection(); KillTimer(1); }