void CSendingMonitor::SetState(int nState) { m_nState = nState; if (m_pProgress != NULL) { switch (m_nState) { case CSendingDialog::Sending: { m_pProgress->SetPos(0); m_pProgress->ShowWindow(SW_SHOW); break; } case CSendingDialog::Receiving: { m_pProgress->SetPos(50); break; } case CSendingDialog::Succeeded: { m_pProgress->SetPos(100); break; } default: { // Nothing special. break; } } } }
void CFoulerDoc::AddDataFromText(DWORD dwSize, char *pHeader) { char seps[] = "abcdfghijklmnopqrstuvwxyzABCDFGHIJKLMNOPQRSTUVWXYZ= ,\t\n:()"; char *token, *cpTextData; int i, iOrg, iData, itemno, iIndex; double dData; BeginWaitCursor(); for (DWORD dw = 0; dw < dwSize; dw++) { if (pHeader[dw] == NULL) pHeader[dw] = ' '; } cpTextData = new char[dwSize]; memcpy( cpTextData, pHeader, dwSize ); itemno = GetItemNo( cpTextData ); delete[] cpTextData; if( itemno < 1 ) return; CProgressBar* pBar = new CProgressBar(); iData = m_iNo; iOrg = m_iOriginNo; InsertData( itemno ); iIndex = 0; token = strtok( pHeader, seps ); while( token!= NULL ) { dData = atof(token); if( dData != 0 ) { m_pOrgData[iOrg]->SetItem( dData ); m_iSubGroupIndex++; if( m_iSubGroupIndex >= m_iSubGroupSize ) { m_iSubGroupIndex = 0; dData = 0; for( i=iOrg+1-m_iSubGroupSize ; i<iOrg+1 ; i++ ) { dData += m_pOrgData[i]->GetItem(); } m_pData[iData]->SetItem(dData/m_iSubGroupSize); iData++; AnalysisData(); } iOrg++; iIndex++; pBar->SetPos((iIndex<<8)/itemno); } token = strtok( NULL, seps ); } delete pBar; EndWaitCursor(); }
BOOL CFoulerDoc::OpenCCA(HANDLE hFileRead) { char cHeader[32]; double dData = 0; DWORD nCount; DWORD dwHighSize, dwLowSize; int i; ZeroMemory( cHeader, sizeof(cHeader) ); dwLowSize = GetFileSize( hFileRead, &dwHighSize ); SetFilePointer( hFileRead, 0, NULL, FILE_BEGIN); ReadFile( hFileRead, cHeader, 32, &nCount, NULL ); if( strcmp( cHeader, "Control Chart Analyzer File" ) != 0 ) return FALSE; int itemno = 0; ReadFile( hFileRead, &itemno, sizeof(itemno), &nCount, NULL ); if( itemno < 0 ) return FALSE; if( dwLowSize < itemno*sizeof(dData)+32+sizeof(itemno)+sizeof(m_histogram)+sizeof(m_shewart)+sizeof(m_cusum)+sizeof(m_sprt) ) return FALSE; ClearData(); ReadFile( hFileRead, &m_histogram, sizeof(m_histogram), &nCount, NULL ); ReadFile( hFileRead, &m_shewart, sizeof(m_shewart), &nCount, NULL ); ReadFile( hFileRead, &m_cusum, sizeof(m_cusum), &nCount, NULL ); ReadFile( hFileRead, &m_sprt, sizeof(m_sprt), &nCount, NULL ); double* pData; pData = new double[itemno]; ReadFile( hFileRead, pData, sizeof(dData)*itemno, &nCount, NULL ); double *dp; dp = pData; CProgressBar* pBar = new CProgressBar(); InsertData( itemno ); for( i=0 ; i<itemno ; i++ ) { m_pOrgData[i]->SetItem( *dp ); m_iSubGroupIndex++; if( m_iSubGroupIndex >= m_iSubGroupSize ) { m_iSubGroupIndex = 0; dData = 0; for( int j=i+1-m_iSubGroupSize ; j<i+1 ; j++ ) { dData += m_pOrgData[j]->GetItem(); } m_pData[i/m_iSubGroupSize]->SetItem(dData/m_iSubGroupSize); AnalysisData(); } dp++; pBar->SetPos( (i<<8)/itemno ); } delete[] pData; delete pBar; return TRUE; }
void CFoulerDoc::AnalysisWholeData() { int i; int iTemp = 0; double dPlus = 0; double dMinus = 0; if( m_histogram.GetReady() ) { for( i=0 ; i < DEF_HISTOGRAM_SIZE ; i++ ) { m_iHistogram[i] = 0; } CProgressBar* pBar = new CProgressBar(); for( i=0 ; i < m_iNo ; i++ ) { if( m_pData[i]->GetItem() < m_histogram.GetTheta0()-5*m_histogram.GetDeviation() ) { m_iHistogram[0] ++; continue; } else if( m_pData[i]->GetItem() > m_histogram.GetTheta0()+5*m_histogram.GetDeviation() ) { m_iHistogram[DEF_HISTOGRAM_SIZE-1] ++; continue; } iTemp = (int)( (m_pData[i]->GetItem()-m_histogram.GetTheta0())*DEF_HISTOGRAM_SIZE/10/m_histogram.GetDeviation() + DEF_HISTOGRAM_SIZE/2 ); m_iHistogram[iTemp]++; //Histogram계산용 도수분포 dPlus = m_pData[i]->GetItem() - m_cusum.GetK() - m_cusum.GetTheta0() + dPlus; if( dPlus < 0 ) dPlus = 0; m_pData[i]->SetPlus( dPlus ); dMinus = m_pData[i]->GetItem() + m_cusum.GetK() - m_cusum.GetTheta0() + dMinus; if( dMinus > 0 ) dMinus = 0; m_pData[i]->SetMinus( dMinus ); //CUSUM, SPRT계산용 pBar->SetPos( (i<<8)/m_iNo ); } delete pBar; } }
BOOL CFoulerDoc::OpenXLS(CString sFile) { int i; double dData; CDatabase db; CString sSql; CString sItem; CString sDsn; CODBCFieldInfo fieldinfo; CMainFrame *pFrame = (CMainFrame*)AfxGetMainWnd(); if( pFrame->m_strExcelDriver.IsEmpty() ) return FALSE; sDsn.Format("ODBC;DRIVER={%s};DSN='';DBQ=%s",pFrame->m_strExcelDriver,sFile); TRY { db.Open(NULL,FALSE,TRUE,sDsn);// Open the db using the former created pseudo DSN CRecordset rs( &db );// Allocate the recordset sSql = "SELECT * FROM Data";// Build the SQL string rs.Open(CRecordset::forwardOnly,sSql,CRecordset::readOnly);// Execute that query (implicitly by opening the recordset) CFieldSelect dlg(&rs); if( dlg.DoModal() == IDCANCEL ) { rs.Close(); db.Close(); return FALSE; } BeginWaitCursor(); while( !rs.IsEOF() ) rs.MoveNext(); int iRecCount = (int)(rs.GetRecordCount()); rs.Close(); rs.Open(CRecordset::forwardOnly,sSql,CRecordset::readOnly); CProgressBar* pBar = new CProgressBar(); ClearData(); InsertData( iRecCount ); for( i=0 ; i<iRecCount ; i++ ) { rs.GetFieldValue(dlg.m_sField0,sItem); dData = atof(sItem)+dlg.m_dCo0; if( dlg.m_sField1 >= 0 && dlg.m_dCo1 != 0) { rs.GetFieldValue(dlg.m_sField1,sItem); dData += atof(sItem)*dlg.m_dCo1; } if( dlg.m_sField2 >= 0 && dlg.m_dCo2 != 0) { rs.GetFieldValue(dlg.m_sField2,sItem); dData += atof(sItem)*dlg.m_dCo2; } if( dlg.m_sField3 >= 0 && dlg.m_dCo3 != 0) { rs.GetFieldValue(dlg.m_sField3,sItem); dData += atof(sItem)*dlg.m_dCo3; } m_pOrgData[i]->SetItem( dData ); m_iSubGroupIndex++; if( m_iSubGroupIndex >= m_iSubGroupSize ) { m_iSubGroupIndex = 0; dData = 0; for( int j=i+1-m_iSubGroupSize ; j<i+1 ; j++ ) { dData += m_pOrgData[j]->GetItem(); } m_pData[i/m_iSubGroupSize]->SetItem(dData/m_iSubGroupSize); } rs.MoveNext(); pBar->SetPos( (i<<8)/iRecCount ); } delete pBar; rs.Close(); db.Close(); EndWaitCursor(); return TRUE; } CATCH(CDBException, e) { return FALSE;// A db exception occured. Pop out the details... } END_CATCH; }
void CFoulerDoc::OnEditNewdata() { double dAverage=0, dDeviation=0, dMoveRate=0; int i=0, iNo = 0; char cStr[64]; if( m_generator.GetReady() ) { iNo = 0; dAverage = m_generator.GetAverage(); dDeviation = m_generator.GetDeviation(); dMoveRate = m_generator.GetMoveRate(); } else { iNo = 0; dAverage = 0; dDeviation = 1; dMoveRate = 0; } CNewData dlg( dAverage, iNo, dDeviation, dMoveRate ); if( dlg.DoModal() == IDCANCEL ) return; BeginWaitCursor(); m_generator.SetReady(TRUE); m_generator.SetAverage(dlg.m_average); m_generator.SetDeviation(dlg.m_deviation); m_generator.SetGenMode(dlg.m_iGenMode); m_generator.SetMoveRate(dlg.m_moverate); CMainFrame *pFrame = (CMainFrame*)AfxGetMainWnd(); ZeroMemory( cStr, sizeof(cStr) ); sprintf( cStr, "%f", m_generator.GetAverage() ); if( pFrame != NULL ) pFrame->m_edit.SetWindowText( cStr ); m_dIndex += dlg.m_datano; CProgressBar* pBar = new CProgressBar(); iNo = m_iNo; InsertData( dlg.m_datano ); for( i=iNo ; i<m_iNo ; i++ ) { m_pOrgData[i]->SetItem( m_generator.Gen() ); m_iSubGroupIndex++; if( m_iSubGroupIndex >= m_iSubGroupSize ) { m_iSubGroupIndex = 0; dAverage = 0; for( int j=i+1-m_iSubGroupSize ; j<i+1 ; j++ ) { dAverage += m_pOrgData[j]->GetItem(); } m_pData[i/m_iSubGroupSize]->SetItem(dAverage/m_iSubGroupSize); AnalysisData(); } pBar->SetPos( ((i-iNo)<<8)/dlg.m_datano ); } delete pBar; if( m_histogram.GetReady() == FALSE ) { EndWaitCursor(); OnEditAnalysis(); BeginWaitCursor(); } m_pRightView->Refresh(); ChangeViewMode(m_iViewMode); EndWaitCursor(); }