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

📄 system.c

📁 一体化锁主程序
💻 C
📖 第 1 页 / 共 5 页
字号:
                //open_timer = open_timer1*2;
                //TR2 = 1;

                purview_timer = 0x4B0;
                DataBuf[7] = 0x30;
                DataBuf[8] = 0x30;
                send_chk(18);
             }
             else
             {
                purview_timer = 0x4B0;
                DataBuf[7] = 0x30;
                DataBuf[8] = 0x35;
                send_chk(18);
             }
          }
          else if(DataBuf[2] == 0xFE)      //远程命令开门(立即常开一段时间)
          {                                //远程命令门停止常开
                                           //远程命令门立即常闭一段时间(布防)
                                           //远程命令取消常闭(撤防)
             DataBuf[4] = (DataBuf[4]<<4) + DataBuf[5];
             DataBuf[6] = (DataBuf[6]<<4) + DataBuf[7];
             if(DataBuf[4] == 0)
             {
                if(DataBuf[6] == 0)
                {
                   relay = 1;
                   LED = 1;
                   relay_flag = 0;
                   purview_timer = 0x4B0;
                   DataBuf[7] = 0x30;
                   DataBuf[8] = 0x30;
                   send_chk(18);
                }
                else
                {
                   relay = 0;
                   LED = 0;
                   relay_timer = relay_timer1<<1;
                   relay_flag = 1;
                   purview_timer = 0x4B0;
                   DataBuf[7] = 0x30;
                   DataBuf[8] = 0x30;
                   send_chk(18);
                }
             }
             else if(DataBuf[4] == 1)
             {
                if(DataBuf[6] == 0)
                {
                   relay = 1;
                   LED = 1;
                   relay_flag = 0;
                   purview_timer = 0x4B0;
                   DataBuf[7] = 0x30;
                   DataBuf[8] = 0x30;
                   send_chk(18);
                }
                else
                {
                   relay = 1;
                   LED = 1;
                   relay_flag = 0;
                   purview_timer = 0x4B0;
                   DataBuf[7] = 0x30;
                   DataBuf[8] = 0x30;
                   send_chk(18);
                }
             }
             else
             {
                purview_timer = 0x4B0;
                DataBuf[7] = 0x30;
                DataBuf[8] = 0x35;
                send_chk(18);
             }
          }
       }

    }
    else if(CID2 == 'A')                  //读取信息命令
    {
       if(DataBuf[0] == 0xF2)
       {
          if(DataBuf[2] == 0xE5)          //读取已存储的用户数目
          {
             purview_timer = 0x4B0;
             DataBuf[7] = 0x30;
             DataBuf[8] = 0x30;
             DataBuf[13] = hex_asc((user_n>>4)&0x0F);
             DataBuf[14] = hex_asc(user_n&0x0F);
             DataBuf[15] = 0x30;
             DataBuf[16] = 0x30;
             send_chk(22);
          }
          else if(DataBuf[2] == 0xE6)      //读取用户登记资料
          {
             if(uart_rcv_len == 8)         //读取指定存储位置的用户登记资料
             {
                i = (DataBuf[6]<<4) + DataBuf[7];
                if(i == 0)
                {
                   i = (DataBuf[4]<<4) + DataBuf[5];
                   if((i != 0) && (i < (user_n+1)))
                   {
                      l = 0;
                      for(j=0;j<60;j++)
                      {
                         if(user_buf[j].class.purview != 0xFF)
                           l++;
                         if(l == i)
                         {
                            purview_timer = 0x4B0;
                            DataBuf[7] = 0x30;
                            DataBuf[8] = 0x30;
                            for(m=0;m<16;m++)
                            {
                               DataBuf[13 + m*2] = hex_asc((user_buf[j].whole[m]>>4)&0x0F);
                               DataBuf[14 + m*2] = hex_asc(user_buf[j].whole[m]&0x0F);
                            }
                            send_chk(50);
                            break;
                         }
                      }
                   }
                   else
                   {
                      purview_timer = 0x4B0;
                      DataBuf[7] = 0x45;
                      DataBuf[8] = 0x30;
                      send_chk(18);
                   }
                }
                else
                {
                   purview_timer = 0x4B0;
                   DataBuf[7] = 0x45;
                   DataBuf[8] = 0x30;
                   send_chk(18);
                }
             }
             else if(uart_rcv_len == 14)   //查询指定卡号的用户卡是否存在
             {
                if(user_n == 0)
                {
                   purview_timer = 0x4B0;
                   DataBuf[7] = 0x45;
                   DataBuf[8] = 0x30;
                   send_chk(18);
                }
                else
                {
                   for(i=0;i<5;i++)
                     user_tmp.class.card[i] = (DataBuf[4 + i*2]<<4) + DataBuf[5 + i*2];
                   for(i=0;i<60;i++)
                   {
                      if(user_buf[i].class.purview != 0xFF)
                      {
                         m = 0;
                         for(j=0;j<5;j++)
                         {
                            if(user_tmp.class.card[j] == user_buf[i].class.card[j])
                            {
                               m++;
                            }
                            else break;
                         }
                         if(m == 5)
                         {
                            purview_timer = 0x4B0;
                            DataBuf[7] = 0x30;
                            DataBuf[8] = 0x30;
                            for(j=0;j<16;j++)
                            {
                               DataBuf[13 + j*2] = hex_asc((user_buf[i].whole[j]>>4)&0x0F);
                               DataBuf[14 + j*2] = hex_asc(user_buf[i].whole[j]&0x0F);
                            }
                            send_chk(50);
                            TI = 0;
                            ES = 1;
                            return;
                         }
                      }
                   }
                   purview_timer = 0x4B0;
                   DataBuf[7] = 0x45;
                   DataBuf[8] = 0x30;
                   send_chk(18);
                }
             }
             else if(uart_rcv_len == 12)   //查询指定用户编号(ID)的用户是否存在
             {
                if(user_n == 0)
                {
                   purview_timer = 0x4B0;
                   DataBuf[7] = 0x45;
                   DataBuf[8] = 0x30;
                   send_chk(18);
                }
                else
                {
                   for(i=0;i<4;i++)
                     user_tmp.class.ID[i] = (DataBuf[4 + i*2]<<4) + DataBuf[5 + i*2];
                   for(i=0;i<60;i++)
                   {
                      if(user_buf[i].class.purview != 0xFF)
                      {
                         m = 0;
                         for(j=0;j<4;j++)
                         {
                            if(user_tmp.class.ID[j] == user_buf[i].class.ID[j])
                            {
                               m++;
                            }
                            else break;
                         }
                         if(m == 4)
                         {
                            purview_timer = 0x4B0;
                            DataBuf[7] = 0x30;
                            DataBuf[8] = 0x30;
                            for(j=0;j<16;j++)
                            {
                               DataBuf[13 + j*2] = hex_asc((user_buf[i].whole[j]>>4)&0x0F);
                               DataBuf[14 + j*2] = hex_asc(user_buf[i].whole[j]&0x0F);
                            }
                            send_chk(50);
                            TI = 0;
                            ES = 1;
                            return;
                         }
                      }
                   }
                   purview_timer = 0x4B0;
                   DataBuf[7] = 0x45;
                   DataBuf[8] = 0x30;
                   send_chk(18);
                }
             }
          }
          else if(DataBuf[2] == 0xEE)      //1 附带顺序号读取记录(防止丢失记录)
          {                                //0 查询控制器的最新事件记录
             DataBuf[4] = (DataBuf[4]<<4) + DataBuf[5];
             if((DataBuf[4] == 0) || (DataBuf[4] == 1))
             {
                for(i=0;i<14;i++)
                {
                   DataBuf[i*2 + 13] = hex_asc((card[i]>>4)&0x0F);
                   DataBuf[i*2 + 14] = hex_asc(card[i]&0x0F);
                }
                card[1] = 0;
                card[2] = 0;
                card[3] = 0;
                card[4] = 0;
                purview_timer = 0x4B0;
                DataBuf[7] = 0x30;
                DataBuf[8] = 0x30;
                send_chk(46);
             }
             else
             {
                purview_timer = 0x4B0;
                DataBuf[7] = 0x30;
                DataBuf[8] = 0x35;
                send_chk(18);
             }
          }
          else if(DataBuf[2] == 0xE0)      //读取SM的实时钟
          {
             sys_second = read_time_byte(0x81);     //读系统时间 --- 秒
             sys_min = read_time_byte(0x83);        //读系统时间 --- 分
             sys_hour = read_time_byte(0x85);       //读系统时间 --- 时
             sys_date = read_time_byte(0x87);       //读系统时间 --- 日
             sys_mon = read_time_byte(0x89);        //读系统时间 --- 月
             sys_week = read_time_byte(0x8b);       //读系统时间 --- 星期
             sys_year = read_time_byte(0x8d);       //读系统时间 --- 年
             DataBuf[13] = 0x32;
             DataBuf[14] = 0x30;
             DataBuf[15] = hex_asc((sys_year>>4)&0x0F);
             DataBuf[16] = hex_asc(sys_year&0x0F);
             DataBuf[17] = hex_asc((sys_mon>>4)&0x0F);
             DataBuf[18] = hex_asc(sys_mon&0x0F);
             DataBuf[19] = hex_asc((sys_date>>4)&0x0F);
             DataBuf[20] = hex_asc(sys_date&0x0F);
             DataBuf[21] = hex_asc((sys_week>>4)&0x0F);
             DataBuf[22] = hex_asc(sys_week&0x0F);
             DataBuf[23] = hex_asc((sys_hour>>4)&0x0F);
             DataBuf[24] = hex_asc(sys_hour&0x0F);
             DataBuf[25] = hex_asc((sys_min>>4)&0x0F);
             DataBuf[26] = hex_asc(sys_min&0x0F);
             DataBuf[27] = hex_asc((sys_second>>4)&0x0F);
             DataBuf[28] = hex_asc(sys_second&0x0F);
             purview_timer = 0x4B0;
             DataBuf[7] = 0x30;
             DataBuf[8] = 0x30;
             send_chk(34);
          }
          else if(DataBuf[2] == 0xE1)      //读取历史记录柜桶参数
          {
             DataBuf[13] = 0x30;
             DataBuf[14] = 0x30;
             DataBuf[15] = 0x30;
             DataBuf[16] = 0x30;
             DataBuf[27] = 0x30;
             DataBuf[28] = 0x30;
             DataBuf[29] = 0x30;
             DataBuf[30] = 0x32;
             DataBuf[17] = hex_asc((SAVEP>>4)&0x000f);
             DataBuf[18] = hex_asc(SAVEP&0x000f);
             DataBuf[19] = hex_asc((SAVEP>>12)&0x000f);
             DataBuf[20] = hex_asc((SAVEP>>8)&0x000f);
             DataBuf[21] = hex_asc(((LOADP)>>4)&0x000f);
             DataBuf[22] = hex_asc((LOADP)&0x000f);
             DataBuf[23] = hex_asc(((LOADP)>>12)&0x000f);
             DataBuf[24] = hex_asc(((LOADP)>>8)&0x000f);
             if(D7_flag)
                DataBuf[25] = 0x38;
             else DataBuf[25] = 0x30;
             if(D0_flag)
                DataBuf[26] = 0x31;
             else DataBuf[26] = 0x30;
             purview_timer = 0x4B0;
             DataBuf[7] = 0x30;
             DataBuf[8] = 0x30;
             send_chk(36);
          }
          else if(DataBuf[2] == 0xE2)      //顺序读取一条历史记录
          {                                //随机读取记录(指定位置读取)
             if(D0_flag == 0)
             {
                if(SAVEP == LOADP)
                {
                   /*purview_timer = 0x4B0;
                   DataBuf[7] = 0x45;
                   DataBuf[8] = 0x34;
                   send_chk(18);*/
                   //AT24C128_read(0x2000 + LOADP*16,I2C_rcv,14);
                   for(i=0;i<14;i++)
                   {
                      DataBuf[i*2 + 13] = 0x30;
                      DataBuf[i*2 + 14] = 0x30;
                   }
                   purview_timer = 0x4B0;
                   DataBuf[7] = 0x30;
                   DataBuf[8] = 0x30;
                   send_chk(46);
                }
                else
                {
                   LO

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -