Ejemplo n.º 1
0
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;
        }
        }
    }
}
Ejemplo n.º 2
0
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();
}
Ejemplo n.º 3
0
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;
}
Ejemplo n.º 4
0
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;
	}
}
Ejemplo n.º 5
0
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;
}
Ejemplo n.º 6
0
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();
}