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

📄 iso15693.cpp

📁 RFID 读卡演示程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#include "stdafx.h"
#include "ISO15693.h"
#include "ReadDLL.h"
unsigned char  m_count=255;  // 记录桢数据
//int _stdcall Inventory(BYTE Sendval[],BYTE REVval[],bool AFI,bool Singletag,bool ASK,DWORD &nBytestoRead )
int _stdcall Inventory(BYTE Sendval[],BYTE REVval[],bool AFI,int AFIval,int Flag,DWORD &nBytestoRead)
{
   //BYTE Sendval[20];
   //BYTE REVval[2000];
   char CRCval[10];
   int CRC16;
   int i;
   int ret;
   m_count++;
   Sendval[0]=0x3A;
     Sendval[1]=(m_count>>4) &0x0f;
   Sendval[2]=m_count &0x0f;


   CRCval[0]=m_count;

   Sendval[3]=0;
   Sendval[4]=0x01;// vinventory
   CRCval[1]=0x01;

   Sendval[5]=0;
   if(!AFI){
        Sendval[6]=0x02;
        CRCval[2]=0x02;
   }
   else
   {
        Sendval[6]=0x04;
        CRCval[2]=0x04;
        CRCval[5]=AFIval;//AFIval;
                Sendval[11]=0;
       Sendval[12]=AFIval;//AFIval;
   }
   Sendval[7]=0;
   Sendval[8]=0;
   CRCval[3]=0x00;
  /*
   if(Singletag==true)
   {  Sendval[9]=0x30+0x02;
      CRCval[4]=0x02;
   }
   else
   {  Sendval[9]=0x30;
      CRCval[4]=0x00;
   }    */
  /* if(ASK==true)
   {
    Sendval[10]=0x30+0x06;  //ASK
        CRCval[4]=CRCval[4]<<4+0x06;
   }
   else
   {
      Sendval[10]=0x30+0x07;  //FSK
	   CRCval[4]=(CRCval[4]<<4)+0x07;
   }  */
       Sendval[9]=(Flag>>4)&0x0f;
       Sendval[10]=Flag&0x0f;//Flag;
       CRCval[4]=Flag;//Flag;

   CRC16=RFcrc_16(0,CRCval,AFI?6:5,0xFFFF);
   CRCval[AFI?6:5]=CRC16&0xff;
   CRCval[AFI?7:6]=(CRC16>>8)&0xff;

   Sendval[AFI?15:13]=((CRCval[6]>>4)&0x0f);
   Sendval[AFI?16:14]=(CRCval[6]&0x0f);
   Sendval[AFI?13:11]=((CRCval[5]>>4)&0x0f);
   Sendval[AFI?14:12]=(CRCval[5]&0x0f);
   for(i=1;i<(AFI?17:15);i++)
   {
      if (Sendval[i]>9)
        Sendval[i]=Sendval[i]+0x37;
      else
        Sendval[i]=Sendval[i]+0x30;
   }
   Sendval[AFI?17:15]=0x0A;
   Sendval[AFI?18:16]=0x0D;

/*  */
   ret=WriteCom(Sendval,AFI?19:17);
   nBytestoRead=0;
   ret=ReadCom(REVval,nBytestoRead,500);
//   Retval=&REVval[0];300
	return 1;



}
int _stdcall StayQuite(BYTE Sendval[],BYTE retval[],int Flag,BYTE UID[],DWORD &nBytestoRead)
{
 // :020212002339B23201004005E0C9BF
// 3A3032303231323030323333394232333230313030343030354530433942460A
  	char Sendval16[100];
    //BYTE Sendval[200];
	char CRCval[10];
    int ret;
    int i;
    int CRC16;

   m_count++;
   Sendval[0]=0x3A;
   Sendval16[1]=m_count&0xff;
   Sendval16[2]=0x02;
   Sendval16[3]=0x12;
   Sendval16[4]=0x00;
   Sendval16[5]=Flag;
   for(i=0;i<8;i++)
    Sendval16[6+i]=UID[i];
        for(i=1;i<14;i++)
   {
        if((0x0F&(Sendval16[i]>>4))>9)
           Sendval[2*i-1]=(0x0F&(Sendval16[i]>>4))+0x37;
        else
           Sendval[2*i-1]=(0x0F&(Sendval16[i]>>4))+0x30;

        if((0x0F&(Sendval16[i]))>9)
           Sendval[2*i]=(0x0F&(Sendval16[i]))+0x37;
        else
           Sendval[2*i]=(0x0F&(Sendval16[i]))+0x30;
   }


   CRC16=RFcrc_16(1,Sendval16,14,0xFFFF);
   CRCval[5]=CRC16&0xff;
   CRCval[6]=(CRC16>>8)&0xff;
   Sendval[2*i+1]=((CRCval[6]>>4)&0x0f);
   Sendval[2*i+2]=(CRCval[6]&0x0f);
   Sendval[2*i-1]=((CRCval[5]>>4)&0x0f);
   Sendval[2*i]=(CRCval[5]&0x0f);
   //Sendval16[14]=CRC16&0xff;
   //Sendval16[15]=(CRC16>>8)&0xff;
    if(Sendval[2*i-1]>9){
        Sendval[2*i-1]=Sendval[2*i-1]+0x37;
    }else {
         Sendval[2*i-1]=Sendval[2*i-1]+0x30;
    }
        if(Sendval[2*i]>9){
        Sendval[2*i]=Sendval[2*i]+0x37;
    }else {
         Sendval[2*i]=Sendval[2*i]+0x30;
    }
        if(Sendval[2*i+1]>9){
        Sendval[2*i+1]=Sendval[2*i+1]+0x37;
    }else {
         Sendval[2*i+1]=Sendval[2*i+1]+0x30;
    }
        if(Sendval[2*i+2]>9){
        Sendval[2*i+2]=Sendval[2*i+2]+0x37;
    }else {
         Sendval[2*i+2]=Sendval[2*i+2]+0x30;
    }


   Sendval[2*i+3]=0x0A;
   Sendval[2*i+4]=0x0D;


   ret=WriteCom(Sendval,31);
   nBytestoRead=0;
   ret=ReadCom(retval,nBytestoRead,500);

     return 1;

}
 int _stdcall Select(BYTE Sendval[],BYTE retval[],BYTE UID[],int Flag,DWORD &nBytestoRead)
{
        //:010312002786363301004005E01671
        //3A3031303331323030323738363336333330313030343030354530313637310A
	char Sendval16[100];
    //BYTE Sendval[][200];
	char CRCval[10];
    int ret;
    int i;
    int CRC16;

   m_count++;
   Sendval[0]=0x3A;
   Sendval16[1]=m_count&0xff;
   Sendval16[2]=0x03;
   Sendval16[3]=0x12;
   Sendval16[4]=0x00;
   Sendval16[5]=Flag;
   for(i=0;i<8;i++)
    Sendval16[6+i]=UID[i];

   
   for(i=1;i<14;i++)
   {
        if((0x0F&(Sendval16[i]>>4))>9)
           Sendval[2*i-1]=(0x0F&(Sendval16[i]>>4))+0x37;
        else
           Sendval[2*i-1]=(0x0F&(Sendval16[i]>>4))+0x30; 

        if((0x0F&(Sendval16[i]))>9)
           Sendval[2*i]=(0x0F&(Sendval16[i]))+0x37;
        else
           Sendval[2*i]=(0x0F&(Sendval16[i]))+0x30;
   }


   CRC16=RFcrc_16(1,Sendval16,14,0xFFFF);
   CRCval[5]=CRC16&0xff;
   CRCval[6]=(CRC16>>8)&0xff;
   Sendval[2*i+1]=((CRCval[6]>>4)&0x0f);
   Sendval[2*i+2]=(CRCval[6]&0x0f);
   Sendval[2*i-1]=((CRCval[5]>>4)&0x0f);
   Sendval[2*i]=(CRCval[5]&0x0f);
       if(Sendval[2*i-1]>9){
        Sendval[2*i-1]=Sendval[2*i-1]+0x37;
    }else {
         Sendval[2*i-1]=Sendval[2*i-1]+0x30;
    }
        if(Sendval[2*i]>9){
        Sendval[2*i]=Sendval[2*i]+0x37;
    }else {
         Sendval[2*i]=Sendval[2*i]+0x30;
    }
        if(Sendval[2*i+1]>9){
        Sendval[2*i+1]=Sendval[2*i+1]+0x37;
    }else {
         Sendval[2*i+1]=Sendval[2*i+1]+0x30;
    }
        if(Sendval[2*i+2]>9){
        Sendval[2*i+2]=Sendval[2*i+2]+0x37;
    }else {
         Sendval[2*i+2]=Sendval[2*i+2]+0x30;
    }
   Sendval[2*i+3]=0x0A;
   Sendval[2*i+4]=0x0D;


   ret=WriteCom(Sendval,31);
   nBytestoRead=0;
   ret=ReadCom(retval,nBytestoRead,500);
   
	
   return 1;
}

int _stdcall ResetToReady(BYTE Sendval[],BYTE retval[],BYTE UID[],int Flag,DWORD &nBytestoRead)
{
        //:020412002786363301004005E079FD
        //3A3032303431323030323738363336333330313030343030354530373946440A
	char Sendval16[100];
    //BYTE Sendval[][200];
	char CRCval[10];
    int ret;
    int i;
    int CRC16;

   m_count++;
   Sendval[0]=0x3A;
   Sendval16[1]=m_count&0xff;
   Sendval16[2]=0x04;
   Sendval16[3]=0x12;
   Sendval16[4]=0x00;
   Sendval16[5]=Flag;

   for(i=0;i<8;i++)
    Sendval16[6+i]=UID[i];


   for(i=1;i<14;i++)
   {
        if((0x0F&(Sendval16[i]>>4))>9)
           Sendval[2*i-1]=(0x0F&(Sendval16[i]>>4))+0x37;
        else
           Sendval[2*i-1]=(0x0F&(Sendval16[i]>>4))+0x30; 

        if((0x0F&(Sendval16[i]))>9)
           Sendval[2*i]=(0x0F&(Sendval16[i]))+0x37;
        else
           Sendval[2*i]=(0x0F&(Sendval16[i]))+0x30; 
   }
  

   CRC16=RFcrc_16(1,Sendval16,13,0xFFFF);
   CRCval[5]=CRC16&0xff;
   CRCval[6]=(CRC16>>8)&0xff;
   Sendval[2*i+1]=((CRCval[6]>>4)&0x0f);
   Sendval[2*i+2]=(CRCval[6]&0x0f);
   Sendval[2*i-1]=((CRCval[5]>>4)&0x0f);
   Sendval[2*i]=(CRCval[5]&0x0f);
   Sendval[2*i+3]=0x0A;
   Sendval[2*i+4]=0x0D;

          if(Sendval[2*i-1]>9){
        Sendval[2*i-1]=Sendval[2*i-1]+0x37;
    }else {
         Sendval[2*i-1]=Sendval[2*i-1]+0x30;
    }
        if(Sendval[2*i]>9){
        Sendval[2*i]=Sendval[2*i]+0x37;
    }else {
         Sendval[2*i]=Sendval[2*i]+0x30;
    }
        if(Sendval[2*i+1]>9){
        Sendval[2*i+1]=Sendval[2*i+1]+0x37;
    }else {
         Sendval[2*i+1]=Sendval[2*i+1]+0x30;
    }
        if(Sendval[2*i+2]>9){
        Sendval[2*i+2]=Sendval[2*i+2]+0x37;
    }else {
         Sendval[2*i+2]=Sendval[2*i+2]+0x30;
    }
   ret=WriteCom(Sendval,2*i+5);
   nBytestoRead=0;
   ret=ReadCom(retval,nBytestoRead,500);


   return 1;
}

 int _stdcall WriteAFI(BYTE Sendval[],BYTE retval[],int AFIval,int Flag,BYTE UID[],DWORD &nBytestoRead)
{
//:030514002786363301004005E0003192
//3A30333035313430303237383633363333303130303430303545303030333139320A
	char Sendval16[100];
    //BYTE Sendval[][200];
	char CRCval[10];
    int ret;
    int i;
    int CRC16;

   m_count++;
   Sendval[0]=0x3A;
   Sendval16[1]=m_count&0xff;
   Sendval16[2]=0x05;
   Sendval16[3]=0x14;
   Sendval16[4]=0x00;
   Sendval16[5]=Flag;


   for(i=0;i<8;i++)
    Sendval16[6+i]=UID[i];
    Sendval16[i+6]=AFIval;

   for(i=1;i<7+8;i++)
   {
        if((0x0F&(Sendval16[i]>>4))>9)
           Sendval[2*i-1]=(0x0F&(Sendval16[i]>>4))+0x37;
        else
           Sendval[2*i-1]=(0x0F&(Sendval16[i]>>4))+0x30;

        if((0x0F&(Sendval16[i]))>9)
           Sendval[2*i]=(0x0F&(Sendval16[i]))+0x37;
        else
           Sendval[2*i]=(0x0F&(Sendval16[i]))+0x30; 
   }


   CRC16=RFcrc_16(1,Sendval16,15,0xFFFF);
   CRCval[5]=CRC16&0xff;
   CRCval[6]=(CRC16>>8)&0xff;
   Sendval[2*i+1]=((CRCval[6]>>4)&0x0f);
   Sendval[2*i+2]=(CRCval[6]&0x0f);
   Sendval[2*i-1]=((CRCval[5]>>4)&0x0f);
   Sendval[2*i]=(CRCval[5]&0x0f);
   Sendval[2*i+3]=0x0A;
   Sendval[2*i+4]=0x0D;
             if(Sendval[2*i-1]>9){
        Sendval[2*i-1]=Sendval[2*i-1]+0x37;
    }else {
         Sendval[2*i-1]=Sendval[2*i-1]+0x30;
    }
        if(Sendval[2*i]>9){
        Sendval[2*i]=Sendval[2*i]+0x37;
    }else {
         Sendval[2*i]=Sendval[2*i]+0x30;
    }
        if(Sendval[2*i+1]>9){
        Sendval[2*i+1]=Sendval[2*i+1]+0x37;
    }else {
         Sendval[2*i+1]=Sendval[2*i+1]+0x30;
    }
        if(Sendval[2*i+2]>9){
        Sendval[2*i+2]=Sendval[2*i+2]+0x37;
    }else {
         Sendval[2*i+2]=Sendval[2*i+2]+0x30;
    }

   ret=WriteCom(Sendval,2*i+7);
   nBytestoRead=0;
   ret=ReadCom(retval,nBytestoRead,500);


   return 1;
}


int _stdcall LockAFI(BYTE Sendval[],BYTE retval[],int Flag,BYTE UID[],DWORD &nBytestoRead)

{
        //:010612002786363301004005E035F1
        //3A3031303631323030323738363336333330313030343030354530333546310A
	char Sendval16[100];
    //BYTE Sendval[][200];
	char CRCval[10];
    int ret;
    int i;
    int CRC16;

   m_count++;
   Sendval[0]=0x3A;
   Sendval16[1]=m_count&0xff;
   Sendval16[2]=0x06;
   Sendval16[3]=0x12;
   Sendval16[4]=0x00;
   Sendval16[5]=Flag;
   for(i=0;i<8;i++)
    Sendval16[6+i]=UID[i];


   for(i=1;i<7+7;i++)
   {
        if((0x0F&(Sendval16[i]>>4))>9)
           Sendval[2*i-1]=(0x0F&(Sendval16[i]>>4))+0x37;
        else
           Sendval[2*i-1]=(0x0F&(Sendval16[i]>>4))+0x30;

        if((0x0F&(Sendval16[i]))>9)
           Sendval[2*i]=(0x0F&(Sendval16[i]))+0x37;
        else
           Sendval[2*i]=(0x0F&(Sendval16[i]))+0x30;
   }


   CRC16=RFcrc_16(1,Sendval16,15,0xFFFF);
   CRCval[5]=CRC16&0xff;
   CRCval[6]=(CRC16>>8)&0xff;
   Sendval[2*i+1]=((CRCval[6]>>4)&0x0f);
   Sendval[2*i+2]=(CRCval[6]&0x0f);
   Sendval[2*i-1]=((CRCval[5]>>4)&0x0f);
   Sendval[2*i]=(CRCval[5]&0x0f);
   Sendval[2*i+3]=0x0A;
   Sendval[2*i+4]=0x0D;
             if(Sendval[2*i-1]>9){
        Sendval[2*i-1]=Sendval[2*i-1]+0x37;
    }else {
         Sendval[2*i-1]=Sendval[2*i-1]+0x30;
    }
        if(Sendval[2*i]>9){
        Sendval[2*i]=Sendval[2*i]+0x37;
    }else {
         Sendval[2*i]=Sendval[2*i]+0x30;
    }
        if(Sendval[2*i+1]>9){
        Sendval[2*i+1]=Sendval[2*i+1]+0x37;
    }else {
         Sendval[2*i+1]=Sendval[2*i+1]+0x30;
    }
        if(Sendval[2*i+2]>9){
        Sendval[2*i+2]=Sendval[2*i+2]+0x37;
    }else {
         Sendval[2*i+2]=Sendval[2*i+2]+0x30;
    }

   ret=WriteCom(Sendval,2*i+7);
   nBytestoRead=0;
   ret=ReadCom(retval,nBytestoRead,500);


   return 1;
}
int _stdcall ReadSingleBlock(BYTE Sendval[],BYTE retval[],int nBlock,int Flag,BYTE UID[],DWORD &nBytestoRead)
{
	char Sendval16[100];
    //BYTE Sendval[][200];
	char CRCval[10];
    int ret;
    int i;
    int CRC16;

   m_count++;
   Sendval[0]=0x3A;
   Sendval16[1]=m_count&0xff;
   Sendval16[2]=0x07;
   Sendval16[3]=0x16;
   Sendval16[4]=0x00;
   Sendval16[5]=0x04;

   Sendval16[6]=Flag;
   Sendval16[7]=nBlock;

   for(i=0;i<8;i++)
    Sendval16[8+i]=UID[i];


   for(i=1;i<16;i++)
   {
        if((0x0F&(Sendval16[i]>>4))>9)
           Sendval[2*i-1]=(0x0F&(Sendval16[i]>>4))+0x37;
        else
           Sendval[2*i-1]=(0x0F&(Sendval16[i]>>4))+0x30;

        if((0x0F&(Sendval16[i]))>9)
           Sendval[2*i]=(0x0F&(Sendval16[i]))+0x37;
        else
           Sendval[2*i]=(0x0F&(Sendval16[i]))+0x30;
   }


   CRC16=RFcrc_16(1,Sendval16,15,0xFFFF);
   CRCval[5]=CRC16&0xff;
   CRCval[6]=(CRC16>>8)&0xff;
   Sendval[2*i+1]=((CRCval[6]>>4)&0x0f);
   Sendval[2*i+2]=(CRCval[6]&0x0f);
   Sendval[2*i-1]=((CRCval[5]>>4)&0x0f);
   Sendval[2*i]=(CRCval[5]&0x0f);
   Sendval[2*i+3]=0x0A;
   Sendval[2*i+4]=0x0D;
             if(Sendval[2*i-1]>9){
        Sendval[2*i-1]=Sendval[2*i-1]+0x37;
    }else {
         Sendval[2*i-1]=Sendval[2*i-1]+0x30;
    }
        if(Sendval[2*i]>9){
        Sendval[2*i]=Sendval[2*i]+0x37;
    }else {
         Sendval[2*i]=Sendval[2*i]+0x30;
    }
        if(Sendval[2*i+1]>9){
        Sendval[2*i+1]=Sendval[2*i+1]+0x37;
    }else {
         Sendval[2*i+1]=Sendval[2*i+1]+0x30;
    }
        if(Sendval[2*i+2]>9){
        Sendval[2*i+2]=Sendval[2*i+2]+0x37;
    }else {
         Sendval[2*i+2]=Sendval[2*i+2]+0x30;
    }

   ret=WriteCom(Sendval,37);
   nBytestoRead=0;
   ret=ReadCom(retval,nBytestoRead,500);


   return 1;
}

// write block
int _stdcall WriteSingleBlock(BYTE Sendval[],BYTE retval[],int nBlock,BYTE Bval[],BYTE UID[],int flag,DWORD &nBytestoRead)
{
   	char Sendval16[100];
    //BYTE Sendval[][200];
	char CRCval[10];
    int ret;
    int i;
    int CRC16;

   m_count++;
   Sendval[0]=0x3A;
   Sendval16[1]=m_count&0xff;
   Sendval16[2]=0x08;   // write block
   Sendval16[3]=0x1E;   // data length ,4 bit/ 1 block
   Sendval16[4]=0x00;   //
   Sendval16[5]=0x04;
   
   Sendval16[6]=flag;
   Sendval16[7]=nBlock;
   
   Sendval16[8]=Bval[0];   //
   Sendval16[9]=Bval[1];

   Sendval16[10]=Bval[2];
   Sendval16[11]=Bval[3];

   


   for(i=0;i<8;i++)
    Sendval16[12+i]=UID[i];


   for(i=1;i<20;i++)
   {
        if((0x0F&(Sendval16[i]>>4))>9)
           Sendval[2*i-1]=(0x0F&(Sendval16[i]>>4))+0x37;
        else
           Sendval[2*i-1]=(0x0F&(Sendval16[i]>>4))+0x30; 

        if((0x0F&(Sendval16[i]))>9)
           Sendval[2*i]=(0x0F&(Sendval16[i]))+0x37;
        else
           Sendval[2*i]=(0x0F&(Sendval16[i]))+0x30; 
   }


   CRC16=RFcrc_16(1,Sendval16,19,0xFFFF);
   CRCval[5]=CRC16&0xff;
   CRCval[6]=(CRC16>>8)&0xff;
   Sendval[2*i+1]=((CRCval[6]>>4)&0x0f);
   Sendval[2*i+2]=(CRCval[6]&0x0f);
   Sendval[2*i-1]=((CRCval[5]>>4)&0x0f);
   Sendval[2*i]=(CRCval[5]&0x0f);
   Sendval[2*i+3]=0x0A;
   Sendval[2*i+4]=0x0D;
             if(Sendval[2*i-1]>9){
        Sendval[2*i-1]=Sendval[2*i-1]+0x37;
    }else {

⌨️ 快捷键说明

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