用java语言实现对IC卡的读写

07-12-02 aasuccess
请各位大侠帮帮忙,用java语言实现对IC卡的读写,不会没有头绪,希望高手指点一下,最好有例子或者源码!非常感谢!

Email:hjysuccess@126.com
qq:64229118

[该贴被hjysuccess于2007-12-02 15:40修改过]

ttt
2007-12-02 23:43
做这种事实请用C语言或汇编

aasuccess
2007-12-04 09:00
请各位达人帮帮忙,会的话告诉小弟一下,非常感谢!

aasuccess
2007-12-04 10:23
用javacard可以实现对IC卡的读写操作吗?怎么没有人帮下忙呢?

htao
2007-12-04 17:29
我以前作过这样的程序,但用的是keilc(C语言变种).
对于这种东西应该用比较针对性的语言比较好.毕竟这是低层的东本啊!
首先确认传输协议,我当时用的是I2C总线,然后明白其时序过程,就好办了,关键要有耐心啊,这个不是很容易通的.

kkkf2004
2007-12-06 01:51
想问一下你,你是那种ic卡啊?
是不是非接触式的那种,白色的卡片.接收器是个盒子.
还是圆形中间有孔,质地很硬的那种卡,接收器是一条棒子?

如果是的话,那么客户端机器可能要装个active x插件,然后
通过页面上的javascript与ic卡进行读写交互.

[该贴被kkkf2004于2007-12-06 01:52修改过]

ynzhangyao
2007-12-06 16:30
通过JNI的方式进行读写

aasuccess
2007-12-10 18:29
用JNI的方式去调用接口,是不是根据读卡器的类型不同,厂商提供的接口就不一样?可以用一套程序对所有的读卡器进行读写操作吗?如果厂商不提供java接口供调用怎么办??现在思路比较乱,希望有知道的同仁给予帮助,非常感谢!

aasuccess
2007-12-10 18:31
我们用的是接触式的IC卡4428型号,其实不管是什么IC卡是否是接触式的,只要能实现IC卡的读写就行。谢谢各位的关注!

kkkf2004
2007-12-12 01:00
我以前做的是非接触式的ic卡,后台是asp,前台是这样的,客户端的机器要安装一个叫
做MSCOMM32.OCX的active x组件,然后在页面上通过javascript操作这个组件来
ic卡读写器进行交互,读好后再提交到服务器进行业务处理,具体的编程话还要看com口号,ic报文格式等等

建议你搜索关键字:MSCOMM32.OCX+javascript,有很多资料.

如果你用jni,要么你在客户端使用applet,还得让机器装jre,要么你的ic卡读写器刚好和服务器在一台机器.

kkkf2004
2007-12-12 01:02
<html>
<head>
<title>JavaScript串口(通过 vb 的 MSCOMM32.OCX 控件)</title>

<SCRIPT ID=clientEventHandlersJS LANGUAGE=javascript>
<!--
//重写 mscomm 控件的唯一事件处理代码
function MSComm1_OnComm()
{
var len=0;
//window.alert("happy");
if(MSComm1.CommEvent==1)//如果是发送事件
{
window.alert("ok");//这句正常,说明发送成功了
}
else if(MSComm1.CommEvent==2)//如果是接收事件
{
//window.alert(MSComm1.CommEvent);//! ‘
//window.alert(MSComm1.Input);//
document.form1.txtReceive.value=document.form1.txtReceive.value + MSComm1.Input;
}

return false;
}
//-->
</SCRIPT>

<SCRIPT LANGUAGE=javascript FOR=MSComm1 EVENT=OnComm>
<!--
// MSComm1控件每遇到 OnComm 事件就调用 MSComm1_OnComm()函数
MSComm1_OnComm()
//-->
</SCRIPT>


<script language="JavaScript" type="text/JavaScript">
<!--
//打开端口并发送命令程序
function OpenPort()
{
if(MSComm1.PortOpen==false)
{
MSComm1.PortOpen=true;
MSComm1.Output="R";//发送命令
}
else
{
window.alert ("已经开始接收数据!");
}
}
-->
</script>

</head>

<OBJECT CLASSID="clsid:648A5600-2C6E-101B-82B6-000000000014" id=MSComm1 codebase="MSCOMM32.OCX" type="application/x-oleobject"
style="LEFT: 54px; TOP: 14px" >
<PARAM NAME="CommPort" VALUE="1">
<PARAM NAME="DTREnable" VALUE="1">
<PARAM NAME="Handshaking" VALUE="0">
<PARAM NAME="InBufferSize" VALUE="1024">
<PARAM NAME="InputLen" VALUE="0">
<PARAM NAME="NullDiscard" VALUE="0">
<PARAM NAME="OutBufferSize" VALUE="512">
<PARAM NAME="ParityReplace" VALUE="?">
<PARAM NAME="RThreshold" VALUE="1">
<PARAM NAME="RTSEnable" VALUE="1">
<PARAM NAME="SThreshold" VALUE="2">
<PARAM NAME="EOFEnable" VALUE="0">
<PARAM NAME="InputMode" VALUE="0">

<PARAM NAME="DataBits" VALUE="8">
<PARAM NAME="StopBits" VALUE="1">
<PARAM NAME="BaudRate" VALUE="9600">
<PARAM NAME="Settings" VALUE="9600,N,8,1">
</OBJECT>
<body>

<form name="form1">
<input type="submit" name="Submit" value="提交" onClick="OpenPort()">
<input type="text" name="txtReceive" value="">
</form>
</body>
</html>

这就是个静态页面通过js控制mscomm对某com设备进行访问的例子.