`
Fangrn
  • 浏览: 818102 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

rxtx取代javax.comm实现Java跨平台设备端口通信

    博客分类:
  • j2ee
阅读更多

From Rxtx

<!-- start content -->

This page is for general content regarding the use of rxtx. Feel free to add your own content.

I wrote an app several months ago using javax.comm on windows. Sun has left me high and dry. rxtx help!

  • download ftp://ftp.qbang.org/pub/rxtx/rxtx-2.1-7-bins-r2.zip
  • unzip it
  • copy rxtxSerial.dll into your c:\program files\java\jre-version\bin dir
  • copy RXTXcomm.jar into your c:\program files\java\jre-version\lib\ext dir
  • change all references from 'javax.comm' to 'gnu.io'
  • recompile
  • test
 Dido Sun left me Hi and dry. After 30+ hours wasting my life on
javax.comm it is the RXTXcomm 2.1.7 that really worked the first 
time
 REMEMBER !! for the newbies
  Change the all occurences of the import javax.comm.*; in  
   MyApps.java
  TO import gnu.io.*;
 I did not even have to recompile as suggested the rxtxSerial.dll
 a job well done for the rxtx.org team.
 Even after following the above instructions, under Netbeans 5.5 on Windows, I needed to right-click Libraries
under Projects on the left hand side of the screen, and select Add JAR/Folder, picking the RXTXcomm.jar file.
 Only then did my "import gnu.io.*;" become a valid command.  Also, I got a run-time error where it failed to
load the rxtxSerial.DLL library because it couldn't find it.  I needed to right-click the project name, select
properties, select Run under categories, and ...

add a VM Options: entry of -Djava.library.path="C:/where-ever-you-stuck-rxtxSerial.DLL-file;%PATH%" While I'm sure there is more than one way of adding the directory to your path, this worked for me. Note I did the default NetBeans 5.5/JDK 1.6.0 isntall accepting all the default options(ie clicking next until I got to finish), so I haven't modified my java paths or anything.  

Using RXTX In Eclipse

From Rxtx

<!-- start content -->

This is how I add and use RXTX in Eclipse for Win32 Projects, there are probably other ways but it works for me. mailto:seaton@gateway.net.au

  1. Copy RXTXcomm.jar file and dll files to the lib directory of your project
  2. Under Project | Properties | Java Build Path | Libraries
  3. click Add JARs... Button
  4. Select the RXTXComm.jar from lib directory
  5. Jar should now be in the Build Path
  6. expand the RXTXComm.jar entry in the list and select "Native Library Location"
  7. Select the project lib directory and apply

Be careful when using System.in.read() and rxtx in win32; It can trip across a known JRE deadlock  (http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4809647 ) bug

Deploying JAVA with RXTX

From Rxtx

<!-- start content -->

Saving the RXTX jar-file and DLL in the JRE is not optimal if you indend to distribute your JAVA application and do not want to bundle it with a customized JRE.

[edit ]

Windows

For Windows, the Janel  (http://sourceforge.net/projects/janel ) JAVA launcher can be used.

  • create a directory for your application, and save the Janel executable and lap-file to it;
  • create a subfolder named "classes" and save the jar-file of your application as well as the RXTXcomm.jar in it;
  • create a subfolder named "lib" and save the rxtxSerial.dll to it;
  • make the following entries in the lap-file:
    • "-Djava.class.path=;${SELF_HOME}\classes\YourApp.jar;${SELF_HOME}\classes\RXTXcomm.jar;"
    • "janel.main.class=YourAppMainClass"
    • "janel.library.path.dir=${SELF_HOME}\lib"
[edit ]

unjar

It should be possible to unjar the RXTXcomm.jar and then add the .classes into YourApp.jar. This should eliminate the secon .jar and the need to modify java.class.path. Please clarify the steps if you pursue this.

I was successful in doing this on my Mac. First, unzip the RXTX.jar file. I didn't try unjar, as unzip worked fine. Then, place the gnu folder in the same folder as your application jar file. Execute the following command from the command line:

jar uvf Your_Apps_Name_here.jar gnu

to update the jar with the contents of the classes in the gnu folder. Your app will now run by double clicking on it, provided the .dll or .jnilib library is in the same folder. I would love to include the OS specific libraries in the jar for a single, monolithic package, but after researching this on the web, it is apparently very difficult at best and probably impossible.

[edit ]

Other Platforms

It would be great if someone with access to Linux boxes could provide us with similar recipes for their operating system.

The above unjar instructions and subsequent jars worked fine for my app on both Mac and Windows machines.

<!-- Saved in parser cache with key rxtxdb:pcache:idhash:945-1!1!0!1!0!1!0!!en and timestamp 20070424145924 -->
Wonderful: 推荐rxtx包,可以完美替代javax.comm,目前javax.comm在windows下的开发维护已经停止了,rxtx的旧版本支持在 javax.comm-win32-2.0基础上的扩展,rxtx新版本支持对javax.comm的覆盖式支持,也就是说原来用javax.comm的 把所有import javax.comm.*改成import gnu.io.*就可以正常使用了,其他只须相关的dll文件,不用properties文件,支持的端口类型也明显多了很多,请看: http://rxtx.org/
两个库都可以在Eclipse下随项目跑,相信在纯项目中也可以做到。
分享到:
评论

相关推荐

    javax.comm jar包

    javax.comm 是一个Java API,它提供了与串行通信硬件...在使用过程中,需要考虑兼容性和替代方案,因为现代的Java开发可能更多地依赖于如RXTX、JSerialComm这样的第三方库,它们提供了更现代的API和更好的跨平台支持。

    java 串口通信 包 comm.jar

    对于现代的Java应用,开发者可能会转向第三方库,如RXTX或JSerialComm,这些库提供了更广泛的支持和更好的跨平台兼容性。 总的来说,`comm.jar`是Java实现串口通信的基础,虽然存在一些限制,但在许多旧项目或特定...

    RXTX 2.0 for use WITH Sun's CommAPI (namespace javax.comm)

    这个库是针对Sun Microsystems的CommAPI(javax.comm命名空间)的一个扩展和替代,使得开发者可以在Java应用程序中方便地访问串行端口。RXTX 2.0 版本是对该库的重大更新,它提升了性能,增加了新的功能,并修复了前...

    javacomm20-win32.rar_JAVA comm不_Java 串口通信_javacomm20_javacomm20-

    `javacomm20-win32.rar`这个压缩包包含了一个适用于Windows系统的Java串口通信组件,它允许Java应用程序通过串行端口与外部设备进行数据交换。`javacomm20`是这个库的版本号,暗示这是一个较早的实现,可能针对JDK ...

    JAVA串口COMM包

    Java串口通信(JAVA串口COMM包)是Java平台中用于实现串行通信的一个关键工具,主要用于设备间的低级通信,如与打印机、Modem、GPS等硬件设备交互。这个包由Java Micro Edition (Java ME) 提供,使得开发者能够在...

    JAR(comm和rxtx)

    6. **兼容性和测试**:由于javax.comm的过时和rxtx的跨平台特性,开发者需要在目标系统上进行充分的测试,确保通信功能在所有支持的环境中都能正常工作。 综上所述,这个压缩包提供的是两个关键的Java通信库,适用...

    javacomm20-win32.zip_j2me_java comm w_javacomm20 win32_javacomm2

    总之,Java Comm API为Java开发者提供了一种跨平台的方式来实现串口通信,尤其在J2ME环境下,对于嵌入式设备和物联网应用来说非常重要。通过这个库,开发者可以编写应用程序,实现与硬件设备的交互,例如读写传感器...

    Java+Communication+API.rar_comm2.0.3.zip_comm3.0_u1_linux.zip_ja

    总的来说,Java Comm API为Java开发者提供了一种跨平台的途径,去与硬件设备进行通信,特别是在需要控制串行设备或实现自动化系统时,它是非常有用的工具。虽然它可能需要更多的配置和对底层硬件的理解,但其标准化...

    Java串口开发包 RXTX.7z

    它实现了Java Communications API(javax.comm),使得开发者可以使用标准的API进行串口操作。 2. **SerialPort**: 这个类代表串行端口,提供了打开、关闭、读取、写入数据以及配置串口参数的方法。开发者可以通过...

    java-Comm-API.rar_comm

    4. **兼容性问题**: 由于Java Comm API依赖于操作系统提供的底层驱动,因此它的跨平台性受到一定限制。在Windows、Linux和Mac OS上,可能需要安装额外的驱动程序或库才能使Java Comm API正常工作。 5. **应用领域**...

    JavaComm说明

    5. **跨平台兼容**:尽管JavaComm在不同操作系统上可能需要不同的驱动支持,但其API设计是统一的,这使得编写跨平台的通信程序变得容易。 **使用JavaComm的注意事项**: 1. **驱动安装**:在某些平台上,可能需要...

    java comm api.rar

    Java通信API(Comm API)是Java平台上的一个接口,用于实现与硬件设备,特别是串行和并行端口的通信。这个API使得开发者能够用Java编写应用程序,与各种硬件设备进行交互,比如打印机、调制解调器或者自定义的硬件...

    java-rxtx串口通信读取电子秤数据全源码包win7x64

    RXTX是一个跨平台的Java库,支持串行(Serial)和并行(Parallel)通信。它提供了一组与Java标准的`javax.comm`包相类似的API,但功能更强大,兼容性更好,尤其是在Linux和Mac OS X等非Windows平台上。在Windows系统...

    rxtx-2.1-7-bins-r2.zip_RXTX-2.1-7_Rxtx.zip_rxtx_smpp_短信协议 smpp

    5. **兼容性**:RXTX库兼容Java串行接口规范,可以与Java Communications API (javax.comm)无缝协作。 SMPP(Short Message Peer-to-Peer)协议,是专为短信服务设计的一种应用层协议,常用于短信网关。它允许服务...

    Java串口通信编程指南.doc

    此外,开源项目Rxtx提供了跨平台的串口通信解决方案,但本文将重点介绍如何在Windows平台下使用Java Communication API进行串口通信。 ### 一、前期准备 #### 1.1 下载Java Communication包 Java Communication包...

    java通过com口采集读取modbus数据驱动程序

    然而,需要注意的是,`javax.comm`库在Java 6之后不再维护,因此可能需要寻找替代方案,如RXTX库,这是一个开源的、跨平台的串行通信API,支持Windows、Linux和Mac OS X等操作系统。 接下来,你需要理解Modbus协议...

    javacomm20-win32.zip

    这些接口和类为Java应用程序提供了一个标准的、跨平台的方式来控制串行和并行通信。 2. **Platform-specific drivers**: Java Comm API依赖于特定操作系统的驱动程序来实现实际的串行通信。对于Windows平台,这个...

    精伦设备iDR210/iDR200 java实现

    Java提供了多种方式来实现设备通信,如使用Java Native Interface (JNI) 调用本地库,或者利用Java的串口通信库如RXTX或javax.comm来处理串口数据。对于精伦设备,可能需要通过特定的通信协议,如TCP/IP或串行接口...

    Java Serial Communication

    RXTX提供了一个与`javax.comm`兼容的API,支持跨平台的串行通信。要在Java项目中使用RXTX,你需要下载对应的JAR文件并将其添加到项目的类路径中。 接下来,我们来看看如何设置和使用串行端口。首先,我们需要获取...

    java串口资源包win+linux

    SUN公司在1998年发布的Java串口API提供了跨平台的串行端口访问功能。这个API包含在`comm2.0.jar`和`comm3.0.jar`两个版本中,分别适用于不同的操作系统。其中,`comm2.0.jar`是早期版本,主要针对Windows环境;而`...

Global site tag (gtag.js) - Google Analytics