📄 main.c
字号:
}
else
{
FlagKBExeOK = 0;
}
break;
//switch (g_aucKBRecvdBuff[2]) 分支
case 0x18: //防区取消旁路
if (BYPASS_FAIL == (BypassOrUnbypZn(1)))
{
FlagKBExeOK = 0;
}
else
if (!g_FlagPrtcl41)
{
RcdCntctIDEvt((BYPASS_ZN_CTID_INDEX+1)|0x80, g_aucKBRecvdBuff[3]);
}
break;
case 0x19: //旁路
if (BYPASS_FAIL == (BypassOrUnbypZn(0)))
{
FlagKBExeOK = 0;
}
else
if (!g_FlagPrtcl41)
{
RcdCntctIDEvt((BYPASS_ZN_CTID_INDEX+1)|0x40, g_aucKBRecvdBuff[3]);
}
break;
case 0x20: //防区设置
if (SetZoneType())
{
FlagKBExeOK = 0;
}
break;
//switch (g_aucKBRecvdBuff[2]) 分支
case 0x21:
switch (g_aucKBRecvdBuff[3])
{
case 0x01: //进入延时
if ((0x30 >= g_aucKBRecvdBuff[4]) && IsBCD(g_aucKBRecvdBuff[4]))
{
if (WriteByte(g_aucKBRecvdBuff[4], EEPROM_ADD_COMIN_DELAY))
{
FlagKBExeOK = 0;
break;
}
else
{ //修改成功,
g_ucCominDelay = g_aucKBRecvdBuff[4];
/*//通知键盘
g_aucKBSendBuff[LOCATN_KB_ID] = KB_BC_ID;
g_aucKBSendBuff[LOCATN_KB_PKG_LEN] = KB_CMD_PKG_LEN + 1;
g_aucKBSendBuff[LOCATN_KB_CMDH] = 0x34;
g_aucKBSendBuff[LOCATN_KB_CMDL] = 0x03;
g_aucKBSendBuff[LOCATN_KB_CMDL + 1] = g_ucCominDelay;
g_FlagHasKBMsgSend = 1;
g_aucRepeatKBMsg[1] = TIMES_KB_CMD_REPEAT;*/
}
}
else
{
FlagKBExeOK = 0;
}
break;
case 0x02: //退出延时
if ((0x30 >= g_aucKBRecvdBuff[4]) && IsBCD(g_aucKBRecvdBuff[4]))
{
if (WriteByte(g_aucKBRecvdBuff[4], EEPROM_ADD_OUT_DELAY))
{
FlagKBExeOK = 0;
break;
}
g_ucOutDelay = g_aucKBRecvdBuff[4];
/*//通知键盘
g_aucKBSendBuff[LOCATN_KB_ID] = KB_BC_ID;
g_aucKBSendBuff[LOCATN_KB_PKG_LEN] = KB_CMD_PKG_LEN + 1;
g_aucKBSendBuff[LOCATN_KB_CMDH] = 0x34;
g_aucKBSendBuff[LOCATN_KB_CMDL] = 0x04;
g_aucKBSendBuff[LOCATN_KB_CMDL + 1] = g_ucOutDelay;
g_FlagHasKBMsgSend = 1;
g_aucRepeatKBMsg[1] = TIMES_KB_CMD_REPEAT;*/
}
else
{
FlagKBExeOK = 0;
}
break;
case 0x03: //摘机振铃次数调整
if ((0x99 == g_aucKBRecvdBuff[4]) //99 表示不摘机(不受电话控制)
|| ((0x00 != g_aucKBRecvdBuff[4]) && (0x09 >= g_aucKBRecvdBuff[4]))
)
{
if (WriteByte(g_aucKBRecvdBuff[4], EEPROM_ADD_RING))
{
FlagKBExeOK = 0;
break;
}
g_ucRingsAnsw = g_aucKBRecvdBuff[4];
}
else
{
FlagKBExeOK = 0;
}
break;
case 0x04: //静音/强音报警选择
if (0 == g_aucKBRecvdBuff[4])
{
ucTmp_PKBMsg = NO;
}
else if (1 == g_aucKBRecvdBuff[4])
{
ucTmp_PKBMsg = YES;
}
else
{
FlagKBExeOK = 0;
break;
}
if (WriteByte(ucTmp_PKBMsg, EEPROM_ADD_FLAG_TRUMP_SEL))
{
FlagKBExeOK = 0;
break;
}
g_FlagReAdm = 1;
g_FlagTrumpSel = (bit) (g_aucKBRecvdBuff[4]);
if (!g_FlagTrumpSel) //如果选择关闭,立即关闭警号,g_FlagTrumpOn 不变,为蜂鸣器计时
{
g_aucAuxSendBuff[0] = 0x20;
g_aucAuxSendBuff[1] = 0x02;
g_aucRepeatAuxMsg[1] = TIMES_AUX_CMD_REPEAT;
g_FlagHasAuxMsgSend = 1;
if (!g_FlagPrtcl41)
{
RcdCntctIDEvt((STOP_TRUMP_CTID_INDEX+1)|0x40,
g_aucKBRecvdBuff[LOCATN_KB_ID]);
}
}
else
{
if (!g_FlagPrtcl41)
{
RcdCntctIDEvt((STOP_TRUMP_CTID_INDEX+1)|0x80,
g_aucKBRecvdBuff[LOCATN_KB_ID]);
}
}
break;
case 0x05: //自动定时布/撤防选择
if (0 == g_aucKBRecvdBuff[4])
{
ucTmp_PKBMsg = NO;
}
else if (1 == g_aucKBRecvdBuff[4])
{
ucTmp_PKBMsg = YES;
}
else
{
FlagKBExeOK = 0;
break;
}
if (WriteByte(ucTmp_PKBMsg, EEPROM_ADD_FLAG_TIMER_ARM))
{
FlagKBExeOK = 0;
break;
}
g_FlagTimeArm = (bit) (g_aucKBRecvdBuff[4]);
break;
case 0x06: //警号鸣叫时间设置
if ((0x30 >= g_aucKBRecvdBuff[4])
&& (IsBCD(g_aucKBRecvdBuff[4])))
{
if (WriteByte(g_aucKBRecvdBuff[4], EEPROM_ADD_TRUMP_TIME))
{
FlagKBExeOK = 0;
}
else
{
g_ucTrumpTime = g_aucKBRecvdBuff[4];
}
}
else
{
FlagKBExeOK = 0;
}
break;
case 0x07: //设置继电器输出方式,0x01为报警输出,0x02火警输出,0x03布防输出
if ((0 != g_aucKBRecvdBuff[4]) && (3 >= g_aucKBRecvdBuff[4]))
{
if (WriteByte(g_aucKBRecvdBuff[4], EEPROM_ADD_RELAY_OUT))
{
FlagKBExeOK = 0;
}
else
{
g_ucRelayType = g_aucKBRecvdBuff[4];
g_FlagRelayChang = 1;
}
}
else
{
FlagKBExeOK = 0;
}
break;
default:
FlagKBExeOK = 0;
break;
}
break;
//switch (g_aucKBRecvdBuff[2]) 分支
case 0x22: //录音
if (0x09 == g_aucKBRecvdBuff[3])
{
SendISD1730CmnCmd(PWR_UP_ISD);
EraseAdd();
g_FlagEraseAdd = 1;
}
else
{
FlagKBExeOK = 0;
}
break;
//switch (g_aucKBRecvdBuff[2]) 分支
case 0x23: //放音
if ((0x00 != g_aucKBRecvdBuff[3]) && (0x09 >= g_aucKBRecvdBuff[3]))
{
pin_Spk = 0;
SendISD1730CmnCmd(PWR_UP_ISD);
PlayISD(g_aucKBRecvdBuff[3], 1);
}
else
{
FlagKBExeOK = 0;
}
break;
//switch (g_aucKBRecvdBuff[2]) 分支
case 0x24:
switch (g_aucKBRecvdBuff[3])
{
case 0x01: //修改用户密码 //g_aucKBRecvdBuff[3] == 1
if (IsBCD(g_aucKBRecvdBuff[4]) && IsBCD(g_aucKBRecvdBuff[5]))
{ //密码冲突判断由键盘完成
ClrWdt();
if (2 != PageWrite(g_aucKBRecvdBuff + 4, EEPROM_ADD_USER_PWD, 2))
{
FlagKBExeOK = 0;
}
else
{
//有时24C04写入失败,重新读出发送较好?
g_ucUserPwdH = g_aucKBRecvdBuff[4]; //ReadByte(EEPROM_ADD_USER_PWD);
g_ucUserPwdL = g_aucKBRecvdBuff[5]; //ReadByte(EEPROM_ADD_USER_PWD + 1);
//广播发送
SendKBSysInfo(0x01, 0x01);
}
//ClrWdt();
}
else
{
FlagKBExeOK = 0;
}
break;
case 0x02: //修改操作密码 //g_aucKBRecvdBuff[3] == 2
if (0x04 == g_aucKBRecvdBuff[1])
{ //密码冲突判断由键盘完成
if ((0 == g_aucKBRecvdBuff[4]) || (0x05 < g_aucKBRecvdBuff[4]))
{
FlagKBExeOK = 0;
break;
}
if (2 != PageFill(0xFF, EEPROM_ADD_GUEST_PWD + BYTE_PER_PWD*g_aucKBRecvdBuff[4]
- BYTE_PER_PWD, 2))
{
FlagKBExeOK = 0;
}
}
else
if ((g_aucKBRecvdBuff[4] <= 0x05) //有5个操作密码
&& (0 != g_aucKBRecvdBuff[4])
&& IsBCD(g_aucKBRecvdBuff[5])
&& IsBCD(g_aucKBRecvdBuff[6])
)
{
ClrWdt();
i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -