在WEBSTART中实现串口通信(WINDOWS版)
2005-12-30 13:19
357 查看
在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/),
如http://www.rxtx.org
不过后来处于稳定安全起见,还是选用的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不做了呢。
看到这个题目,你是不是问:这跟在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/),
如http://www.rxtx.org
不过后来处于稳定安全起见,还是选用的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不做了呢。
相关文章推荐
- Unable to start debugging on the web server. Debugging failed because integrated windows authentication is not enabled.
- Windows 2000 Server的远程终端服务来实现终端机远程控制Web服务器
- C++编程笔记:串口通信在windows环境和linux环境下的异同和代码实现
- 分别用(Windows/Form/Soap/WebService)实现用户身份验证(含示例代码下载)
- C实现简单web服务器-2(windows)
- windows NLB+ARR实现Web负载均衡高可用/可伸缩
- [转] 分别用(Windows/Form/Soap/WebService)实现用户身份验证
- java web start实现关键问题(二)
- ui-router中使用$stateChangeStart来实现WEB用户登录跳转
- seetaface人脸识别引擎的windows java 实现,可用于搭建人脸识别java web服务器
- Windows环境下,Nginx+tomcat+redis实现web项目集群
- windows下svn钩子实现每次提交更新至web目录
- 分别用(Windows/Form/Soap/WebService)实现用户身份验证(含示例代码下载)
- 怎么实现用户匿名访问web,但数据库要用Windows集成验证方式(数据库和web服务器分别在两台机器上)
- windows,linux下SVN实现自动更新WEB目录
- CentOS虚拟机web服务器实现windows本地实时测试
- Java Web Start 实现关键
- [原]Unable to start debugging on the web server.Debugging failes because integrated Windows authentication is not enabled.
- webapi + windows计划 + mshta 实现定时执行任务
- windows wininet api 实现下载web服务器文件(l历史代码,贴出共享)