RXTX for JAVA 串口通信

RXTX 的下载可以到官网或者Fizzed,官网发现并没有64位的支持,但是在Fizzed中找到的2.2版的64,32的windows和Linux版本http://fizzed.com/oss/rxtx-for-java

1.windows下的串口调试
将rxtxParallel.dll、rxtxSerial.dll拷贝到%JAVA_HOME%安装目录bin目录下
将rxtxParallel.dll、rxtxSerial.dll拷贝到%JAVA_HOME%安装目录jre/bin目录下(eclipse开发时调用,减少麻烦)
将RXTXcomm.jar 拷贝到%JAVA_HOME%\jre\lib\ext\RXTXcomm.jar(开发时直接导入)

2.Linux下的串口调试
首先确定Linux处理器型号,对应选择RXTX的Linux版本。
如处理器为i386,则将Linux i686版本中的两个os文件复制到系统%JAVA_HOME%/jre/lib/i386(即JDK目录中的系统文件夹)
将RXTXcomm.jar拷贝到%JAVA_HOME%/jre/lib/ext文件夹
代码不变,即可运行使用。

在实际开发中,由于使用树莓派测试,树莓派使用Raspbian系统(使用uname -a命令可查看系统内核信息)
Linux raspberrypi 3.12.28+ #709 PREEMPT Mon Sep 8 15:28:00 BST 2014 armv6l GNU/Linux
处理器型号armv6l,在下载的RXTX工具包中并无此种系统版本,在实际测试中,所找到的RXTX工具包也都不能使程序运行,均报出系统位数不符。

又找到另一种处理方法,可直接在系统中make编译RXTX源码安装

最新的RXTX稳定版本是rxtx 2.1-7r2。首先用wget获取源码包并解压

cd /tmp
wget http://rxtx.qbang.org/pub/rxtx/rxtx-2.1-7r2.zip
unzip rxtx-2.1-7r2.zip

如果直接MAKE编译安装,可能会遇到以下两种错误:
错误1:/tmp/rxtx-2.1-7r2/./src/I2CImp.c:135: error: ‘UTS_RELEASE’ undeclared (first use in this function)
这是由于version.h中缺少’UTS_RELEASE’信息,需要手工添加。先获取当前系统的版本信息:

uname -r

然后在/usr/include/Linux/version.h中添加

#define UTS_RELEASE "3.10.24+"

3.10.24+为上一步中获得的版本号
错误2:libtool: install: armv6l-unknown-linux-gnu/librxtxRS485.la’ is not a directory
这个错误会出现在JDK1.6及以上的运行环境下,需要对configure文件进行修改。在configure文件中找到

1.2*|1.3*|1.4*|1.5*

这一行,在后边添加上当前JDK的版本号即可,如

1.2*|1.3*|1.4*|1.5*|1.6*|1.7*|1.8*

完成以上两项修改后,就可以正常编译安装了。如果看到 Libraries have been installed in:/usr/lib/jvm/jdk-7-Oracle-armhf/jre/lib/arm 则说明RXTX安装已经成功。
之后执行

./configure
make
make install

注意:可能会有权限不足的情况,需要chmod 777 test.c操作

至此使用RXTX框架的串口编程代码就可以在树莓派使用了。

(这里需要注意的是,在Linux系统中,大部分的串口名称为/dev/ttyS*,但再特殊环境下如本次使用的raspberrypi,使用RXTX方法获得串口集合是不成功的,原因是RXTX本身源码问题,找了好久的原因,终于在RXTX官网上找到了解释:

Please note that on Ubuntu 11.04, the Arduino Uno and possibly others are recognised as /dev/ttyACMxx . The RXTX library only searches through /dev/ttySxx, so you need to make symlinks if your distro does the same, so for example ln -s /dev/ttyACM0 /dev/ttyS00 .

即RXTX本身支持的Linux串口搜索只限制为/dev/ttyS*等,其他名称的并不能支持,而raspberrypi中的串口名称为/dev/ttyACM*,故无法找到系统串口。这种情况下有两种解决方案:
1.修改源码:参考官网故障排除http://rxtx.qbang.org/wiki/index.php/Trouble_shooting(中间部分)
源码RXTXCommDriver.java文件中518行开始,为Linux系统环境下的串口名称查找,添加所需串口名即可(如ttyACM)(此种方法需要重新编译安装)
2.将串口文件进行映射,即使用命令 ln -s /dev/ttyACM0 /dev/ttyS00,即可找到/dev/ttyS00映射串口,也就对应了/dev/ttyACM0实际串口。

时间: 2024-10-27 14:19:58

RXTX for JAVA 串口通信的相关文章

java串口通信

java串口通信API说明 java串口通信 2008/09/22 20:24 java串口通信API说明 java串口通信    Java提供了 CommunicationAPI(包含于javax.comm包中)用于通过与机器无关的方式,控制各种外部设备.Communications API,是标准的Java的扩展部分,它在JavaAPI中是没有附带的.因此,必须先在SUN公司网站的Java站点(www.java.sun.com)上下载这个扩展类库. 1.1Communications API

Java串口通信读取浮点型数据

问题描述 Java串口通信读取浮点型数据 怎么将如下位机中的数据:如温度读取并显示,大神们有具体的例子吗 解决方案 这个要取决于你下位机是用的什么方式通讯的,它的通信协议.基本的思路是读取串口数据,然后根据协议对得到缓冲区的字节数组进行解析. 参考:http://blog.csdn.net/wssiqi/article/details/14107341 解决方案二: java 串口通信Java串口通信简介

java-求大神帮忙,在Java串口通信中设置DTR_CONTROL_DISABLE如何实现?

问题描述 求大神帮忙,在Java串口通信中设置DTR_CONTROL_DISABLE如何实现? 写了简单一个串口调试助手的程序,用来与STM32单片机通信,但是 DCB.fDtrControl = DTR_CONTROL_ENABLE的参数不对,使用下载的调试助手可以实现通信其DCB.fDtrControl值为DTR_CONTROL_DISABLE,自己写的却是DTR_CONTROL_ENABLE?是这个原因影响通讯了吗?如果是要如何改进? 解决方案 http://gqdy365.iteye.c

java 串口通信

/** *//****************************************** * 程序文件名称:SendComm.java * 功能:从串行口COM1中发送数据 ******************************************/ import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.*; import javax.comm.*; class S_Fra

串口通信-Java使用rxtx进行多串口开发问题

问题描述 Java使用rxtx进行多串口开发问题 # 我的项目第一版中使用RXTX库进行串口操作(同一时间只涉及单个串口在工作),都没出现过问题. # 现在项目需要,接入多个串口同时工作,出现了JVM Crash的问题. 现象描述: 程序使用rxtx.jar进行串口通信开发,同时进程多个串口双向通信, 假设使用到的串口名称为COM1和COM2 情况1: com1开启,com2开启-->OK com1关闭-->OK com1第二次开启----->奔溃,提示见附1 情况2: com1开启,c

使用Java实现串口通信_java

1.介绍 使用Java实现的串口通信程序,支持十六进制数据的发送与接收. 源码下载地址:http://download.csdn.net/detail/kong_gu_you_lan/9611343 效果图如下: 2.RXTXcomm Java串口通信依赖的jar包RXTXcomm.jar 下载地址:http://download.csdn.net/detail/kong_gu_you_lan/9611334 内含32位与64位版本 使用方法: 拷贝 RXTXcomm.jar 到 JAVA_HO

java 串口开发包comm.jar在java的官网哪个页面可以下载

问题描述 java 串口开发包comm.jar在java的官网哪个页面可以下载 java 串口开发包comm.jar在java的官网哪个页面可以下载 解决方案 RXTX for Java 也是java串口通信的包 下载地址 http://fizzed.com/oss/rxtx-for-java 解决方案二: java comm.jar (java 串口编程)---------------------- 解决方案三: http://download.csdn.net/detail/kongquex

JAVA编程中串口通信的方法介绍

以前经常用C语言操作串口,实现一些发送接收之类的小功能,最近项目中也用到了串口通信,不过语言变成了Java,这个搞起来略蛋疼. Java说起来就是各种库各种引用,所以得到某些需求先google搜一把~~比如之前搞半天的读取网页内容,自己边琢磨边写,又是 charset,又是proxy,又是什么browsertype的,晕头转向,最后拿Jsoup一会儿就搞定了--不过使用之前要充分考虑可扩展性和 API的丰富程度,不然后面程序体积变大集成起来很蛋疼.好了废话不说,讲讲串口的问题-- 总述 Java

串口通信-Java通过得到的Socket流向串口发送数据

问题描述 Java通过得到的Socket流向串口发送数据 我是一个菜鸟,最近学习Java ,写了个向串口发送数据的代码,有点问题,希望各位大神给指点指点 package server; import gnu.io.CommPortIdentifier; import gnu.io.PortInUseException; import gnu.io.SerialPort; import gnu.io.SerialPortEvent; import gnu.io.SerialPortEventLis