applet访问串口步骤:1.配置环境,把Sun程序的comm.jar包,win32com.dll,javax.comm.properties放到相应的目录中 
2.编写applet程序,并生成class文件 
3.把applet程序的class打成jar包 
4.生成数字签名文件 
5.用数字签名给jar包签名 
6.编写页面html代码 
7.编写安全策略文件(给allpermission权限) 
8.测试代码(用appletviewer   应用策略文件) 
请教大虾:  上面步骤是否正确?我目前照上面步骤做,在第8步时,报Caught   java.lang.NullPointerException:   name   can't   be   null   while   loading   driver   com.sun.comm.Win32Driver错误。查看我的源码,出现在51行: 
51: Enumeration   commportEnum=tmpCommportIdent.getPortIdentifiers(); 
52: while   (commportEnum.hasMoreElements())   
53: { 
54: tmpCommportIdent=(CommPortIdentifier)commportEnum.nextElement(); 
55: if   ((tmpCommportIdent.getName().trim().toUpperCase().equals   
56:                                                 (this.commPortName))   &&   (tmpCommportIdent.getPortType() 
57:                                                       ==CommPortIdentifier.PORT_SERIAL))   
58: { 
59: foundPortFlag=true; 
60: break; 
61: } 
62: } 
        熟悉串口编程的朋友肯定知道这一段是找机器中串口的代码例如(COM3),这代码按理说是不会出这种错的。我就搞不明白了,请教各位,谁能帮我找到原因? 

解决方案 »

  1.   

    这二天我改进代码,把java_home\bin 中的win32com.dll剪切到项目的目录中去,就是和APPLET同一个目录中,
    然后在APPLET中动态加载WIN32COM.DLL代码如下:
    String driverName = "com.sun.comm.Win32Driver";
    CommDriver driver = null;
    try {
    System.loadLibrary("win32com");
    driver = (CommDriver) Class.forName(driverName).newInstance();
    driver.initialize();
    } catch (InstantiationException e1) {
    e1.printStackTrace();
    } catch (IllegalAccessException e1) {
    e1.printStackTrace();
    } catch (ClassNotFoundException e1) {
    e1.printStackTrace();
    }
    运行appletviewer,出错如下:
    Oaking:::::<ESPON 532>打开端口....
    Oaking:::::<ESPON 532>打开端口....
    Caught java.lang.NullPointerException name can't be null while loading driver
    com.sun.comm.Win32Driver 
    javax.comm.PortInUseException:Port currently owned by JfbecJourn
    ...../*中间省略其他错误提示...
    .................................
    .................................
    /*中间省略其他错误提示....
    Oaking:::::<ESPON 532>打开端口....OK
    Oaking:::::<ESPON 532>打印数据...."你好..",并走行10行.....
    Oaking:::::<ESPON 532>打印数据...."你好..",并走行10行.....OK
    Oaking:::::<ESPON 532>关闭端口...
    Oaking:::::<ESPON 532>关闭端口...OK-------------------------------------------------------------------------------------
    在我这个APPLET程序中,出现重复调用 打开端口 ,调用二次.
    但我检查代码时,却并没有重复调用的情况,打开端口代码我是放在applet的init方法中..按理它只会调用一次.
    请教高手,是什么原因?????????????????????????????
      

  2.   

    嘿嘿APPLET 应该也是可以的,只是,没时间弄,最近,那是以前弄着玩的
      

  3.   

    兄台,你觉得可以的话,
    能不能现在用applet来试试访问串口???
    我这事急着呢,在这等
      

  4.   

    再改程序,现在是这样的情况
    运行appletviewer,出错如下:
    Oaking::::: <ESPON   532> 打开端口....
    Oaking::::: <ESPON   532> 打开端口....
    Caught   java.lang.NullPointerException   name   can't   be   null   while   loading   driver
    com.sun.comm.Win32Driver  
    Oaking::::: <ESPON   532> 打开端口....OK
    Oaking::::: <ESPON   532> 打印数据...."你好..",并走行10行.....
    Oaking::::: <ESPON   532> 打印数据...."你好..",并走行10行.....OK
    Oaking::::: <ESPON   532> 关闭端口...
    Oaking::::: <ESPON   532> 关闭端口...OK 
    程序完成,可以打印数据,但有一个空指针异常,请教高人指点!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      

  5.   

    1.要手动加载WIN32COM.DLL
    2.包不能放到JAVA_HOME\JRE\LIB\EXT目录中
    3.还要配置安全策略文件
    我想做了这些应该就可以访问了