RXTX for JAVA 串口编程实例

最近使用到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(开发时直接导入)

实例下载地址:http://download.csdn.net/detail/cheng157507947/8443255


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源码安装,方法请参考另一篇博文:http://blog.csdn.net/cheng157507947/article/details/44039821

编译过程参考博文:http://blog.csdn.net/cheng157507947/article/details/44040035

至此使用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/ttyS33 .

即RXTX本身支持的Linux串口搜索只限制为 /dev/ttyS*等,其他名称的并不能支持,而 raspberrypi中的串口名称为/dev/ttyAMA*,故无法找到系统串口。这种情况下有两种解决方案:

1.修改源码:参考官网故障排除http://rxtx.qbang.org/wiki/index.php/Trouble_shooting(中间部分)

源码RXTXCommDriver.java文件中518行开始,为Linux系统环境下的串口名称查找,添加所需串口名即可(如ttyAMA)(此种方法需要重新编译安装)

2.将串口文件进行映射,即使用命令 ln -s /dev/ttyAMA0 /dev/ttyS33,即可找到/dev/ttyS33映射串口,也就对应了/dev/ttyAMA0实际串口。

windows,Linux环境下的测试案例已上传:http://download.csdn.net/detail/cheng157507947/8472651

你可能感兴趣的:(java,串口开发)