本帖最后由 littleshrimp 于 2012-8-31 12:30 编辑
完成设备的绑定功能后我们还落下一个功能,就是清除绑定。我们需要增加一些代码在main函数中。当用户按下USER键时LED3闪烁,再次按下USER键系统进入撤布防切换,同时LED4闪烁1次。再次按下会清除已经绑定的ID数据,同时LED4闪烁2次。
接下来是报警的触发,为了便于在STM32F0-Discovery上演示报警防区的提示功能,我们可以选择使用DAC播放不同防区的语音使用户对报警来源加以区分。因为需要录制音频,时间关系,这里使用LED4的闪烁次数来区分报警来源。对已经绑定过的设备。如果其触发报警系统会根据报警ID在FLASH的索引位置使LED4闪烁不同的次数。使用语音时只需将不同的索引对应到指定的音频数组并通过DAC输出即可。
下面是修改后的代码:
while (1)
{
if(bd == ALARM_SWITCH)//修改防区状态
{
LEDBlink(LED3,1);//
if(alarm_on)
{
alarm_on = 0;
STM_EVAL_LEDOff(LED4);//熄灭LED4
}
else
{
alarm_on = 1;
STM_EVAL_LEDOn(LED4);//点亮LED4
}
STM_EVAL_LEDOff(LED3);//熄灭LED3
bd = NONE;
}
else if(bd == CLEAR_ID)//清除已绑定ID
{
LEDBlink(LED3,1);//
BDClear();//清除绑定数据
LEDBlink(LED4,2);//LED4闪烁2次
bd = NONE;//退出绑定
}
else if(bd == BINDING)//绑定
{
LEDBlink(LED3,1);//
slave_id=GetSlaveID();//获取触发的报警ID
if(slave_id)
//如果ID不为零
{
BDAddSlaveID(slave_id);//添加ID
LEDBlink(LED4,1);//闪亮LED4一次
bd = NONE;//退出绑定
}
}
else
{
if(alarm_on)//如果布防开启
{
slave_id=GetSlaveID();//获取触发的报警ID
if(slave_id)
//如果ID不为零
{
slvId_index = GetSlaveIdIndex(slave_id);
LEDBlink(LED4,slvId_index);//将对应的索引位置输出到LED4
}
}
if(i++>=20)
{
bd = NONE;//退出绑定
i = 0;
}
}
}
|