Java Applet读写客户端串口——终极篇
测试环境:
SDK:Oracle JRockit for Java version 6, Java Communication for Windows 2.0
OS:WINDOWS7
外设:串口条形码扫描枪
Server:Tomcat6
看了网上良莠不齐的关于Applet访问串口的文章,总结起来所关注的问题无外乎以下3个:
1. 三个文件(comm.jar、javax.comm.properties和win32com.dll)到底应该存放在什么目录中?
2. 如何实现代码?
3. Applet到底应该这么部署?
一.关于第一个问题,网上大致是这样写的:
a) 将javax.comm.properties文件放在$JAVA_HOME/lib目录中;
b) 将win32comm.dll文件放在$JAVA_HOME/bin目录中;
c) 将comm.jar文件放在$JAVA_HOME/lib/ext目录中;
先不去讨论这些文件应不应该放在这些目录中,单从可行性方面讨论就不太符合WEB应用程序的做法。首先您不可能预知有多少客户端的存在,就算您预先知道也不可能在每个客户端计算机上部署上述3个文件。好,您说可以提供使用手册引导用户下载文件并按照手册将上述文件部署到指定目录。但是您增加了用户的使用学习成本,用户不是IT专家,将本来应该由开发人员完成的任务转嫁给用户是否合适呢?
要解决这个问题,关键是要测试,测试Applet在运行时是这么加载这些文件的。经过反复的测试,终于搞清楚其中的来龙去脉:
1. javax.comm.properties文件可以丢弃,因为通过编程的方法可以在Applet中动态加载串口驱动程序,所以该文件存不存在无所谓。
2. comm.jar文件是主要的串口访问类库,可以通过在Applet运行时加载(通过ARCHIVE参数指定,后面有详细的例子),所以也没有必要事先部署到客户端计算机上。
3. 最关键的是win32comm.dll文件,该文件是用C写的串(并)口驱动程序,Java通过JNI调该文件中的函数来实现对串(并)口的访问。所以此文件不可或缺。要将该文件部署到客户端只能通过下载的方式实现,即在Applet运行时检查指定目录中是否存在win32comm.dll文件,如果不存在则将服务器端的win32comm.dll文件下载到客户端的指定目录中,最后再动态装载驱动程序。关于win32comm.dll文件到底要部署到什么目录中,经过测试发现该文件只要存在于由java.library.path系统变量指定的任一目录中即可,该系统变量可以通过System.ge
相关文档:
在论坛里看到好多人问自己的 数据库 为什么连接不上的类似的问题
我答了好多 主要的错误原因是 : 导入 驱动程序的jar文件后 没编译 就运行
希望刚学Java数据库的同学注意了! ......
package com.algrothim.sample.plo;
/**
* @author yuan
*这一个判断一个字符串是否为回文的例子。
*里面借助三个重要的数据结构的知识:
*栈,队列,以及引用。
*此程序的原理是:根据栈的后进先出,以及队列的先进先出的原理。
*两个ADT是同步的,如果从栈出来的字符与从队列出来的字符全部一样,
*说明为 ......
我们知道,Vector 类提供了实现可增长数组的功能,随着更多元素加入其中,数组变的更大。在删除一些元素之后,数组变小。
Vector 有三个构造函数,
public Vector(int initialCapacity,int capacityIncrement)
public Vector(int initialCapacity)
public Vector()
......
起到第一道安全保障作用的”双亲委派类加载模型”
双亲委派方式的类加载,指的是优先从顶层启动类加载器开始,自顶向下的方式加载类的模型(参见第一条类装载器体系结构)。
这种模型的好处是,底层的类装载器装载的类无法与顶层类装载器装载的类相互调用。
哪怕是同包下的类,只要他们不属于同一类装载器, ......