在RaspberryPi樹莓派上使用RXTX(RXTX的源碼安裝)
Linux 編譯RXTX(JAVA串口開發)源碼
如果為windows
系統,則使用rxtx比較簡單,到http://fizzed.com/oss/rxtx-for-java下載對用的壓縮包.然后將對應的文件拷貝到JDK指定目錄下即可.
rxtxParallel.dll\rxtxSerial.dll
拷貝到$JAVA_HOME\jre\bin
;
RXTXcomm.jar
拷貝到$JAVA_HOME\jre\lib\ext
即可.
樹莓派
在使用RXTX框架時,並未找到與樹莓派系統對應的框架版本。
原因為:
RaspberryPi樹莓派處理器使用的是ARM架構,而一般電腦則為x86或x64架構,均不能適用,故只能在系統中重新編譯安裝RXTX源碼
以下對上面兩篇文章結合自身安裝過程進行整合.
1. 獲取源碼包
cd /tmp wget http://rxtx.qbang.org/pub/rxtx/rxtx-2.1-7r2.zip
unzip rxtx-2.1-7r2.zip
2. 編譯源碼
cd rxtx-2.1-7r2 sudo -i sh ./configure make
make install
3. 編譯過程中可能遇到的問題
錯誤一:
/tmp/rxtx-2.1-7r2/./src/RS485Imp.c:96:25: error: 'UTS_RELEASE' undeclared (first use in this function) if(strcmp(name.release,UTS_RELEASE)!=0)
這是由於 version.h 中缺少 UTS_RELEASE 信息,需要手工添加。先獲取當前系統的版本信息:
uname -r
然后在 /usr/include/linux/version.h 中添加
#define UTS_RELEASE "4.14.34-v7+"
4.14.34-v7+ 為上一步中獲得的版本號.
錯誤二:
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* .
完成以上兩項, make install 成功.
4.安裝成功后,會顯示如下信息
Libraries have been installed in: /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm ..... ----------------------------------------------------------------------
/usr/bin/install -c RXTXcomm.jar /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/ext/
5.驗證安裝目錄文件
root@raspberrypi:/# cd /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm root@raspberrypi:/usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm# ls -l|grep librxtx -rwxr-xr-x 1 root root 70024 May 29 19:24 librxtxI2C-2.1-7.so -rwxr-xr-x 1 root root 857 May 29 19:24 librxtxI2C.la lrwxrwxrwx 1 root root 19 May 29 19:24 librxtxI2C.so -> librxtxI2C-2.1-7.so -rwxr-xr-x 1 root root 47636 May 29 19:24 librxtxParallel-2.1-7.so -rwxr-xr-x 1 root root 887 May 29 19:24 librxtxParallel.la lrwxrwxrwx 1 root root 24 May 29 19:24 librxtxParallel.so -> librxtxParallel-2.1-7.so -rwxr-xr-x 1 root root 71400 May 29 19:24 librxtxRaw-2.1-7.so -rwxr-xr-x 1 root root 857 May 29 19:24 librxtxRaw.la lrwxrwxrwx 1 root root 19 May 29 19:24 librxtxRaw.so -> librxtxRaw-2.1-7.so -rwxr-xr-x 1 root root 70628 May 29 19:24 librxtxRS485-2.1-7.so -rwxr-xr-x 1 root root 869 May 29 19:24 librxtxRS485.la lrwxrwxrwx 1 root root 21 May 29 19:24 librxtxRS485.so -> librxtxRS485-2.1-7.so -rwxr-xr-x 1 root root 166880 May 29 19:24 librxtxSerial-2.1-7.so -rwxr-xr-x 1 root root 875 May 29 19:24 librxtxSerial.la lrwxrwxrwx 1 root root 22 May 29 19:24 librxtxSerial.so -> librxtxSerial-2.1-7.so root@raspberrypi:/usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/arm# cd /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/ext/ root@raspberrypi:/usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/lib/ext# ls -l|grep RXTX -rwxr-xr-x 1 root root 59356 May 29 19:24 RXTXcomm.jar