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

📄 jiso15693.~cpp

📁 RFID 读卡演示程序
💻 ~CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#include "JISO15693.h"
#include "ReadDLL.h"
#include "ISO15693.h"
#include <strutils.hpp>
//#include <jni.h>


#pragma argsused

jstring stringToJstring( JNIEnv* env, const char* pat )
{
 //定义java String类 strClass
 jclass strClass = (env)->FindClass("Ljava/lang/String;");
 //获取java String类方法String(byte[],String)的构造器,用于将本地byte[]数组转换为一个新String
 jmethodID ctorID = (env)->GetMethodID(strClass, "<init>", "([BLjava/lang/String;)V");
 jbyteArray bytes = (env)->NewByteArray(strlen(pat));//建立byte数组
 (env)->SetByteArrayRegion(bytes, 0, strlen(pat), (jbyte*)pat);//将char* 转换为byte数组
 jstring encoding = (env)->NewStringUTF("GB2312"); // 设置String, 保存语言类型,用于byte数组转换至String时的参数
 return (jstring)(env)->NewObject(strClass, ctorID, bytes, encoding);//将byte数组转换为java String,并输出
}

String jstringToString(JNIEnv*   env,   jstring   jstr)
{
   char*   rtn   =   NULL;
   jclass   clsstring   =   env->FindClass("java/lang/String");
   jstring   strencode   =   env->NewStringUTF("GB2312");
   jmethodID   mid   =   env->GetMethodID(clsstring,   "getBytes",   "(Ljava/lang/String;)[B");
   jbyteArray   barr=   (jbyteArray)env->CallObjectMethod(jstr,mid,strencode);
   jsize   alen   =   env->GetArrayLength(barr);
   jbyte*   ba   =   env->GetByteArrayElements(barr,JNI_FALSE);
   if(alen   >   0)
   {
    rtn   =   (char*)malloc(alen+1);         //new   char[alen+1];
    memcpy(rtn,ba,alen);
    rtn[alen]=0;
   }
   env->ReleaseByteArrayElements(barr,ba,0);
   String stemp(rtn);
   free(rtn);
   return   stemp;
}

//将1字节数组转化为对应16进制字符串
AnsiString f_bytetohex(UCHAR *buff,int ilen)
{
 AnsiString s1;
 int i;
 s1="";
 for(i=0;i<ilen;i++)
 {
   s1=s1+IntToHex(buff[i],2);
 };
 return s1;
}

//根据16进制形式的字符串将其转化为字节数组
int f_stringtobin(AnsiString s1, int str_len, UCHAR *buff)
{
 int i;AnsiString s2;
 for(i=0;i<str_len/2;i++)
 {
 s2= "0x" +MidStr(s1,i*2+1,2);
 buff[i]=StrToInt(s2);
 };
 return 0;
}

char* jstringToWindows(JNIEnv* env, jstring jstr)
{

      int   length   =   env->GetStringLength(jstr);
      const   jchar*   jcstr   =   env->GetStringChars(   jstr,   0   );
      char*   rtn   =   (char*)malloc(   length*2+1   );
      int   size   =   0;
      size   =   WideCharToMultiByte(   CP_ACP,   0,   (LPCWSTR)jcstr,   length,   rtn,
                                                        (length*2+1),   NULL,   NULL   );
      if(   size   <=   0   )
          return   NULL;
      env->ReleaseStringChars(   jstr,   jcstr   );
      rtn[size]   =   0;
      return   rtn;
}

/*
 * Class:     JISO15693
 * Method:    Inventory
 * Signature: (Ljava/lang/String;Ljava/lang/String;ZIIJ)I
 */
JNIEXPORT jint JNICALL Java_JISO15693_Inventory
  (JNIEnv *env, jclass, jstring Sendval, jstring REVval, jboolean AFI, jint AFIval, jint Flag, jlong nBytestoRead)
  {
          String s = jstringToString(env, Sendval);
        UCHAR send[200],rev[200];
        f_stringtobin(s,s.Length(),send);
        s = jstringToString(env, REVval);
        f_stringtobin(s, s.Length(), rev);
   return Inventory(send,rev,AFI,AFIval,Flag,nBytestoRead);
  }
/*
 * Class:     JISO15693
 * Method:    StayQuite
 * Signature: (Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;J)I
 */
JNIEXPORT jint JNICALL Java_JISO15693_StayQuite
  (JNIEnv *env, jclass, jstring Sendval, jstring retval, jint flag, jstring UID, jlong nBytesRead)
  {
            String s = jstringToString(env, Sendval);
        UCHAR send[200],rev[200],uid[10];
        f_stringtobin(s,s.Length(),send);
        s = jstringToString(env, retval);
        f_stringtobin(s, s.Length(), rev);
                s = jstringToString(env, UID);
        f_stringtobin(s, s.Length(), uid);
  return StayQuite(send,rev,flag,uid,nBytesRead);
  }
/*
 * Class:     JISO15693
 * Method:    Select
 * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IJ)I
 */
JNIEXPORT jint JNICALL Java_JISO15693_Select
  (JNIEnv *env, jclass, jstring Sendval, jstring REVval, jstring UID, jint flag, jlong nBytesRead)
  {
            String s = jstringToString(env, Sendval);
        UCHAR send[200],rev[200],uid[10];
        f_stringtobin(s,s.Length(),send);
        s = jstringToString(env, REVval);
        f_stringtobin(s, s.Length(), rev);
                        s = jstringToString(env, UID);
        f_stringtobin(s, s.Length(), uid);
        return Select(send,rev,uid,flag,nBytesRead);
  }
/*
 * Class:     JISO15693
 * Method:    ResetToReady
 * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IJ)I
 */
JNIEXPORT jint JNICALL Java_JISO15693_ResetToReady
  (JNIEnv *env, jclass, jstring Sendval, jstring REVval, jstring UID, jint flag, jlong nBytesRead)
  {
              String s = jstringToString(env, Sendval);
        UCHAR send[200],rev[200],uid[10];
        f_stringtobin(s,s.Length(),send);
        s = jstringToString(env, REVval);
        f_stringtobin(s, s.Length(), rev);
                        s = jstringToString(env, UID);
        f_stringtobin(s, s.Length(), uid);
  return ResetToReady(send,rev,uid,flag,nBytesRead);
  }
/*
 * Class:     JISO15693
 * Method:    WriteAFI
 * Signature: (Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;J)I
 */
JNIEXPORT jint JNICALL Java_JISO15693_WriteAFI
  (JNIEnv *env, jclass, jstring Sendval, jstring REVval, jint AFIval, jint flag, jstring UID, jlong nBytesRead)
  {
              String s = jstringToString(env, Sendval);
        UCHAR send[200],rev[200],uid[10];
        f_stringtobin(s,s.Length(),send);
        s = jstringToString(env, REVval);
        f_stringtobin(s, s.Length(), rev);
                        s = jstringToString(env, UID);
        f_stringtobin(s, s.Length(), uid);
  return WriteAFI(send,rev,AFIval,flag,uid,nBytesRead);
  }
/*
 * Class:     JISO15693
 * Method:    LockAFI
 * Signature: (Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;J)I
 */
JNIEXPORT jint JNICALL Java_JISO15693_LockAFI
  (JNIEnv *env, jclass, jstring Sendval, jstring REVval, jint flag, jstring UID, jlong nBytesRead)
  {
              String s = jstringToString(env, Sendval);
        UCHAR send[200],rev[200],uid[10];
        f_stringtobin(s,s.Length(),send);
        s = jstringToString(env, REVval);
        f_stringtobin(s, s.Length(), rev);
                        s = jstringToString(env, UID);
        f_stringtobin(s, s.Length(), uid);
  return LockAFI(send,rev,flag,uid,nBytesRead);
  }
/*
 * Class:     JISO15693
 * Method:    ReadSingleBlock
 * Signature: (Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;J)I
 */
JNIEXPORT jint JNICALL Java_JISO15693_ReadSingleBlock
  (JNIEnv *env, jclass, jstring Sendval, jstring REVval, jint nblock, jint flag, jstring UID, jlong nBytesRead)
  {
   String s = jstringToString(env, Sendval);
        UCHAR send[200],rev[200],uid[10];
        f_stringtobin(s,s.Length(),send);
        s = jstringToString(env, REVval);
        f_stringtobin(s, s.Length(), rev);
                        s = jstringToString(env, UID);
        f_stringtobin(s, s.Length(), uid);
  return ReadSingleBlock(send,rev,nblock,flag,uid,nBytesRead);
  }
/*
 * Class:     JISO15693
 * Method:    WriteSingleBlock
 * Signature: (Ljava/lang/String;Ljava/lang/String;I[CLjava/lang/String;J)I
 */
JNIEXPORT jint JNICALL Java_JISO15693_WriteSingleBlock
  (JNIEnv *env, jclass, jstring Sendval, jstring REVval, jint nblock, jstring Bval, jstring UID, jint flag,jlong nBytesRead)
  {
              String s = jstringToString(env, Sendval);
        UCHAR send[200],rev[200],uid[10],blockval[8];
        f_stringtobin(s,s.Length(),send);
        s = jstringToString(env, REVval);
        f_stringtobin(s, s.Length(), rev);
                        s = jstringToString(env, UID);
        f_stringtobin(s, s.Length(), uid);
                               s = jstringToString(env, Bval);
        f_stringtobin(s, s.Length(), blockval);
  return WriteSingleBlock(send,rev,nblock,blockval,uid,flag,nBytesRead);
  }
/*
 * Class:     JISO15693
 * Method:    LockBlock
 * Signature: (Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;J)I
 */
JNIEXPORT jint JNICALL Java_JISO15693_LockBlock
  (JNIEnv *env, jclass, jstring Sendval, jstring REVval, jint flag, jint nblock, jstring UID, jlong nBytesRead)
  {
              String s = jstringToString(env, Sendval);
        UCHAR send[200],rev[200],uid[10];
        f_stringtobin(s,s.Length(),send);
        s = jstringToString(env, REVval);
        f_stringtobin(s, s.Length(), rev);
                        s = jstringToString(env, UID);
        f_stringtobin(s, s.Length(), uid);
  return LockBlock(send,rev,flag,nblock,uid,nBytesRead);
  }
/*
 * Class:     JISO15693
 * Method:    ReadMultiBlock
 * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIJ)I
 */
JNIEXPORT jint JNICALL Java_JISO15693_ReadMultiBlock
  (JNIEnv *env, jclass, jstring Sendval, jstring REVval, jstring UID, jint nStartBlock, jint nLength,jint flag, jlong nBytesRead)
  {
              String s = jstringToString(env, Sendval);
        UCHAR send[200],rev[200],uid[10];
        f_stringtobin(s,s.Length(),send);
        s = jstringToString(env, REVval);
        f_stringtobin(s, s.Length(), rev);
                        s = jstringToString(env, UID);
        f_stringtobin(s, s.Length(), uid);
  return ReadMultiBlock(send,rev,uid,nStartBlock,nLength,flag,nBytesRead);
  }
/*
 * Class:     JISO15693
 * Method:    WriteMultiBlock
 * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I[CIIJ)I
 */
JNIEXPORT jint JNICALL Java_JISO15693_WriteMultiBlock
  (JNIEnv *env, jclass, jstring Sendval, jstring REVval, jstring UID, jint nblock, jstring Bval, jint nStartBlock, jint nLength, jint flag, jlong nBytesRead)
  {
              String s = jstringToString(env, Sendval);
        UCHAR send[200],rev[200],uid[10],blockval[8];
        f_stringtobin(s,s.Length(),send);
        s = jstringToString(env, REVval);
        f_stringtobin(s, s.Length(), rev);
                        s = jstringToString(env, UID);
        f_stringtobin(s, s.Length(), uid);
                                       s = jstringToString(env, Bval);
        f_stringtobin(s, s.Length(), blockval);
  return WriteMultiBlock(send,rev,uid,nblock,blockval,nStartBlock,nLength,flag,nBytesRead);
  }
/*
 * Class:     JISO15693
 * Method:    WriteDSFID
 * Signature: (Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;J)I
 */
JNIEXPORT jint JNICALL Java_JISO15693_WriteDSFID
  (JNIEnv *env, jclass, jstring Sendval, jstring REVval, jint flag, jint DSIFID, jstring UID, jlong nBytesRead)
  {
   String s = jstringToString(env, Sendval);
        UCHAR send[200],rev[200],uid[10];
        f_stringtobin(s,s.Length(),send);
        s = jstringToString(env, REVval);
        f_stringtobin(s, s.Length(), rev);
                        s = jstringToString(env, UID);
        f_stringtobin(s, s.Length(), uid);
  return WriteDSFID(send,rev,flag,DSIFID,uid,nBytesRead);
  }
/*
 * Class:     JISO15693
 * Method:    LockDSFID
 * Signature: (Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;J)I
 */
JNIEXPORT jint JNICALL Java_JISO15693_LockDSFID
  (JNIEnv *env, jclass, jstring Sendval, jstring REVval, jint flag, jstring UID, jlong nBytesRead)
  {
              String s = jstringToString(env, Sendval);
        UCHAR send[200],rev[200],uid[10];
        f_stringtobin(s,s.Length(),send);
        s = jstringToString(env, REVval);
        f_stringtobin(s, s.Length(), rev);
                        s = jstringToString(env, UID);
        f_stringtobin(s, s.Length(), uid);
  return LockDSFID(send,rev,flag,uid,nBytesRead);
  }
/*
 * Class:     JISO15693
 * Method:    GetSysInfo
 * Signature: (Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;J)I
 */
JNIEXPORT jint JNICALL Java_JISO15693_GetSysInfo
  (JNIEnv *env, jclass, jstring Sendval, jstring REVval, jint flag, jstring UID, jlong nBytesRead)
  {
              String s = jstringToString(env, Sendval);
        UCHAR send[200],rev[200],uid[10];
        f_stringtobin(s,s.Length(),send);
        s = jstringToString(env, REVval);
        f_stringtobin(s, s.Length(), rev);
                        s = jstringToString(env, UID);
        f_stringtobin(s, s.Length(), uid);
  return GetSysInfo(send,rev,flag,uid,nBytesRead);
  }
/*
 * Class:     JISO15693
 * Method:    GetMultiBlockSecirotuStatus
 * Signature: (Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;J)I
 */
JNIEXPORT jint JNICALL Java_JISO15693_GetMultiBlockSecirotuStatus
  (JNIEnv *env, jclass, jstring Sendval, jstring REVval, jint flag, jint nStartBlock, jint nLength, jstring UID, jlong nBytesRead)
  {
                String s = jstringToString(env, Sendval);
        UCHAR send[200],rev[200],uid[10];
        f_stringtobin(s,s.Length(),send);
        s = jstringToString(env, REVval);
        f_stringtobin(s, s.Length(), rev);
                        s = jstringToString(env, UID);
        f_stringtobin(s, s.Length(), uid);
    return GetMultiBlockSecirotuStatus(send,rev,flag,nStartBlock,nLength,uid,nBytesRead);
  }




//---------------------------------------------------------------------------

⌨️ 快捷键说明

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