Ubuntu-Java-SerialPort-RXTX

来源:互联网 发布:java程序设计流程图 编辑:程序博客网 时间:2024/06/01 07:12

总结下linux系统下使用串口扩展卡(moxa)及串口开发吧

1.首先安装串口扩展卡的驱动。貌似一般串口卡支持的linux内核的版本都比较老,是2.X和3.X左右的版本;所以需要找到较新的驱动(去串口卡牌子的官网上找,实在不行就找厂商的售后,我就是通过找技术支持获得的最新的驱动)。获得驱动后,一般都有安装文档,按照文档一步步安装,大致如下:

a. #tar -zxvf XXX.tgz

b. #make clean; make install

c. #./msmknod(这一步不同串口卡命令不同)

安装驱动完成后, 会显示ttyM0-ttyM7安装成功。可以在/dev/目录下看到串口


2.顺便加入Java安装吧,我是使用的.tar.gz包来安装的。

a. 解压JDK, tar -zxvf jdk-8u60-linux-x64.tar.gz

b. 配置环境变量, 添加以下内容,JAVA_HOME根据实际目录来

EXPORT JAVA_HOME=/java/jdk1.8.0_151

EXPORT JRE_HOME=$JAVA_HOME/jre

EXPORT CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH

EXPORT PATH=$JAVA_HOME/bin:$PATH

c. 执行命令使配置生效: source /etc/profile


3.Java串口编程使用RXTX,RXTX开源包下载地址: http://users.frii.com/jarvi/rxtx/download.html

a. 根据Linux具体的型号, 选择对应的RXTX的Linux版本

b. 将RXTXcomm.jar文件拷贝至$JAVA_HOME/jre/lib/ext

c. 将librxtxSerial.so文件拷贝至/usr/lib/目录下, 或者拷贝至JDK配置的CLASSPATH下也可以(后者未检验)


4. 到此使用RXTX的监听事件方法SerialPortEventListener可以实现串口开发,一般的USB转串口是没有问题的,但是串口扩展卡就不行,原因是RXTX本身获得串口集合是扫描/dev/ttySxx,所以无法识别非/dev/ttySxx的串口,例如:/dev/ttyMI0;摘自http://blog.csdn.net/xiezhiyong3621/article/details/8092150的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 .  

解决方法就是创建软连接, sudo ln -s /dev/ttyMI0 /dev/ttyS0,通过/dev/ttyS0映射到/dev/ttyMI0


5. DEMO两个实例,a-windows下的串口开发, b-ubuntu下的串口开发

a. https://github.com/SmileyWin/RXTX-Demo.git

b. https://github.com/SmileyWin/RXTX-Demo.git


SUCCESS!


参考文献:

1. http://users.frii.com/jarvi/rxtx/download.html

2. http://blog.csdn.net/cheng157507947/article/details/43764623

3. http://blog.csdn.net/xiezhiyong3621/article/details/8092150


P.S.: 在linux版本下最后可能还是无法获取串口号, 还需要给串口权限, chmod 666 /dev/ttyxxx

原创粉丝点击