总结下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的官方解释:
解决方法就是创建软连接, 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