操作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);
}
(1)下面的函数可以取得设备上LED总数,如果你的系统支持振动,那么振动电机也是被当作一个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;
}
(2)下面的函数设置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);
(3)设置电机震动状态
//================================================================//
// 功能: 设置振动
// 参数: 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);
}
参考原文:http://blog.csdn.net/li_guotao/archive/2009/07/22/4370271.aspx