有几个项目都用到IC卡设备,IC卡供应商提供的例程里没有java的例子,调试过程发现各种问题,总算是测试通过了,mark一下.
基本思路:通过JNative.jar包调用dll方式,读取IC卡的序列号.
代码:
package com.test;
import org.xvolks.jnative.JNative;
import org.xvolks.jnative.Type;
import org.xvolks.jnative.exceptions.NativeException;
import org.xvolks.jnative.misc.basicStructures.HANDLE;
import org.xvolks.jnative.pointers.Pointer;
import org.xvolks.jnative.pointers.memory.MemoryBlockFactory;
public class TestConn {
static Pointer pointer;
/**
*打开连接
*
* @param port
* 串口号,取值为0~3
* @param baud
* 通讯波特率9600~115200
* @return 通讯设备标识符
* @throws NativeException
* @throws IllegalAccessException
*/
private static final int TestConnect(int port, long baud)
throws NativeException, IllegalAccessException {
JNative n = null;
try {
n = new JNative("iccrf.dll", "rf_init"); // 加载函数对象
n.setRetVal(Type.INT); // 设置函数返回值类型
int i = 0; // 设置参数顺序
n.setParameter(i++, Type.INT, "" + port); // 设值
n.setParameter(i++, Type.INT, "" + baud); // 设置
System.out.println("调用的DLL文件名为:" + n.getDLLName());
System.out.println(