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

📄 revfunc.c

📁 指纹通讯模块程序
💻 C
字号:
/*
void revFunction(void)
{
    // unsigned char checksum=0;
     unsigned char revChar;
     unsigned char Num=0;
    unsigned char PacketLength[2];
     unsigned char Cont=0;
     unsigned char test[20]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} ;
     bit RevAddress=0;
     bit RevHead=0;
     bit RevPacketID=0;
     bit RevPacketLength=0;
     bit RevPacketData=0;
         //revChar=SBUF;
     unsigned char cont=0;
     while(!revSuccess)
     {

       if(RI==1)
         {
          revChar=SBUF;
           RI=0;

           Num++;
          //revChar=SBUF;
           if(revChar!=0xEF) cont++;
           test[Num-1]=revChar;
          /*
           if((Num==1) && (revChar==0x0EF))
                  RevHead=1;
           if(Num==2 && revChar==0x01)
                  Cont++; //检测包头:0xFF01
           if(Num==3 && revChar==0xFF)
                  Cont++;
           if(Num==4 && revChar==0xFF)
                  Cont++;               //检测模块地址:  0xF1F2F3F4
           if(Num==5 && revChar==0xFF)
                  Cont++;
           if(Num==6 && revChar==0xFF)
                if(Cont==4)
                    {
                      Cont=0;
                      RevAddress=1;     // 收到有效地址
                    }
           if(Num==7 && RevAddress==1)              // 收到有效地址
                  {
                     PacketID=revChar;              // 检测包标识
                     checksum+=revChar;
                     RevPacketID=1;
                  }
           if(Num==8 && RevPacketID==1)          //PacketLength[1]放LENGTH的低字节
                                                    //PacketLength[0]放LENGTH的高字节
                  {
                     PacketLength[Num-8]=revChar;  //检测包长度的高字节
                     checksum+=revChar;
                  }
           if(Num==9 && RevPacketID==1)
                  {
                     PacketLength[Num-8]=revChar;  //检测包长度的低字节
                     checksum+=revChar;
                     RevPacketLength=1;
                  }

           if((Num>9) && (RevPacketLength==1))  //接收应答包的确认码和参数

              {
                 if(Num-9<=PacketLength[1]-2)

                  {
                    MessageLength=PacketLength[1]-3; //包长度减去2字节的效验位和1字节的确认码

                    if(PacketLength[1]<=3)         //应答包内容不带参数
                      {
                        PacketData=revChar ;       //获取包的确认码
                        checksum+=revChar;
                        PacketValue =0 ;          //不带参数的包做标记
                        RevPacketData=1;
                      }
                    if(PacketLength[1]>3 && Num<PacketLength[1]+9-2) //应答包内容(确认码)带参数
                     {
                      *(PacketMessage+Num-10)=revChar; //获取包的内容的参数
                       checksum+=revChar;
                        PacketValue =1;           //带参数的包做标记
                        RevPacketData=1;
                     }
                  }
             }
           if((Num>8+PacketLength[1])&& (Num<=PacketLength[1]+8+2)&& RevPacketData==1)//校验
                  {
                        if(checksum==revChar)      //进行效验
                           revSuccess=1;           //效验成功
                        else
                           revSuccess=0;           //效验失败
                  }

          }
       }         

⌨️ 快捷键说明

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