WinCE LED控制

分类:MFC 标签:MFC, 编程, WinCE

LED控制事实上就是控制设备管脚电平高低, 所控制的设备未必一定是LED灯.
用到的两个函数:NLedGetDeviceInfo(),NLedSetDevice().
用到的结构体:NLED_SETTINGS_INFO.

NLedGetDeviceInfo()原型:
BOOL WINAPI NLedGetDeviceInfo(
  UINT nInfoId,
  void* pOutput
);
其中参数 nInfoId 的取值决定了参数 pOutput 的返回值类型.
NLedGetDeviceInfo
nInfoId取值pOutput类型说明
NLED_COUNT_INFO_IDNLED_COUNT_INFO指定pOutput数据为设备上LED的数量
NLED_SUPPORTS_INFO_IDNLED_SUPPORTS_INFO指定pOutput数据为LED支持的能力信息
NLED_SETTINGS_INFO_IDNLED_SETTINGS_INFO指定pOutput数据为LED电流设置信息

NLedSetDevice()原型:
BOOL WINAPI NLedSetDevice(
  UINT nDeviceId,
  void* pInput
);
参数:
nDeviceId: 指定要设置的设备ID, 一般取值NLED_SETTINGS_INFO_ID
pInput: 指向NLED_SETTINGS_INFO结构体的指针.

结构体NLED_SETTINGS_INFO定义:
struct NLED_SETTINGS_INFO {
  UINT LedNum;
  INT OffOnBlink;
  LONG TotalCycleTime;
  LONG OnTime;
  LONG OffTime;
  INT MetaCycleOn;
  INT MetaCycleOff; 
};
说明:
NLED_SETTINGS_INFO
参数说明
LedNumLED设备ID,从0开始.
OffOnBlink值为0时LED常闭,值为1时常亮,值为2时闪烁.只有OffOnBlink值为2时,下边的参数才起作用.
TotalCycleTime电平变化周期.电平一高一低的时间长度为周期(这里的电平高低并不代表亮灭,因为可能工作在PWM半亮状态,以电平周期为准).这个周期跟51的时钟周期类似.TotalCycleTime=OnTime+OffTime;
OnTime一个电平周期中,电平为ON的时间.(均微秒为单位)
OffTime一个电平周期中,电平为OFF的时间
MetaCycleOn这个东西比较难理解.假设LED工作在PWM模式.每个方波的周期就是电平周期.当需要三个方波用来设置亮度(半亮状态),后五个方波用来熄灭LED灯时.这时,MetaCycleOn就等于3.MetaCycleOff就等于5.
MetaCycleOff当理解了MetaCycleOn,这个也就理解了.
实例:
// bON: 开/关
// num: LED灯ID
void CtrlLedPower(BOOL bON, int num)
{
	struct NLED_SETTINGS_INFO ledinfo;
	ledinfo.LedNum = num;
	if(bON)
		ledinfo.OffOnBlink = 1;
	else
		ledinfo.OffOnBlink = 0;
	NLedSetDevice(NLED_SETTINGS_INFO_ID, &ledinfo);
}
你可能还会对下列文章感兴趣:

0条评论 你不想来一发么↓

    想说点什么呢?

    您需要登录您的Google账号才能进行评论。