在WEBSTART中实现串口通信(WINDOWS版)
看到这个题目,你是不是问:这跟在JAVA中实现串口通信有什么区别?在JAVA中能做在WEBSTART中不就
一样吗?
真聪明,的确是这样的,但事实也存在一些不同,等我慢慢讲述。
目前,在要JAVA中实现串口通信,一般都去SUN网站下载相应的开发包,其中主要包括一个comm.jar,一个
win32comm.dll,一个属性文件(javax.comm.properties)。
然而最近我去找时,却发现最新版(3.0)只提供solaris和linux版本的下载,并不在技持WINDOWS版(
找了好些论坛,好象是说微软改了其中的某些东东倒致可能出现的不兼情况,所在干脆不做了,真不
负责),相关的讨论可以访问以下地址:
http://swforum.sun.com/jive/thread.jspa?threadID=59439
其中还提供了一个下载串口API 2.0的地址:
http://javashoplm.sun.com/ECom/docs/Welcome.jsp?StoreId=22&PartDetailId=7235-javacomm-2.0-spec-oth-JSpec&SiteId=JSC&TransactionId=noreg
不过既然它们不再提供WINDOWS版本,用起来还是有一些担心,也找了一些可用的开源实现(http://republika.pl/mho/java/comm/),
不过后来处于稳定安全起见,还是选用的SUN的2.0实现,下载下来是javacomm20-win32.zip文件,里面主是
是我上面所述的三个文件。关于其使用的贴子网上有很多,随便GOOGLE一下就几十篇,大致是把什么拷贝到
什么地方之类的,得确可以运行。
在要发布为WEBSTART就不一样了,主要不一样:
1、不可能让用户为这个功能去手工拷贝这些文件
2、而且最好不要在用户的JRE下做任何事情,这样比较有道义。
3、SUN COMM API在找其配置文件(一起下载的properties,实际就是驱动的实现配置)方式有点
不太好:先去JRE的LIB下找,没找到的话,再找COMM.jar在哪,找到后在其同目录下找,找不到就出错
(其中还有一段代码,好象是找java.comm.properties属性值,可找到以后也没用,拉圾代码!)。
这什么找法,你直接在CP中找不就很简单吗,再加个默认实现(就象XML 解析器一样),一切就很完美了。
也难怪,也许SUN随便安排了个人作作,没把这当回事。
4、照SUN的那种找法,现在问题来了,如何把配置文件随WEBSTART一下下载并且让javax.comm.找到呢?
WEBSTART下载的东西只能是:图象/JAR/JNLP,入到JAR里肯定是找不到的(为什么找不到,看看其查找
的机制)
有了这些不同,现在该知道按普通玩法根本不行了吧!!!
其实想了好多方法,也没找出一个好方法,最好只好来硬的了。
javax.comm.CommPortIdentifier是一个初始化相关的类,一切有关配置的加载之类的代码都有在这里
直接更改这个代码,将加载配置的方式改为在CLASSPATH中加载,加载不到时,直接用默认的SUN实现。
一切就OK了。其中还涉及到一些细节部分的修改,在这里就不详细说明了。
当然这也不是一个长久的办法,今后在WINDOWS下使用串口,要不只能自己从头开发或是选用开源了。
谁叫SUN不做了呢。