天天看点

centos6.5系统 使用rxtx串口转USB收数据

1、centos6.5 x64位系统,内核版本是2.6.32-696(安装时内核版本是2.6.32-432,需要升级),串口转usb线插上以后不可直接使用,需手动安装驱动;

安装驱动前

a. 首先要确认是否已安装kernel-devel(内核开发包,make命令):在/usr/src/kernels/

一定要注意系统内核版本和kernel的版本要一致

//安装kernel-devel
#yum install kernel-devel
           

b. 其次要安装gcc:

//gcc安装:
    yum -y install gcc
    yum -y install gcc-c++ 
    yum install make
           

2、安装好驱动以后,再安装minicom,设置好串口号(linux下一般用”/dev/ttyUSB0”)、波特率(波特率不一致可能导致数据乱码或收不到数据)、数据位、校验位和停止位。

先用

dmesg ef|grep pl2303

看串口是否已识别,若没有的话,用

modprobe pl2303

执行命令,确认已识别串口后用

minicom

看是否能收到数据。

3、在程序中使用rxtxcomm:

查看cpu型号,从下载的组件中找到对应的.so文件

该组件下载地址:http://rxtx.qbang.org/pub/rxtx/rxtx-2.2pre2-bins.zip

centos6.5系统 使用rxtx串口转USB收数据

我们已经把jdk目录命名为 JAVAHOME,把下载的组件中librxtxParallel.so和librxtxSerial.so(若在相应文件夹中只有一个文件就拷贝一个文件)拷贝至/usr/lib下,把RXTXcomm.jar拷贝至 JAVA_HOME/jre/lib/ext下。

**分隔符

问题**

直接在命令终端里读取数据正常,但是在使用这个组件的时候,读取到数据时eclipse会报错:

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f85ff6f1462, pid=12801, tid=140213492819712
#
# JRE version: Java(TM) SE Runtime Environment (7.0_80-b15) (build 1.7.0_80-b15)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (24.80-b11 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C  [librxtxSerial.so+0x6462]  read_byte_array+0x52
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

---------------  T H R E A D  ---------------

Current thread ():  JavaThread "Thread-0" [_thread_in_native, id=, stack(,)]

siginfo:si_signo=SIGSEGV: si_errno=, si_code= (SEGV_MAPERR), si_addr=

Registers:
RAX=, RBX=, RCX=, RDX=
RSP=, RBP=, RSI=, RDI=
R8 =, R9 =, R10=, R11=
R12=, R13=, R14=, R15=
RIP=, EFLAGS=, CSGSFS=, ERR=
  TRAPNO=
           

找了许多种方法均不能解决,最后想到可能是下载的组件有问题,我开始用的是rxtx-2.1.7,替换成上面的rxtx-2.2就不会报错了。

继续阅读