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

📄 funcontrol.cpp

📁 wince中工程模式用来测试硬件的驱动是否好用
💻 CPP
📖 第 1 页 / 共 3 页
字号:
{
	memset(strReturnData,0,sizeof(strReturnData));

	HANDLE hBat = NULL;
	BOOL fUpdate = TRUE;
	SYSTEM_POWER_STATUS_EX2 batlevel;
	DWORD dwBytesNb = 0;
	hBat = CreateFile(L"BAT1:", 0, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
	if(hBat == INVALID_HANDLE_VALUE)
	{
		RETAILMSG(1,(TEXT("Fail to Creat \r\n")));
		return FALSE;
	}
	DeviceIoControl(hBat, 
		IOCTL_BATTERY_GETSYSTEMPOWERSTATUSEX2,
		&fUpdate,
		sizeof(BOOL),
		&batlevel, 
		sizeof(SYSTEM_POWER_STATUS_EX2),
		&dwBytesNb,
		NULL);
	CloseHandle(hBat);


	static DWORD dbBatteryVoltage; 
	static DWORD dbBatteryLifePercent; 
	dbBatteryLifePercent = batlevel.BatteryLifePercent;
	dbBatteryVoltage =  batlevel.BatteryVoltage;

	/*显示当前的电压和电量的百分比*/
	wsprintf(strReturnData,TEXT("%2d毫伏,百分之%d%"),dbBatteryVoltage,dbBatteryLifePercent);
	
	return TRUE;

};

FUNCTIONDESC(switchRange)
{
	TCHAR temp[256];
	memset(temp,0,sizeof(TCHAR)*256);

	memset(strReturnData,0,sizeof(strReturnData));
	DETAILEDRILDEVSPECIFIC tmp;//
	dwDevSpecificCommand = RIL_DEVSPECIFICPARAM_CBAND;//

	RilAtCBANDFlag cband = EGSM_DCS_MODE;
	if(IDNO == (MessageBox(NULL,_T("切换为900/1800?"),_T("切换频段"),MB_YESNO)))
	{
		cband = GSM850_PCS_MODE;
	}


	tmp.dwDevSpecificCommand = dwDevSpecificCommand;
	tmp.lpData = (PVOID)&cband;
	tmp.cbSize = sizeof(tmp);  

	rilSucess = FALSE;
	HRESULT hr =  (*s_pfRIL_DevSpecific)(hRil, (BYTE*)(&tmp), sizeof(tmp));
	WAITFORAPICOMPLETION(hr);//
	if(rilSucess)
	{
	switch(cband)
	{
	case EGSM_DCS_MODE:
			StringCchCopy(strReturnData,sizeof(strReturnData),_T("900/1800"));
		break;
	case GSM850_PCS_MODE:
			StringCchCopy(strReturnData,sizeof(strReturnData),_T("1900"));
		break;
	default:
			StringCchCopy(strReturnData,sizeof(strReturnData),_T("Error"));
		break;
	}
	}
	else
	{
			StringCchCopy(strReturnData,sizeof(strReturnData),_T("失败!"));

	}
	return TRUE;

Error:
	if (hRil) 
	{
		(*s_pfRIL_Deinitialize)(hRil);
		printf("zjh***************RIL s_pfRIL_Deinitialize ..........\r\n");
	}

	if (g_hEvent) 
	{
		(void)CloseHandle(g_hEvent);
	}
	return FALSE;
}

//*983*0#
//定义工程模式使用的函数

BOOL SearchCard()
{
	
		BOOL bContinue = TRUE;          
		HANDLE hFlashCard;              
		WIN32_FIND_DATA lpwfdFlashCard;   
		int Tlashcount=0;

		hFlashCard = FindFirstFlashCard (&lpwfdFlashCard);
		if (hFlashCard == INVALID_HANDLE_VALUE)
			return FALSE;
		while (bContinue) 
		{
			/*MessageBox(NULL,lpwfdFlashCard.cFileName,
				TEXT("FindFlash"),MB_OK);*/
			bContinue = FindNextFlashCard (hFlashCard,
				&lpwfdFlashCard);
			if (bContinue)
			{
				Tlashcount++;
			}
			
		}
		FindClose (hFlashCard);  // Close the search handle.
	
	if (0 == Tlashcount)
	{
	//MessageBox(NULL,L"不存在存储卡",L"存储卡测试",MB_OK);
	return FALSE;
	}

	return TRUE;
	
}

 BOOL CAMERA(void)
{
	//BOOL bPreviewTest = FALSE;
	SHCAMERACAPTURE shcc;
	//Set the SHCAMERACAPTURE structure.
	ZeroMemory(&shcc, sizeof(shcc));
	shcc.cbSize = sizeof(shcc);
	//shcc.hwndOwner = GetParent();
	//shcc.pszInitialDir = TEXT("\\My Documents\\My Pictures");
	shcc.pszInitialDir = TEXT("\\My Documents\\我的图片");
	// shcc.pszDefaultFileName = pszFilename;
	// shcc.pszTitle = pszTitle;
	shcc.VideoTypes = CAMERACAPTURE_VIDEOTYPE_STANDARD;
	shcc.nResolutionWidth = 320;
	shcc.nResolutionHeight = 240;
	shcc.nVideoTimeLimit = 0;
	shcc.Mode = CAMERACAPTURE_MODE_STILL;
	//call function SHCameraCapture provided by micro
	HRESULT hResult = SHCameraCapture(&shcc);
	

	return TRUE;
}

FUNCTIONDESC(EMLCDTest)
{
return TRUE;
};
//int EM_LCDTest()
int EM_LCDTest()
{
	
		HDC hdc;
		HRGN rgn;
		RECT rect;
		HBRUSH brush;
		rect.left = 0;
		
		/*RECT rc = {0};
		GetClientRect(NULL,&rc);*/
		rect.top = 0;
		rect.right = GetSystemMetrics(SM_CXSCREEN);
		rect.bottom = GetSystemMetrics(SM_CYSCREEN);
		rgn = CreateRectRgnIndirect(&rect);
		hdc = ::GetDC(NULL);

		//ColorPalette *palette;
		//HRESULT hrsult= GetPalette(	&palette);

		//白色
		brush = CreateSolidBrush(0xffffff);
		FillRgn(hdc,rgn,brush);
		Sleep(2000);

		//黑色
		brush = CreateSolidBrush(0x000000);
		FillRgn(hdc,rgn,brush);
		Sleep(2000);
		
		//红色r
		brush = CreateSolidBrush(0xff0000);
		FillRgn(hdc,rgn,brush);
		Sleep(2000);

		//蓝色g
		brush = CreateSolidBrush(0x00ff00);
		FillRgn(hdc,rgn,brush);
		Sleep(2000);

		//绿色b
		brush = CreateSolidBrush(0x0000ff);
		FillRgn(hdc,rgn,brush);
		Sleep(2000);

		DeleteObject(rgn); 
		DeleteObject(brush); 
		DeleteObject(hdc);
		//SetPalette(	palette);

		//UpdateWindow(::GetDlgItem(GetForegroundWindow(), IDD_DIALOG_HWTEST));
		return TRUE;

}
FUNCTIONDESC(EMKEYTest)
{
	/*memset(strReturnData,0,sizeof(strReturnData));
	CReportDlg dlg(WAKESLEEP_DLG);
	dlg.DoModal();*/

	return TRUE;

}

BOOL LED(int iLEDStep)
{
	//SetEvent(LedMsgHandle);
	//typedef struct NLED_SETTINGS_INFO NLED_SETTINGS_INFO;
	HANDLE h;
	NLED_SETTINGS_INFO InBuf;
	BOOL bResult;

	//	ZeroMemory(&InBuf, sizeof(NLED_SETTINGS_INFO));
	
	h= CreateFile(L"NLD1:", 
		GENERIC_WRITE | GENERIC_READ,
		0,
		NULL,
		OPEN_ALWAYS,
		FILE_ATTRIBUTE_NORMAL,
		NULL);
	if(INVALID_HANDLE_VALUE  == h)
	{
		MessageBox(NULL,_T("Open Fail!!"), _T("Test"),MB_OK);

		return 0;
	}
	
	switch(iLEDStep)
	{
	case VIBERATERON:
		// Open the red LED(on for 3s).
		//MessageBox(NULL,_T("LED test is going on"),_T("LED test"),MB_OK);
		//InBuf.LedNum = 1;
		//InBuf.OffOnBlink = 1;
		//DeviceIoControl(h, IOCTL_NLED_SETDEVICE, &InBuf, sizeof(NLED_SETTINGS_INFO), NULL, 0, NULL, NULL);
		//Sleep(3000);
		//// Close the red LED.
		//InBuf.LedNum = 1;
		//InBuf.OffOnBlink = 0;
		//DeviceIoControl(h, IOCTL_NLED_SETDEVICE, &InBuf, sizeof(NLED_SETTINGS_INFO), NULL, 0, NULL, NULL);
		//// Open the green LED(on for 3s).
		InBuf.LedNum = 2;
		InBuf.OffOnBlink = 1;
		bResult = DeviceIoControl(h, IOCTL_NLED_SETDEVICE, &InBuf, sizeof(NLED_SETTINGS_INFO), NULL, 0, NULL, NULL);
		if(!bResult)
		{
			MessageBox(NULL,L"DeviceIoControl(GLON) operation fail!!", L"Test",MB_OK);	
			return 0;
		}
		Sleep(3000);
		// Close the green LED.
		InBuf.LedNum = 2;
		InBuf.OffOnBlink = 0;
		bResult = DeviceIoControl(h, IOCTL_NLED_SETDEVICE, &InBuf, sizeof(NLED_SETTINGS_INFO), NULL, 0, NULL, NULL);
		if(!bResult)
		{
			MessageBox(NULL,L"DeviceIoControl(GLOFF) operation fail!!", L"Test",MB_OK);	
			return 0;
		}
		CloseHandle(h);
		MessageBox(NULL,_T("振动测试结束"),_T("振动测试"),MB_OK);
		break;
	case LEDTEST :
		// open green
		InBuf.LedNum = 0;
		InBuf.OffOnBlink = 1;
		bResult = DeviceIoControl(h, IOCTL_NLED_SETDEVICE, (void *)&InBuf, sizeof(NLED_SETTINGS_INFO), NULL, 0, NULL, NULL);
		if(!bResult)
		{
			MessageBox(NULL,L"DeviceIoControl(VON) operation fail!!", L"Test",MB_OK);	
			return 0;
		}
		Sleep(1500);
		//close green
		InBuf.OffOnBlink =0; //0;
		bResult = DeviceIoControl(h, IOCTL_NLED_SETDEVICE, (void *)&InBuf, sizeof(NLED_SETTINGS_INFO), NULL, 0, NULL, NULL);
		Sleep(1000);
		
		//open red
		InBuf.LedNum = 1;
		InBuf.OffOnBlink = 1;//0;
		bResult = DeviceIoControl(h, IOCTL_NLED_SETDEVICE, (void *)&InBuf, sizeof(NLED_SETTINGS_INFO), NULL, 0, NULL, NULL);
		if(!bResult)
		{
			MessageBox(NULL,L"DeviceIoControl(VOFF) operation fail!!", L"Test",MB_OK);	
			return 0;
		}

		CloseHandle(h);
		//MessageBox(NULL,_T("LED灯测试结束"),_T("LED灯测试"),MB_OK);
		break;
	default:
		break;
	}
	//	CloseHandle(h);
	return TRUE;
}


//disable掉原先的功能定义的
//当我返回TRUE,并在返回之前除了判断什么也不做,
//就是告诉系统说,这几个键我要操作,你不要管 


#if 0
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{ 
	if (HC_ACTION == nCode) 
	{ 
		KBDLLHOOKSTRUCT* pkb = (KBDLLHOOKSTRUCT*)lParam;
		switch (wParam)
		{	
		
			case WM_KEYUP: 
			case WM_KEYDOWN: 
			if (pkb->vkCode == VK_TEND && wParam == WM_KEYDOWN && g_hHookWnd != NULL)
			{ 
				PostMessage(g_hHookWnd, WM_ENDKEY_EXIT, 0, 0);
				return TRUE;
			}
			//要捕捉的功能键 
			if (pkb->vkCode == VK_THOME | | pkb->vkCode == VK_TTALK || pkb->vkCode == VK_TRECORD || pkb->vkCode == VK_APP3) 
			{ return TRUE; 
			} 
			break; 
		default:
			break;
		} 
	} 
	return CallNextHookEx(g_hHook, nCode, wParam, lParam);
} 

//在你需要捕捉功能键的界面的代码里写上
BOOL Keyboardtest()
{
	SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardProc, GetInstance(), 0); 


}

#endif


LRESULT CALLBACK KeyboardProcWince(int nCode, WPARAM wParam, LPARAM lParam)
{ 
	/*if (HC_ACTION == nCode) 
	{ */
	KBDLLHOOKSTRUCT* pkb = (KBDLLHOOKSTRUCT*)lParam;
	switch (wParam)
	{	

	case WM_KEYUP: 
	case WM_KEYDOWN: 
		if (pkb->vkCode == VK_TEND && wParam == WM_KEYDOWN /*&& g_hHookWnd != NULL*/)
		{ 
			MessageBox(NULL,L"END",L"按键测试",MB_OK);
			//PostMessage(g_hInstalledLLKBDhook, WM_ENDKEY_EXIT, 0, 0);
			return TRUE;
		}
		//要捕捉的功能键 
		/*if (pkb->vkCode == VK_THOME | | pkb->vkCode == VK_TTALK || pkb->vkCode == VK_TRECORD || pkb->vkCode == VK_APP3) 
		{ return TRUE; 
		} */
		break; 
	default:
		break;
	} 
	return TRUE;
	/*} 
	return CallNextHookEx(g_hHook, nCode, wParam, lParam);*/
} 

//在你需要捕捉功能键的界面的代码里写上
BOOL Keyboardtest()
{
	HINSTANCE hInstance=AfxGetApp()->m_hInstance;
	ActivateKBHook( hInstance,KeyboardProcWince); 


	DeactivateKBHook();

	return TRUE;
}

BOOL RingStonePlay(BOOL bCmd)
{
	BOOL bRet;
	if(bCmd)
	{
		bRet = PlaySound(L"\\Windows\\Lowbatt.wav", NULL, SND_ASYNC | SND_LOOP);
		if (!bRet)
		{
			//ERR_TRACE(L"Speaker:PlaySound \\Windows\\Lowbatt.wav error!");
			//g_ErrorLog.WriteLog(L"Speaker:PlaySound \\Windows\\Lowbatt.wav error!");
		}
		else
		{
			//BASE_TRACE(L"Speaker:PlaySound \\Windows\\Lowbatt.wav sucessful!");
			//g_ErrorLog.WriteLog(L"Speaker:PlaySound \\Windows\\Lowbatt.wav sucessful!");
		}
	}
	else
	{
		bRet = PlaySound(NULL, NULL, SND_ASYNC | SND_LOOP);
		if (!bRet)
		{
			//ERR_TRACE(L"Speaker:PlaySound NULL error!");
			//g_ErrorLog.WriteLog(L"Speaker:PlaySound NULL error!");
		}
		else
		{
			//BASE_TRACE(L"Speaker:PlaySound NULL sucessful!");
			//g_ErrorLog.WriteLog(L"Speaker:PlaySound NULL sucessful!");
		}
	}	
	return bRet ;
}

/**
* Method call Loopback to  Control the Loop Open
* @param none
* @TRUE   indicates succeed. FALSE indicates failure. 
*/
#if 0
BOOL ReceiverOn(void)
{
	//send message 0x450 to open get the Control waveout device
	waveOutMessage(0,0x450/*MESSAGE_OPEN*/,0,0);
	//ERR_TRACE(L"waveOutMessage 0x450 LoopOn has been send <receiver>!");

⌨️ 快捷键说明

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