⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 new.cpp

📁 蓝牙耳机音频测试的源码,FFT库是网上下的,该源码业内人士很有用处.
💻 CPP
📖 第 1 页 / 共 3 页
字号:
			LineTo(hdc,522,WAVEHORIZON);           
			
			//coordinate for Frequency

			SelectObject(hdc, hpenW);
			MoveToEx(hdc,10,380,NULL);
			LineTo(hdc,522,380);			//horizon

			for (i=0;i<22;i++)
			{
				MoveToEx(hdc,(int)(10+i*1000/FREQSCALE),380,NULL);
				LineTo(hdc,(int)(10+i*1000/FREQSCALE),200);
			}	

			RECT crect;	
			crect.left=10;
			crect.top=382;
			crect.right=crect.left+100;
			crect.bottom=crect.top+100;
			::SetBkColor(hdc,BACKGROUND);
			font=CreateFont(12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,FF_SWISS, "Arial"); 	
			::SelectObject (hdc, font); 
			::SetTextColor(hdc,RGB(0,0,0));
			DrawText(hdc,"0",1,&crect,DT_LEFT|DT_TOP);

			//scale mark
			for (i=1;i<21;i++)
			{	
				char str[2];
				crect.left=10+ (int)(i*1000/FREQSCALE);
				crect.right=crect.left+10+(int)(i/10)*3;
				sprintf(str,"%dk",i);
				DrawText(hdc,str,4,&crect,DT_LEFT|DT_TOP);
			}

			MoveToEx(hdc,6,204,NULL);
			LineTo(hdc,10,200);
			LineTo(hdc,14,204);

			MoveToEx(hdc,518,376,NULL);
			LineTo(hdc,522,380);
			LineTo(hdc,518,384);

			//coordinate for Frequency-response
			
			//scale
			for (i=1;i<22;i++)
			{
				MoveToEx(hdc,(int)(10+i*1000/FREQSCALE),600,NULL);
				LineTo(hdc,(int)(10+i*1000/FREQSCALE),597);
			}

			crect.left=10;
			crect.top=600;
			crect.right=crect.left+100;
			crect.bottom=crect.top+100;
			::SetBkColor(hdc,BACKGROUND);
			::SelectObject (hdc, font); 
			::SetTextColor(hdc,RGB(0,0,0));
			DrawText(hdc,"0",1,&crect,DT_LEFT|DT_TOP);
			//scale mark
			for (i=1;i<21;i++)
			{	
				char str[2];
				crect.left=10+ (int)(i*1000/FREQSCALE);
				crect.right=crect.left+10+(int)(i/10)*3;
				sprintf(str,"%dk",i);
				DrawText(hdc,str,4,&crect,DT_LEFT|DT_TOP);
			}
			//horizon
			SelectObject(hdc, hpenW);
			MoveToEx(hdc,10,600,NULL);
			LineTo(hdc,522,600);

			MoveToEx(hdc,518,596,NULL);
			LineTo(hdc,522,600);
			LineTo(hdc,518,604);
			//vertical
			MoveToEx(hdc,10,600,NULL);
			LineTo(hdc,10,430);
			LineTo(hdc,6,434);
			MoveToEx(hdc,10,430,NULL);
			LineTo(hdc,14,434);


			break;

		case WIM_DATA:
			waveInUnprepareHeader(hwi,(LPWAVEHDR)lParam,sizeof(WAVEHDR));
			nextWavHdr=(currWavHdr-1+MAX_INQUEU)%MAX_INQUEU;
			currWavHdr=(currWavHdr+1)%MAX_INQUEU;
			if(b_playing)
			{
				pwhi=&whis[nextWavHdr];
				pwhi->dwFlags=0;
				pwhi->dwLoops=0;
				waveInPrepareHeader(hwi,pwhi,sizeof(WAVEHDR));
				waveInAddBuffer(hwi,pwhi,sizeof(WAVEHDR));
			}
			whdc=GetDC(hWnd);

			DrawWave((WAVEHDR *)lParam,whdc);

			if(pfnFft)
				DrawFreq((WAVEHDR *)lParam,whdc);
			
			ReleaseDC(hWnd,whdc);
			break;

		case WM_DESTROY:
			b_playing=FALSE;
			waveInReset(hwi);
			for(i=0;i<MAX_INQUEU;i++)
			{
				waveInUnprepareHeader(hwi,pwhi,sizeof(WAVEHDR));
			}
			waveInClose(hwi);
			ParaRecord();

			DeleteObject(hpenG);
			DeleteObject(hpenB);
//			FreeLibrary(hMod);

			CloseHandle(hAudioThread);

			PostQuitMessage(0);			
	
			break;

		default:
			return DefWindowProc(hWnd, message, wParam, lParam);
   }
   return 0;
}

// Mesage handler for about box.
LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch (message)
	{
		case WM_INITDIALOG:
				return TRUE;

		case WM_COMMAND:
			if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
			{
				EndDialog(hDlg, LOWORD(wParam));
				return TRUE;
			}
			break;
	}
    return FALSE;
}

LRESULT CALLBACK ControlProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) 
{ 
	HWND hParent;
	int id = GetWindowLong (hwnd, GWL_ID) ;
	hParent=GetParent(hwnd);

	switch (message) 
	{ 
		case WM_KEYDOWN :
			if (wParam == VK_TAB) 
				SetFocus (GetDlgItem (GetParent (hwnd),(id + (GetKeyState (VK_SHIFT) < 0 ? 8 : 1)) % 7)) ; 
///*
			if(wParam==VK_RETURN)
			{
				if (::GetFocus()==GetDlgItem(hParent,IDB_START))	
					::SendMessage(hParent,WM_COMMAND,(WPARAM)IDB_START,NULL);
				if (::GetFocus()==GetDlgItem(hParent,IDB_STOP))	
					::SendMessage(hParent,WM_COMMAND,(WPARAM)IDB_STOP,NULL);
				if (::GetFocus()==GetDlgItem(hParent,IDB_EXIT))	
					::SendMessage(hParent,WM_COMMAND,(WPARAM)IDB_EXIT,NULL);

				if (::GetFocus()==GetDlgItem(hParent,IDE_FREQ))
				{
					SetFocus(GetDlgItem(hParent,IDE_FREQDURA));
					break;
				}
				if (::GetFocus()==GetDlgItem(hParent,IDE_FREQDURA))	
				{
					SetFocus(GetDlgItem(hParent,IDE_WAVEVOLUME));
					break;
				}
				if (::GetFocus()==GetDlgItem(hParent,IDE_WAVEVOLUME))
				{
					SetFocus(GetDlgItem(hParent,IDB_START));
					break;
				}
			}
//*/
			break;

		case WM_SETFOCUS :
			idFocus = id ;
			break ; 
	} 
	return CallWindowProc (GlobalProc[id], hwnd, message, wParam,lParam);
} 

void RrectIni()
{
	rectFreqCheck.left=540;
	rectFreqCheck.top=540;
	rectFreqCheck.right=rectFreqCheck.left+250;
	rectFreqCheck.bottom=rectFreqCheck.top+30;

	rectFreqResponseCheck.left=540;
	rectFreqResponseCheck.top=570;
	rectFreqResponseCheck.right=rectFreqResponseCheck.left+250;
	rectFreqResponseCheck.bottom=rectFreqResponseCheck.top+30;

	rectTest.left=540;
	rectTest.top=600;
	rectTest.right=rectTest.left+200;
	rectTest.bottom=rectTest.top+30;

}

void ParaInit(int &FreqChecked,int &FreqDura,int &WaveVolume,int &TestTime)
{

	ifstream InitFile;
	char ParaName[20];
	int i,Para[4];
	char LineHead[22];
	int temp;

	i=0;
	for (i=0;i<4;i++)
		Para[i]=0;
	i=0;

	if( GetFileAttributes("config.dat")!=0xFFFFFFFF)
	{
		InitFile.open("config.dat");
		while(InitFile>>ParaName>>Para[i++])
		{
			;
		}
		InitFile.close();
	}

	if (Para[0]==0)
		FreqChecked=1000;
	else
		FreqChecked=Para[0];

	if (Para[1]==0)
		FreqDura=2;
	else
		FreqDura=Para[1];

	if (Para[2]==0)
		WaveVolume=12000;
	else
		WaveVolume=Para[2];

	if (Para[3]==0)
		TestTime=20;
	else
		TestTime=Para[3];

	
	InitFile.open("Amplify.dat");
	while(InitFile>>LineHead>>temp)
	{
		if (strcmp("TxMax:",LineHead)==0)
			iTxMax=temp;
		if (strcmp("TxMin:",LineHead)==0)
			iTxMin=temp;
		if (strcmp("RxMax:",LineHead)==0)
			iRxMax=temp;
		if (strcmp("RxMin:",LineHead)==0)
			iRxMin=temp;
	}
	InitFile.close();

}

void ParaRecord()
{
	GetWindowPara();
	//FREQCHECK,FREQCHECKTIME,WAVEVOLUME,TESTTIME
	ofstream InitFile;
	InitFile.open("config.dat");
	InitFile<<"FrequencyChecked:\t"<<FREQCHECK<<'\n';
	InitFile<<"FrequencyDuration:\t"<<FREQCHECKTIME<<'\n';
	InitFile<<"WaveVolume:\t"<<WAVEVOLUME<<'\n';
	InitFile<<"TestTime:\t"<<TESTTIME<<'\n';
	InitFile.close();
}

void SetWindowPara()
{
	char TempPara[10];
	itoa(FREQCHECK,TempPara,10);
	SetWindowText(GetDlgItem(hGlobalWnd,IDE_FREQ),TempPara);
	itoa(FREQCHECKTIME,TempPara,10);
	SetWindowText(GetDlgItem(hGlobalWnd,IDE_FREQDURA),TempPara);
	itoa(WAVEVOLUME,TempPara,10);
	SetWindowText(GetDlgItem(hGlobalWnd,IDE_WAVEVOLUME),TempPara);
	itoa(TESTTIME,TempPara,10);
	SetWindowText(GetDlgItem(hGlobalWnd,IDE_TESTTIME),TempPara);

}

void GetWindowPara()
{
	char TempPara[10];

	GetWindowText(GetDlgItem(hGlobalWnd,IDE_FREQ),TempPara,10);
	FREQCHECK=atoi(TempPara);

	GetWindowText(GetDlgItem(hGlobalWnd,IDE_FREQDURA),TempPara,10);
	FREQCHECKTIME=atoi(TempPara);

	GetWindowText(GetDlgItem(hGlobalWnd,IDE_WAVEVOLUME),TempPara,10);
	WAVEVOLUME=atoi(TempPara);

	GetWindowText(GetDlgItem(hGlobalWnd,IDE_TESTTIME),TempPara,10);
	TESTTIME=atoi(TempPara);

	SetSystemWaveVolume();
}


void DisplayTxPass(HDC hdc)
{		
	::SetTextColor(hdc,PASSCOLOR);
	::SetBkColor(hdc,BACKGROUND);
	::DrawText(hdc,"HeadSet Transmit Check PASS",strlen("HeadSet Transmit Check PASS"),
		&rectFreqCheck,DT_LEFT|DT_TOP|DT_INTERNAL);
}

void InvalidDisplayTxPass(HDC hdc)
{		
	InvalidateRect(hGlobalWnd,&rectFreqCheck,TRUE);
}

void DisplayRxPass(HDC hdc)
{		
	::SetTextColor(hdc,PASSCOLOR);
	::SetBkColor(hdc,BACKGROUND);
	::DrawText(hdc,"HeadSet Receive Check PASS",strlen("HeadSet Receive Check PASS"),
		&rectFreqResponseCheck,DT_LEFT|DT_TOP|DT_INTERNAL);
}

void InvalidDisplayRxPass(HDC hdc)
{		
	InvalidateRect(hGlobalWnd,&rectFreqResponseCheck,TRUE);
}

void DisplayTestFail(HDC hdc)
{
	::SetTextColor(hdc,FAILCOLOR);
	::SetBkColor(hdc,BACKGROUND);
	::DrawText(hdc,"TEST FAIL",strlen("TEST FAIL"),
		&rectTest,DT_LEFT|DT_TOP|DT_INTERNAL);
}

void InvalidTestFail(HDC hdc)
{		
	InvalidateRect(hGlobalWnd,&rectTest,TRUE);
}

void SetSystemWaveVolume()
{

	IVolume* pMasterVolume;
	///////////////////Set Wave Volume/////////////////
			
	// Volume control Initialization
	pMasterVolume = (IVolume*)new CVolumeOutWave();
	if ( !pMasterVolume || !pMasterVolume->IsAvailable())
	{
		//
	}
	pMasterVolume->Enable();
	pMasterVolume->RegisterNotificationSink(MasterWaveChanged, 0 );
	pMasterVolume->SetCurrentVolume(WAVEVOLUME);

	///////////////////

}

void FillDevices()
{

	WAVEINCAPS wavCaps;
	unsigned int i;
	unsigned int m_nDev=waveInGetNumDevs();

	SendDlgItemMessage(hGlobalWnd, IDL_FREQLIST, LB_RESETCONTENT, 0, NULL );

	for(i=0;i<m_nDev;i++) {
		ZeroMemory(&wavCaps,sizeof(WAVEINCAPS));
		if( MMSYSERR_NOERROR ==
			waveInGetDevCaps(i,&wavCaps,sizeof(WAVEINCAPS)) )

			SendDlgItemMessage(hGlobalWnd, IDL_DEVLIST, LB_ADDSTRING, 0, LPARAM(wavCaps.szPname) );
	}

	return;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -