📄 funcontrol.cpp
字号:
{
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 + -