⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 内容摘要: LHD6000主板主芯片程序 ISD1730时序说明: 参考:void Send_1Byte(uchar ucData_s)和uchar Receive_1Byte(void)的说明.
💻 C
📖 第 1 页 / 共 5 页
字号:
                }
                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 + -