一个关于applet访问硬件的问题??

作者在尝试通过Applet调用DLL文件与硬件交互时遇到问题。文章详细描述了目录结构、厂家提供的Rd600.java类以及测试用例的JavaCardNo.java。在Applet中,作者尝试初始化通讯、读取卡号等操作,但遇到了`UnsatisfiedLinkError: IC_InitComm`错误。作者寻求帮助解决此问题。
摘要由CSDN通过智能技术生成

厂家提供了两个DLL文件和JAVA程序,我自己写了一个applet和一个html文件,内容如下:请各位大侠们帮帮小弟看看,是错在哪里?谢谢!
我的目录结构是:在bin下面建了一个nhis的文件夹:在下面分别建了一个dcic和一个nhis,文件dcic32.dll,Rd600.dll,Rd600.java存放在dcic下面。myApplet.java放在nhis/nhis下面。test.html放在nhis下面。

一、厂家提供的Rd600.java:
/*
 该程序的使用方法:
 编译Rd600.java,注意Rd600大小写!
 javac Rd600.java
 即可生成Rd600.class
*/
package nhis.dcic;
public class Rd600
{
 /*一个小例子函数,可以做调试用*/
 public int add_s(int i)
 {
  return i+1;
 }
 public native int IC_InitComm(int port);
 public native int IC_ExitComm(int icdev);
 public native int IC_Status(int icdev);
 public native int IC_InitType(int icdev,int ctype);
 //2003-02-11
 public native int IC_Down(int icdev);
 
 
 //2004-12-8
 public native int IC_InitCommAdvanced(int port);
    public native int IC_Reset(int idComDev);
 public native int IC_DevBeep(int icdev,char beeptime);
 public native int IC_ReadVer(int icdev,char[] Ver);
    public native int IC_ReadDevice(int idComDev,short offset,short len, char[] databuffer);
    public native int IC_WriteDevice(int idComDev,short offset,short len, char[] databuffer);
    public native int IC_ReadDevice_Hex(int idComDev,short offset,short len, char[] databuffer);
    public native int IC_WriteDevice_Hex(int idComDev,short offset,short len, char[] databuffer);
    public native int IC_Encrypt( char[] key,char[] ptrSource, short msgLen, char[] ptrDest);
    public native int IC_Decrypt( char[] key,char[] ptrSource, short msgLen, char[] ptrDest);
    public native int IC_Encrypt_Hex( char[] key,char[] ptrSource, short msgLen, char[] ptrDest);
    public native int IC_Decrypt_Hex( char[] key,char[] ptrSource, short msgLen, char[] ptrDest);
    public native int IC_InitComm_Baud(int port,int combaud);
    public native int IC_SetCommTimeout(int lTime_ms,int sTime_ms);
    //cpu
    public native int IC_CpuReset(int idComDev, char[] rlen, char[] databuffer);
    public native int IC_CpuApdu(int idComDev, char slen, char[] sendbuffer,char[] rlen, char[] databuffer);
    public native int IC_CpuApduSource(int idComDev, char slen, char[] sendbuffer,char[] rlen, char[] databuffer);
    public native int IC_CpuReset_Hex(int idComDev, char[] rlen, char[] databuffer);
    public native int IC_CpuApdu_Hex(int idComDev, char slen, char[] sendbuffer,char[] rlen, char[] databuffer);
    public native int IC_CpuApduSource_Hex(int idComDev, char slen, char[] sendbuffer,char[] rlen, char[] databuffer);
    public native int IC_CpuGetProtocol(int idComDev);
    public native int IC_CpuApduRespon(int idComDev, char slen, char[] sendbuffer,char[] rlen, char[] databuffer);
    public native int IC_CpuSetProtocol(int idComDev,char cardp);
   
   
 //4442
 public native int ReadCount_SLE4442(int icdev);
 public native int CheckPass_4442hex(int icdev,char[] data);
 public native int ChangePass_4442hex(int icdev,char[] data);
 public native int CheckPass_SLE4442(int icdev,char[] data);
 public native int ChangePass_SLE4442(int icdev,char[] data);
 //2004-12-8
 public native int ReadPass_SLE4442(int icdev,char[] data);
 public native int ReadPass_4442hex(int icdev,char[] data);
 public native int ReadWithProtection_SLE4442(int icdev, short offset,short len,char[] data);
 public native int WriteWithProtection_SLE4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
易达员工积分制管理系统软件是一款专业的记录公司员工积分的办公软件,软件可以实现多台电脑连网使用,支持按分公司分店查询功能,并且支持,每个分公司只能管理自已的数据,只有管理员才能管理所有员工数据。当然员工也可以自已申请管理积分,审核人员只要审核就可以了。员工可以登录软件查询自已的积分情况。软件界面美观简洁、简单全面、实用方便,无需培训,即可快速上手,轻轻松松完成日常员工积分制管理功能,真正做到简单全面实用。是用户实现员工积分制管理功能的好帮手。 易达员工积分制管理系统 v32.0.8 网络版更新日志 批量添加员工积分奖扣功能,批量申请员工积分功能 易达员工积分制管理系统的安装   把下载好的安装包解压到当前文件夹,之后双击员工积分制管理工资管理工作任务管理系统网络版.exe运行文件进行安装,打开的时候会出现安装框,依次开始安装,依照步骤点击下一步,并选择同意协议和软件安装位置即可。     点击【完成】按钮,易达员工积分制管理系统软件安装过程就完成了。 易达员工积分制管理系统软件的使用   如图所示,使用软件前需要配置数据库,也无需很复杂的操作,只需点击【员工积分绩效管理数据库启动程序】即可完成配置。     安装完成后,点击【员工积分制管理工资管理工作任务管理系统网络版】快捷方式即可进入易达员工积分制管理系统软件软件。如图所示,这是软件的登陆界面,需要输入用户名和密码,默认的用户名是admin,密码是1。     如图所示,这是软件的主界面,用户可以点击各种按钮来实现自己所需的功能。     如图所示,这是软件的【奖扣标准设置】界面。     如图所示,这是软件的【员工信息设置设置】界面。软件的功能就先给大家介绍这些了, 其余的功能能就由小伙伴们自己去解决吧。 易达员工积分制管理系统软件的卸载   依次选择开始-> 所有程序 ->易达员工积分制管理系统软件 ->易达员工积分制管理系统软件。 或者依次打开我的电脑->卸载或更改程序->卸载你所卸载的软件,您可以用 Window XP控制面板中的添加或删除程序功能,或用 Windows Vista、Windows 7中的程序和功能删除白马截图, 然后点击开始卸载,按步骤依次点击下一步,直至完成。
//打开串行口函数 HANDLE __stdcall IC_InitComm_Baud(__int16 port, long Baud);//IC_InitComm(__int16 port, long Baud); HANDLE __stdcall IC_InitComm(__int16 port); //关闭串口函数 __int16 __stdcall IC_ExitComm(HANDLE idComDev); //读取下位机状态函数 __int16 __stdcall IC_Status (HANDLE idComDev); //对卡断电函数 __int16 __stdcall IC_Down(HANDLE idComDev); //设置卡型函数 __int16 __stdcall IC_InitType (HANDLE idComDev,__int16 type); //本函数用于返回卡的类型代码,小于零表示出错,-0x70表示未知卡型 __int16 __stdcall IC_WhatIsType (HANDLE idComDev); //通用写函数 __int16 __stdcall IC_Write(HANDLE idComDev,__int16 offset,__int16 len, unsigned char * databuffer); __int16 __stdcall IC_Write_Hex(HANDLE idComDev, __int16 offset, __int16 len, unsigned char * databuffer); //通用读函数 __int16 __stdcall IC_Read(HANDLE idComDev,__int16 offset,__int16 len, unsigned char * databuffer); __int16 __stdcall IC_Read_Hex(HANDLE idComDev, __int16 offset, __int16 len, unsigned char * databuffer); ///////////////////////////////////////////////////////////////////////////////////// //读45D041卡 __int16 __stdcall IC_DirectRead(HANDLE idComDev,__int16 page,__int16 offset,__int16 len, unsigned char * databuffer); __int16 __stdcall IC_DirectRead_Hex(HANDLE idComDev, __int16 page, __int16 offset, __int16 len, unsigned char * databuffer); //直接写45D041卡 __int16 __stdcall IC_DirectWrite(HANDLE idComDev,__int16 page,__int16 offset,__int16 len, unsigned char * databuffer); __int16 __stdcall IC_DirectWrite_Hex(HANDLE idComDev,__int16 page,__int16 offset,__int16 len, unsigned char * databuffer); __int16 __stdcall IC_ReadProtection(HANDLE idComDev,__int16 offset,__int16 len, unsigned char * databuffer); __int16 __stdcall IC_WriteProtection(HANDLE idComDev,__int16 offset,__int16 len, unsigned char * databuffer); __int16 __stdcall IC_ReadCount_SLE4442(HANDLE idComDev); __int16 __stdcall IC_CheckPass_SLE4442(HANDLE idComDev, unsigned char* Password); __int16 __stdcall IC_ChangePass_SLE4442(HANDLE idComDev, unsigned char* Password); __int16 __stdcall IC_CheckPass_SLE4442hex(HANDLE idComDev, unsigned char* Password); __int16 __stdcall IC_ChangePass_SLE4442hex(HANDLE idComDev, unsigned char* Password); ///////////////////////////////////////////// __int16 __stdcall IC_WriteWithProtection(HANDLE idComDev,__int16 offset,__int16 len, unsigned char * databuffer); __int16 __stdcall IC_ReadWithProtection(HANDLE idComDev,__int16 offset,__int16 len, unsigned char * databuffer); __int16 __stdcall IC_ReadCount_SLE4428(HANDLE idComDev); __int16 __stdcall IC_CheckPass_SLE4428(HANDLE idComDev, unsigned char* Password); __int16 __stdcall IC_ChangePass_SLE4428(HANDLE idComDev, unsigned char* Password); __int16 __stdcall IC_CheckPass_SLE4428hex(HANDLE idComDev, unsigned char* Password); __int16 __stdcall IC_ChangePass_SLE4428hex(HANDLE idComDev, unsigned char* Password); ///////////////////////////////////////////// __int16 __stdcall IC_Fuse_1604(HANDLE idComDev); __int16 __stdcall IC_ReadCount_1604(HANDLE idComDev,__int16 area); __int16 __stdcall IC_CheckPass_1604(HANDLE idComDev,__int16 area,unsigned char * Password); __int16 __stdcall IC_ChangePass_1604(HANDLE idComDev,__int16 area,unsigned char * Password); __int16 __stdcall IC_CheckPass_1604hex(HANDLE idComDev,__int16 area,unsigned char * Password); __int16 __stdcall IC_ChangePass_1604hex(HANDLE idComDev,__int16 area,unsigned char * Password); ///////////////////////////////////////////// //写入,不负责擦除 __int16 __stdcall IC_Write_102(HANDLE idComDev,__int16 offset,__int16 len, unsigned char * databuffer); __int16 __stdcall IC_Write_102Hex(HANDLE idComDev,__int16 offset,__int16 len, unsigned char * databuffer); __int16 __stdcall IC_Read_102(HANDLE idComDev,__int16 offset,__int16 len, unsigned char * databuffer); __int16 __stdcall IC_ReadCount_102(HANDLE idComDev); __int16 __stdcall IC_CheckPass_102(HANDLE idComDev, unsigned char* Password); __int16 __stdcall IC_CheckPass_102hex(HANDLE idComDev, unsigned char* Password); __int16 __stdcall IC_ChangePass_102(HANDLE idComDev, unsigned char* Password); __int16 __stdcall IC_ChangePass_102hex(HANDLE idComDev, unsigned char* Password); __int16 __stdcall IC_CheckAZPass_102(HANDLE idComDev, __int16 zone,unsigned char* Password); __int16 __stdcall IC_CheckAZPass_102hex(HANDLE idComDev, __int16 zone,unsigned char* Password); __int16 __stdcall IC_ChangeAZPass_102(HANDLE idComDev, __int16 zone,unsigned char* Password); __int16 __stdcall IC_ChangeAZPass_102hex(HANDLE idComDev, __int16 zone,unsigned char* Password); //校验擦除密码,校验成功后卡片自行执行擦除本用户区 __int16 __stdcall IC_Fuse_102(HANDLE idComDev); __int16 __stdcall IC_Erase_102(HANDLE idComDev,__int16 offset,__int16 len); //擦除,用于保险丝未烧断时 __int16 __stdcall IC_EWrite_102(HANDLE idComDev,__int16 offset,__int16 len, unsigned char * databuffer); //先擦除,再写入 __int16 __stdcall IC_EWrite_102Hex(HANDLE idComDev,__int16 offset,__int16 len, unsigned char * databuffer); ///////////////////////////////////////////// __int16 __stdcall IC_CheckAZPass_1608(HANDLE idComDev, __int16 area,unsigned char * Password); __int16 __stdcall IC_CheckAZPass_1608hex(HANDLE idComDev, __int16 area,unsigned char * Password); //校验1608卡用户区密码 __int16 __stdcall IC_ChangeAZPass_1608(HANDLE idComDev, __int16 area,unsigned char * Password); __int16 __stdcall IC_ChangeAZPass_1608hex(HANDLE idComDev, __int16 area,unsigned char * Password); //变更1608卡用户区密码 __int16 __stdcall IC_ReadCount_1608(HANDLE idComDev,__int16 area); //读1608卡错误计数器 __int16 __stdcall IC_Fuse_1608(HANDLE idComDev); //1608卡熔丝 __int16 __stdcall IC_ChangeZone_1608(HANDLE idComDev,__int16 zone,unsigned char Data); //变更1608卡用户区设置 __int16 __stdcall IC_Authenticate_1608(HANDLE idComDev,unsigned char *secret); __int16 __stdcall IC_Authenticate_1608hex(HANDLE idComDev,unsigned char *secret); /////////////////////////////////////////////

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值