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

📄 unit1.cpp

📁 RFID 读卡演示程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
       }
  ShowOperateInfo((char*)retval);
     break;
           case 4:
             if(Edit_Flagval->Text.Length()==1){
     Edit_Flagval->Text="0"+ Edit_Flagval->Text;
  }
      Str_F_val=("0x"+Edit_Flagval->Text).c_str();
    flag   =   strtol(Str_F_val,   &temp,   16);
  ResetToReady(Sendval,retval,toUniteStr(temp,CurrUID,2).c_str(),flag,nBytesRead);
    ShowOperateInfo((char*)Sendval);
temp2=(char*)retval;
           if(temp2==""){
       ShowOperateInfo("No Reply");
          break;
       }
        ClearTagDetailInfo();
              if(temp2.SubString(temp2.Length()-7,2)=="00"){
           ShowTagDetail("Reset Success!");
       }else{
       ShowTagDetail("Reset Faild!");
       }
  ShowOperateInfo((char*)retval);
     break;
                case 5:
                  if(Edit_Flagval->Text.Length()==1){
     Edit_Flagval->Text="0"+ Edit_Flagval->Text;
  }
    if(Edit_AFIval->Text.Length()==1){
     Edit_AFIval->Text="0"+ Edit_AFIval->Text;
  }
      Str_F_val=("0x"+Edit_Flagval->Text).c_str();
    flag   =   strtol(Str_F_val,   &temp,   16);
          Str_F_val=("0x"+Edit_AFIval->Text).c_str();
    AFIval   =   strtol(Str_F_val,   &temp,   16);
            //  Str_F_val=("0x"+EditPBAddrval->Text).c_str();
    //nblock   =   strtol(Str_F_val,   &temp,   16);
  WriteAFI(Sendval,retval,AFIval,flag,toUniteStr(temp,CurrUID,2).c_str(),nBytesRead);
    ShowOperateInfo((char*)Sendval);
temp2=(char*)retval;
           if(temp2==""){
       ShowOperateInfo("No Reply");
          break;
       }
         ClearTagDetailInfo();
              if(temp2.SubString(temp2.Length()-7,2)=="00"){
           ShowTagDetail("Write AFI Success!");
       }else{
       ShowTagDetail("Write AFI Faild!");
       }
  ShowOperateInfo((char*)retval);
     break;
                case 6:
                  if(Edit_Flagval->Text.Length()==1){
     Edit_Flagval->Text="0"+ Edit_Flagval->Text;
  }
      Str_F_val=("0x"+Edit_Flagval->Text).c_str();
    flag   =   strtol(Str_F_val,   &temp,   16);
  LockAFI(Sendval,retval,flag,toUniteStr(temp,CurrUID,2).c_str(),nBytesRead);
    ShowOperateInfo((char*)Sendval);
temp2=(char*)retval;
           if(temp2==""){
       ShowOperateInfo("No Reply");
          break;
       }
         ClearTagDetailInfo();
              if(temp2.SubString(temp2.Length()-7,2)=="00"){
           ShowTagDetail("Lock AFI Success!");
       }else{
       ShowTagDetail("Lock AFI Faild!");
       }
  ShowOperateInfo((char*)retval);
     break;
                case 7:
     ClearTagDetailInfo();
                  if(Edit_Flagval->Text.Length()==1){
     Edit_Flagval->Text="0"+ Edit_Flagval->Text;
  }
                    if(EditPBAddrval->Text.Length()==1){
     EditPBAddrval->Text="0"+ EditPBAddrval->Text;
  }
     Str_F_val=("0x"+Edit_Flagval->Text).c_str();
    flag   =   strtol(Str_F_val,   &temp,   16);
          Str_F_val=("0x"+EditPBAddrval->Text).c_str();
    nblock   =   strtol(Str_F_val,   &temp,   16);

    //int _stdcall ReadSingleBlock(BYTE Sendval[],BYTE retval[],int nBlock,BYTE UID[],DWORD &nBytestoRead)
  BYTE Curr[16];
  toUniteByte(CurrUID.c_str(),Curr);
  ReadSingleBlock(Sendval,retval,nblock,flag,Curr,nBytesRead);
    for(int i=0;i<8;i+=2){
        temp1+=(char)retval[11+i];
        temp1+=(char)retval[11+i+1];
        temp1+='\b';
    }
    ShowOperateInfo((char*)Sendval);
temp2=(char*)retval;
           if(temp2==""){
       ShowOperateInfo("No Reply");
          break;
       }
  ShowOperateInfo((char*)retval);
    			if(temp2.Length()<24){
				ShowTagDetail("Read Single Block Error!");
				break;
			}
  ShowTagDetail(temp1);
     break;
                case 8:
                 ClearTagDetailInfo();
                  if(Edit_Flagval->Text.Length()==1){
     Edit_Flagval->Text="0"+ Edit_Flagval->Text;
  }

                    if(EditPBAddrval->Text.Length()==1){
     EditPBAddrval->Text="0"+ EditPBAddrval->Text;
  }
                      if(Edit_Data1->Text.Length()==1){
     Edit_Data1->Text="0"+ Edit_Data1->Text;
  }
                       if(Edit_Data2->Text.Length()==1){
     Edit_Data2->Text="0"+ Edit_Data2->Text;
  }
                       if(Edit_Data3->Text.Length()==1){
     Edit_Data3->Text="0"+ Edit_Data3->Text;
  }
                       if(Edit_Data4->Text.Length()==1){
     Edit_Data4->Text="0"+ Edit_Data4->Text;
  }
       Str_F_val=("0x"+Edit_Flagval->Text).c_str();
    flag   =   strtol(Str_F_val,   &temp,   16);
              Str_F_val=("0x"+EditPBAddrval->Text).c_str();
    nblock   =   strtol(Str_F_val,   &temp,   16);
   //Edit_Data3->Text
   Bval[0]=strtol(("0x"+Edit_Data1->Text).c_str(),   &temp,   16);
   Bval[1]=strtol(("0x"+Edit_Data2->Text).c_str(),   &temp,   16);
   Bval[2]=strtol(("0x"+Edit_Data3->Text).c_str(),   &temp,   16);
   Bval[3]=strtol(("0x"+Edit_Data4->Text).c_str(),   &temp,   16);
   //IntToHex(1,1);
   //HexToInt(1);
  WriteSingleBlock(Sendval,retval,nblock,Bval,toUniteStr(temp,CurrUID,2).c_str(),flag,nBytesRead);
    ShowOperateInfo((char*)Sendval);
temp2=(char*)retval;
           if(temp2==""){
       ShowOperateInfo("No Reply");
          break;
       }
  ShowOperateInfo((char*)retval);
  //查询是否写入成功
      BYTE send[200];//发送命令字符串
      BYTE ret[2000];//返回值

      ReadSingleBlock(send,ret,nblock,35,toUniteStr(temp,CurrUID,2).c_str(),nBytesRead);
      while(++count<=3){
            temp3=(char*)ret;
            if(temp3.Length()==27||temp3.Length()==25){
            temp3="";
             break;
            }
            ReadSingleBlock(send,ret,nblock,35,toUniteStr(temp,CurrUID,2).c_str(),nBytesRead);

      }
      //if(temp3.Length()!=27){ShowOperateInfo(temp3.Length());}
      for(int i=0;i<8;i+=2){
        temp1+=(char)ret[11+i];
        temp1+=(char)ret[11+i+1];
        temp3+=IntToHex(Bval[i/2],2);
      }
    if(temp1==temp3){
    ShowTagDetail("write success");
    } else{
   // ShowOperateInfo(temp1);
    //ShowOperateInfo(temp3);
    //ShowOperateInfo(temp1==temp3?"true":"false");
      ShowTagDetail("write error");
    }
     break;
                case 9:
                   if(Edit_Flagval->Text.Length()==1){
     Edit_Flagval->Text="0"+ Edit_Flagval->Text;
  }
                   if(EditPBAddrval->Text.Length()==1){
     EditPBAddrval->Text="0"+ EditPBAddrval->Text;
  }
      Str_F_val=("0x"+Edit_Flagval->Text).c_str();
    flag   =   strtol(Str_F_val,   &temp,   16);
                  Str_F_val=("0x"+EditPBAddrval->Text).c_str();
    nblock   =   strtol(Str_F_val,   &temp,   16);
  LockBlock(Sendval,retval,flag,nblock,toUniteStr(temp,CurrUID,2).c_str(),nBytesRead);
    ShowOperateInfo((char*)Sendval);
temp2=(char*)retval;
           if(temp2==""){
       ShowOperateInfo("No Reply");
          break;
       }
              ClearTagDetailInfo();
       if(temp2.SubString(temp2.Length()-7,2)=="00"){
           ShowTagDetail("Lock Block Success!");
       }else{
       ShowTagDetail("Lock Block Faild!");
       }
  ShowOperateInfo((char*)retval);
     break;
                case 10:
                   if(Edit_Flagval->Text.Length()==1){
     Edit_Flagval->Text="0"+ Edit_Flagval->Text;
  }
                   if(Edit_1stBlkAddr->Text.Length()==1){
     Edit_1stBlkAddr->Text="0"+ Edit_1stBlkAddr->Text;
  }
                     if(Edit_NoOfBlk->Text.Length()==1){
     Edit_NoOfBlk->Text="0"+ Edit_NoOfBlk->Text;
  }
                      if(Edit_NoOfBlk->Text.Length()==1){
     Edit_NoOfBlk->Text="0"+ Edit_NoOfBlk->Text;
  }
       ClearTagDetailInfo();
            Str_F_val=("0x"+Edit_Flagval->Text).c_str();
    flag   =   strtol(Str_F_val,   &temp,   16);
                              Str_F_val=("0x"+Edit_1stBlkAddr->Text).c_str();
    nStartBlock   =   strtol(Str_F_val,   &temp,   16);
                          Str_F_val=("0x"+Edit_NoOfBlk->Text).c_str();
    nLength   =   strtol(Str_F_val,   &temp,   16);
  ReadMultiBlock(Sendval,retval,toUniteStr(temp,CurrUID,2).c_str(),nStartBlock,nLength,flag,nBytesRead);
    ShowOperateInfo((char*)Sendval);
temp2=(char*)retval;
           if(temp2==""){
       ShowOperateInfo("No Reply");
          break;
       }

  ShowOperateInfo((char*)retval);
  			if(temp2.Length()<24){
				ShowTagDetail("Read Multi Block Error!");
				break;
			}
      for(int i=0;i<8*(1+Edit_NoOfBlk->Text.ToInt());i+=2){
        temp1+=(char)retval[11+i];
        temp1+=(char)retval[11+i+1];
        temp1+='\b';
    }
    for(int i=0;i<temp1.Length();i+=12){
        ShowTagDetail(temp1.SubString(i,12));
    }
     break;
                case 11:

       Application->CreateForm(__classid(TForm3), &Form3);
       Form3->Tag_val->Text=CurrUID;
       Form3->FlagVal=Edit_Flagval->Text;

     break;
     case 12:
      if(Edit_Flagval->Text.Length()==1){
     Edit_Flagval->Text="0"+ Edit_Flagval->Text;
  }
    if(Edit_DISFIDval->Text.Length()==1){
     Edit_DISFIDval->Text="0"+ Edit_DISFIDval->Text;
  }
      Str_F_val=("0x"+Edit_Flagval->Text).c_str();
    flag   =   strtol(Str_F_val,   &temp,   16);
          Str_F_val=("0x"+Edit_DISFIDval->Text).c_str();
    DSIFID   =   strtol(Str_F_val,   &temp,   16);
            //  Str_F_val=("0x"+EditPBAddrval->Text).c_str();
    //nblock   =   strtol(Str_F_val,   &temp,   16);
  WriteDSFID(Sendval,retval,flag,DSIFID,toUniteStr(temp,CurrUID,2).c_str(),nBytesRead);
    ShowOperateInfo((char*)Sendval);
temp2=(char*)retval;
           if(temp2==""){
       ShowOperateInfo("No Reply");
          break;
       }
              ClearTagDetailInfo();
       if(temp2.SubString(temp2.Length()-7,2)=="00"){
           ShowTagDetail("Write DSFID Success!");
       }else{
       ShowTagDetail("Write DSFID Faild!");
       }

  ShowOperateInfo((char*)retval);
     break;
                case 13:
      //int _stdcall LockDSFID(BYTE Sendval[],BYTE retval[],int flag,BYTE UID[],DWORD &nBytestoRead)
      Str_F_val=("0x"+Edit_Flagval->Text).c_str();
    flag   =   strtol(Str_F_val,   &temp,   16);
  LockDSFID(Sendval,retval,flag,toUniteStr(temp,CurrUID,2).c_str(),nBytesRead);
    ShowOperateInfo((char*)Sendval);
temp2=(char*)retval;
           if(temp2==""){
       ShowOperateInfo("No Reply");
          break;
       }
              ClearTagDetailInfo();
       if(temp2.SubString(temp2.Length()-7,2)=="00"){
           ShowTagDetail("Lock DSFID Success!");
       }else{
       ShowTagDetail("Lock DSFID Faild!");
       }
  ShowOperateInfo((char*)retval);
     break;
                case 14:
                 ClearTagDetailInfo();
      Str_F_val=("0x"+Edit_Flagval->Text).c_str();
    flag   =   strtol(Str_F_val,   &temp,   16);
   // int _stdcall GetSysInfo(BYTE Sendval[],BYTE retval[],int Flag,BYTE UID[],DWORD &nBytestoRead)
  GetSysInfo(Sendval,retval,flag,toUniteStr(temp,CurrUID,2).c_str(),nBytesRead);
    ShowOperateInfo((char*)Sendval);
temp2=(char*)retval;
           if(temp2==""){
       ShowOperateInfo("No Reply");
          break;
       }
  ShowOperateInfo((char*)retval);
  if(retval[44]!='\n'){
        ShowTagDetail("error");
        break;
  }
        for(int i=29;i<29+10;i+=2){
        temp1+=(char)retval[i];
        temp1+=(char)retval[i+1];
        temp1+='\b';
    }
        ShowTagDetail("DSFID:"+temp1.SubString(0,3)+" AFI:"+temp1.SubString(3,3));
        ShowTagDetail("VICC Memory Size:"+temp1.SubString(6,6));
        ShowTagDetail("IC Refrence:"+temp1.SubString(12,3));
     break;
                case 15:
                ClearTagDetailInfo();
      Str_F_val=("0x"+Edit_Flagval->Text).c_str();
    flag   =   strtol(Str_F_val,   &temp,   16);
    Str_F_val=("0x"+Edit_1stBlkAddr15->Text).c_str();
    nStartBlock   =   strtol(Str_F_val,   &temp,   16);
                          Str_F_val=("0x"+Edit_BlkCnt->Text).c_str();
    nLength   =   strtol(Str_F_val,   &temp,   16);

  //int _stdcall GetMultiBlockSecirotuStatus(BYTE Sendval[],BYTE retval[],int flag,int nStartBlock,int nLength,BYTE UID[],DWORD &nBytestoRead)
  GetMultiBlockSecirotuStatus(Sendval,retval,flag,nStartBlock,nLength,toUniteStr(temp,CurrUID,2).c_str(),nBytesRead);
        for(int i=0;i<2*(2+nLength);i+=2){
        temp1+=(char)retval[7+i];
        temp1+=(char)retval[7+i+1];
        temp1+='\b';
    }
    ShowOperateInfo((char*)Sendval);
temp2=(char*)retval;
           if(temp2==""){
       ShowOperateInfo("No Reply");
          break;
       }
  ShowOperateInfo((char*)retval);
  ShowTagDetail(temp1);
     break;

  }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
     run();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)
{
       Enable_Run=true;
}
//---------------------------------------------------------------------------
int __fastcall TForm1::HasTag(){
      for(int i=0;i<UIDCount;i++){
        if(UIDArray[i]=='\0'){
                return -1;
        }
        if(UIDArray[i]==CurrUID){
                  return i;
        }
      }
      return -1;
}
void _fastcall TForm1::SaveMessage(){
        Memo1->Lines->SaveToFile("log"+FormatDateTime("yyyyMMddhhmm",Now())+".txt");
}
//---------------------------------------------------------------------------


void __fastcall TForm1::ClearTagInfo1Click(TObject *Sender)
{
   ClearTagInfo();     
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ClearTagDetail1Click(TObject *Sender)
{
     ClearTagDetailInfo();   
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ClearMessage1Click(TObject *Sender)
{
      ClearOperateInfo();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::about1Click(TObject *Sender)
{
     USEFORM("version.cpp", Form2);

  try
        {

                 //Application->Initialize();
                 //Application->CreateForm(__classid(TForm1), &Form1);
                 Application->CreateForm(__classid(TForm2), &Form2);
                 //Application->MainForm
                 //Application->Run();
                 //Form2->Visible=true;


        }
        catch (Exception &exception)
        {
                 Application->ShowException(&exception);
        }
        catch (...)
        {
                 try
                 {
                         throw Exception("");
                 }
                 catch (Exception &exception)
                 {
                      //   Application->ShowException(&exception);
                 }
        }

     //Form2->
     //Form2->Visible=true;

}
//---------------------------------------------------------------------------

void __fastcall TForm1::SavetoLogFile1Click(TObject *Sender)
{
            SaveMessage();
ShowOperateInfo("save meesage to file success .");   
}
//---------------------------------------------------------------------------


void __fastcall TForm1::Button4Click(TObject *Sender)
{
Enable_Run=false;        
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
       if(Enable_Run&&Button1->Caption=="close"){
        run();
        //Sleep(1000);
       }
}
//---------------------------------------------------------------------------


⌨️ 快捷键说明

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