操作LED的API在coredll.dll裡面有,只是在SDK裡面沒有聲明。
首先,包含nled.h標頭檔以及聲明兩個函數(取得LED資訊和設定LED狀態)
# include < nled.h > extern " C "
{
BOOL NLedGetDeviceInfo(INT nID, PVOID pOutput);
BOOL NLedSetDevice(INT nID, PVOID pOutput);
}
下面的函數可以取得裝置上LED總數,如果你的PPC支援震動,那麼震動電機也是被當作一個LED來對待的
//============================================//
// 功能: 獲得裝置上LED總數目
// 參數: 無
// 返回: 裝置上LED總數目
// 日期: 2009/03/05.10:40--2009/03/05.17:45
//============================================//
int GetLedCount()
{
NLED_COUNT_INFO nci;
int wCount = 0;
if(NLedGetDeviceInfo(NLED_COUNT_INFO_ID, (PVOID) &nci))
wCount = (int) nci.cLeds;
return wCount;
}
下面的函數設定LED狀態
//============================================//
// 功能: 設定裝置上LED狀態
// 參數: wLed,wStatus
// (入口): wLed : 表示LED number. The first LED is zero (0).
// (入口): wStatus : 表示LED狀態0(關閉),1(開啟),2(閃爍)
// 返回: 無
// 日期: 2009/03/05.10:40--2009/03/05.17:45
//============================================//
void SetLedStatus(int wLed, int wStatus)
{
NLED_SETTINGS_INFO nsi;
nsi.LedNum = (INT) wLed;
nsi.OffOnBlink = (INT) wStatus;
NLedSetDevice(NLED_SETTINGS_INFO_ID, &nsi);
}
以操作LED0為例
關閉: SetLedStatus(0, 0);
點亮: SetLedStatus(0, 1);
閃爍: SetLedStatus(0, 2);
//================================================================//
// 功能: 設定震動
// 參數: bStart
// (出口) bStart: TRUE為開始震動,FALSE為停止震動
// 返回: 無
// 日期: 2009/03/26.9:40--2009/03/26.21:45
//================================================================//
void StartStopVibrate(BOOL bStart)
{
NLED_SETTINGS_INFO settings;
memset(&settings,0,sizeof(NLED_SETTINGS_INFO));
settings.LedNum = 1;
if(bStart)
settings.OffOnBlink = 1;
else
settings.OffOnBlink = 0;
NLedSetDevice(NLED_SETTINGS_INFO_ID, &settings);
}