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
相关文档:
JAVA动态代理内部实现
一 代理设计模式
代理模式为目标对象提供一种代理以控制对实际对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
为了保持行为的一致性,代理类和实际委托类通常会实现相同的接口,所以在访问者看来两者没有丝毫的区别。 ......
ANT_HOME D:\apache-ant-1.8.0-bin\apache-ant-1.8.0
AXIS2_HOME D:\axis2-1.5.1
MAVEN_HOME D:\apache-maven-2.2.1
java_home C:\Program Files\Java\jdk1.6.0_18
path C:\ProgramFiles\Java\jdk1.6.0_18\bin;%AXIS2_HOME%/bin;%MAVEN_HOME%\bin;
%ANT_ ......
在Java中使用数值进行二元操作时,先要将两个操作数转换为同一种类型,自动转换原则如下:
如果两个操作数中有一个是double类型的,那么另一个操作数将会转换为double类型;
否则,如果其中一个操作数是float类型,那么另一个操作数将会转换为float类型;
否则,如果期中一个操作数是long类型,那么另一个操作数将会转换 ......
认清JavaScript和JAVA全局变量和局部变量的作用域
2010年2月28日 george 发表评论 阅读评论
通过淘宝面试题来认清JavaScript和JAVA全局变量和局部变量的作用域
注意两者是有严重区别的!
var a = 100;
function testResult(){
var b = 2 * a;
var a = 200;
var c = a / 2 ......
Java线程同步机制synchronized关键字的理解
关键字: 线程 synchronized
文章出处:http://tech.it168.com/j/2008-01-30/200801302324557.shtml
作者:来自ITPUB论坛
线程同步:
由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题。Java语言提供了 ......