javacardlet的简单介绍

博主:adminadmin 2023-03-22 22:15:05 487

本篇文章给大家谈谈javacardlet,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

什么是 javacard applet

Applet是一种特殊的Java程序,它本身不能单独运行,需要嵌入在一个HTML文件中,借助浏览器或Appletviewer来解释执行.Applet可能通过网络传输,由浏览器自动装载并执行.

和Applicaton不同,Applet程序都必须继承自Java的Java.applet.Applet类或javax.swing.JApplet类

public class myApplet extends java.applet.Applet或public class myApplet extends javax.swing.JApplet

其实 JApplet类也是继承自Applet类.

要浏览Applet需要将它嵌入在网页中,只需在HTML文件中插入APPLET标记即可.

java 如何向串口发送指令

需要一个包 comm.jar

需要一个配置文件 javax.comm.properties (工程根目录)

(或者放在JDK里)

// 取得端口句柄

CommPortIdentifier id = CommPortIdentifier.getPortIdentifier(portName);

port = (SerialPort) id .open("SerialDemo", 30000);

port .setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);

port .notifyOnDataAvailable(true);

port .notifyOnBreakInterrupt(true);

port .enableReceiveTimeout(delayTime);

读取之类的自己写就行了,(port .getInputStream()),完事之后别忘了关掉端口,不然下次就不能用了,只能重启系统

配置文件里就一行:

Driver=com.sun.comm.Win32Driver

----------------------------------

你设个断点单步调试看一下原因,那个SerialBean是你自己写的,谁也不知道里面整啥了,单步调试就知道哪里错误。

抛出异常了Exception in thread "main" java.lang.NullPointerException

at serial.SerialBean.WritePort(SerialBean.java:114)

从这里看,是在SerialBean.java的114行(函数WritePort)的一个东西,它的值是null,所以报错了

如何获取JavaCard剩余空间

package GetFreeSpacePkg;

import javacard.framework.APDU;

import javacard.framework.ISO7816;

import javacard.framework.Applet;

import javacard.framework.ISOException;

import javacard.framework.JCSystem;

/**

* 获取卡内剩余空间,包括E2P/Flash与RAM.

* 对于E2P/Flash来说,如果卡内剩余空间超过0x3FFF,则此应用返回的数据会有较小的误差。

* 测试命令:

*

* 8000000000 //get DTR

* 8001000000 //get RTR

* 8002000000 //get E2P/Flash

*

* @author SCPlatform@outlook.com

*/

public class GetFreeSpaceApplet extends Applet {

public static void install(byte[] bArray, short bOffset, byte bLength) {

new GetFreeSpaceApplet().register(bArray, (short) (bOffset + 1),bArray[bOffset]);

}

public void process(APDU apdu) {

if (selectingApplet()) {

return;

}

byte[] buf = apdu.getBuffer();

int iFreeSpace=0;

switch (buf[ISO7816.OFFSET_INS]) {

case (byte) 0x00://DTR

iFreeSpace = getFreeDTR();

break;

case (byte) 0x01://RTR

iFreeSpace = getFreeRTR();

break;

case (byte) 0x02://persistent

iFreeSpace = getFreePersistent();

break;

default:

ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED);

}

JCSystem.requestObjectDeletion();

buf[3]=(byte)(iFreeSpace);

buf[2]=(byte)(iFreeSpace8);

buf[1]=(byte)(iFreeSpace16);

buf[0]=(byte)(iFreeSpace24);

apdu.setOutgoingAndSend((short)0, (short)4);

}

/**

* 获取剩余MEMORY_TYPE_TRANSIENT_DESELECT空间

* @return

*/

public int getFreeDTR(){

//首先取得剩余空间大小

short memsize = JCSystem.getAvailableMemory(JCSystem.MEMORY_TYPE_TRANSIENT_DESELECT);

int allmemsize = memsize;

//如果返回值为0x3FFF,则剩余空间大于此值,可继续取得剩余空间

while(memsize == (short)32767){

JCSystem.makeTransientByteArray(memsize,JCSystem.MEMORY_TYPE_TRANSIENT_DESELECT);//不存储返回的数组对象

memsize = JCSystem.getAvailableMemory(JCSystem.MEMORY_TYPE_TRANSIENT_DESELECT);

allmemsize += memsize;

}

return allmemsize;

}

/**

* 获取剩余的MEMORY_TYPE_TRANSIENT_RESET空间

* @return

*/

public int getFreeRTR(){

//首先取得剩余空间大小

short memsize = JCSystem.getAvailableMemory(JCSystem.MEMORY_TYPE_TRANSIENT_RESET);

int allmemsize = memsize;

//如果返回值为0x3FFF,则剩余空间大于此值,可继续取得剩余空间

while(memsize == (short)32767){

JCSystem.makeTransientByteArray(memsize,JCSystem.MEMORY_TYPE_TRANSIENT_RESET);//不存储返回的数组对象

memsize = JCSystem.getAvailableMemory(JCSystem.MEMORY_TYPE_TRANSIENT_RESET);

allmemsize += memsize;

}

return allmemsize;

}

/**

* 获取剩余的E2P/Flash空间,如果剩余空间大于0x3FFF,则此接口将创建数组,然后再获取新的剩余空间,

* 数组对象头将占用几个字节(根据对象存储结构不一样,可能占用字节数不同,一般数组头为7字节),因此存在误差。

* @return

*/

public int getFreePersistent(){

//首先取得剩余空间大小

short memsize = JCSystem.getAvailableMemory(JCSystem.MEMORY_TYPE_PERSISTENT);

int allmemsize = memsize;

//如果返回值为0x3FFF,则剩余空间大于此值,可继续取得剩余空间

while(memsize == (short)32767){

byte[] tmp=new byte[memsize]; //不存储返回的数组对象

memsize = JCSystem.getAvailableMemory(JCSystem.MEMORY_TYPE_PERSISTENT);

allmemsize += memsize;

}

return allmemsize;

}

}

javacardlet的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、javacardlet的信息别忘了在本站进行查找喔。