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

📄 iso15693.cpp

📁 RFID 读卡演示程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
         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,45);
   nBytestoRead=0;
   ret=ReadCom(retval,nBytestoRead,500);
   





	
	
	return 1;
}
int _stdcall LockBlock(BYTE Sendval[],BYTE retval[],int flag,int nBlock,BYTE UID[],DWORD &nBytestoRead)
{
        //:02091400230386363301004005E00C9A
        //3A30323039313430303233303338363336333330313030343030354530304339410A
	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]=0x09;
   Sendval16[3]=0x14;
   Sendval16[4]=0x00;
   Sendval16[5]=flag;
   Sendval16[6]=nBlock;
   for(i=0;i<8;i++)
    Sendval16[7+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,2*i+7);
   nBytestoRead=0;
   ret=ReadCom(retval,nBytestoRead,500);


   return 1;
}

int _stdcall ReadMultiBlock(BYTE Sendval[],char retval[],BYTE UID[],int nStartBlock,int nLength,int flag,DWORD &nBytestoRead)
{
     //:020A18000423010286363301004005E09A15
     //3A3032304131383030303432333031303238363336333330313030343030354530394131350A
    	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]=0x0A;
   Sendval16[3]=0x18;
   Sendval16[4]=0x00;
   Sendval16[5]=0x04;

   Sendval16[6]=flag;
   Sendval16[7]=nStartBlock;
   Sendval16[8]=nLength;

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

   for(i=1;i<18;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,17,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,34);
   nBytestoRead=0;
   ret=ReadCom(retval,nBytestoRead,500);
	
	
	return 1;
}

int _stdcall WriteMultiBlock(BYTE Sendval[],BYTE retval[],BYTE UID[],BYTE Bval[],int nStartBlock,int nLength,int flag,DWORD &nBytestoRead)
{

   
	
	
//:010B2000042301010102030486363301004005E07484
// 3A303130423230303030343233303130313031303230333034383633363333303130
    	char Sendval16[100];
    //BYTE Sendval[][200];
	char CRCval[10];
    int ret;
    int i;
    int CRC16;
    int temp;

   m_count++;
   Sendval[0]=0x3A;
   Sendval16[1]=m_count&0xff;
   Sendval16[2]=0x0B;
   Sendval16[3]=0x18+0x08*nLength;
   Sendval16[4]=0x00;
   Sendval16[5]=0x04;
   
   Sendval16[6]=flag;
   Sendval16[7]=nStartBlock;
   Sendval16[8]=nLength;
   for(i=0;i<nLength;i++){
    Sendval16[9+i*4]=Bval[i*4];
    Sendval16[9+i*4+1]=Bval[i*4+1];
    Sendval16[9+i*4+2]=Bval[i*4+2];
    Sendval16[9+i*4+3]=Bval[i*4+3];
    }
    temp=8+i;
   for(i=0;i<8;i++)
    Sendval16[temp+i]=UID[i];

    temp+=i;
   for(i=1;i<temp;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,temp,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 WriteDSFID(BYTE Sendval[],BYTE retval[],int flag,int DSFID,BYTE UID[],DWORD &nBytestoRead)
{
        //:020C1200230086363301004005E0DF58
        //3A30323043313230303233303038363336333330313030343030354530444635380A
	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]=0x0C;
   Sendval16[3]=0x12;
   Sendval16[4]=0x00;
   Sendval16[5]=flag;
   Sendval16[6]=DSFID;
   for(i=0;i<8;i++)
    Sendval16[7+i]=UID[i];


   for(i=1;i<8+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 LockDSFID(BYTE Sendval[],BYTE retval[],int flag,BYTE UID[],DWORD &nBytestoRead)
{
  //:030D12002386363301004005E08848
  //3A3033304431323030323338363336333330313030343030354530383834380A
	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]=0x0D;
   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,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);
   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 GetSysInfo(BYTE Sendval[],BYTE retval[],int Flag,BYTE UID[],DWORD &nBytestoRead)
{
        //:040E12002386363301004005E025D7
        //3A3034304531323030323338363336333330313030343030354530323544370A
	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]=0x0E;
   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,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);
   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 GetMultiBlockSecirotuStatus(BYTE Sendval[],BYTE retval[],int flag,int nStartBlock,int nLength,BYTE UID[],DWORD &nBytestoRead)
{
        //:050F160023000086363301004005E0FF60
        //3A303530463136303032333030303038363336333330313030343030354530464636
	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]=0x0F;
   Sendval16[3]=0x16;
   Sendval16[4]=0x00;
   Sendval16[5]=flag;
   Sendval16[6]=nStartBlock;
   Sendval16[7]=nLength;
   for(i=0;i<8;i++)
    Sendval16[8+i]=UID[i];


   for(i=1;i<9+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,16,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 RFcrc_16( char offset, char *pointer, int length, int crc16_preset )
{
   	int CRC16, m;
   	char n;
	   
   	pointer += offset;
   	CRC16 = crc16_preset;
   
   	for (m=0 ; m < length ; m++)
   	{   
   		CRC16 ^= *pointer;
	   	pointer++;
	   
	   	for (n=0 ; n < 8 ; n++)
	   	{   if (CRC16 & 0x0001) 
	   			CRC16 = (CRC16 >> 1) ^ RFCRC16_POLYNOM ;
		   	else 
				CRC16 = (CRC16 >> 1);
	   	}
   	}
   	
	return (CRC16);
}







⌨️ 快捷键说明

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