天天看點

java使用rxtx序列槽通信配置及簡單示例

java使用rxtx序列槽通信配置及簡單示例

1下載下傳

         官方位址:http://rxtx.qbang.org/wiki/index.php/Download,官方下載下傳位址中有版本和類型選擇,分window和linux等,根據需要下載下傳。

         fizzed網下載下傳位址:http://fizzed.com/oss/rxtx-for-java該資源下載下傳位址網絡比官網通暢,其中也有各個版本和類型的選擇

2配置

         将下載下傳到zip解壓,取其中rxtxSerial.dll和 RXTXcomm.jar 檔案,拷貝到如下目錄中。%JAVA_HOME%表示jdk的安裝根目錄

                   a.複制rxtxSerial.dll 到%JAVA_HOME%\jre7/bin/

                   b.複制RXTXcomm.jar 到%JAVA_HOME% \jre7/lib/ext/

3 簡單代碼示例

package com.supre.idisk.util;

import java.io.IOException;
import java.io.OutputStream;
import javassist.bytecode.ByteArray;
import gnu.io.CommPortIdentifier;
import gnu.io.NoSuchPortException;
import gnu.io.PortInUseException;
import gnu.io.SerialPort;
import gnu.io.UnsupportedCommOperationException;

public class TestRxtx {

	public static final byte[] init = new byte[] { 0x1B, 0x40 };
	public static final byte[] clean = new byte[] { 0x0C };
	public static final byte[] pre_display = new byte[] { 0x1B, 0x51, 0x41 };
	public static final byte[] post_display = new byte[] { 0x0D };

	public static void displayCustomerScreen(String data, byte[] mode) {
		try {
			CommPortIdentifier portIdentifier = CommPortIdentifier.getPortIdentifier("COM2"); //序列槽号
			SerialPort serialPort = (SerialPort) portIdentifier.open("test",5000); //使用者  和 最大響應時長(ms)
			serialPort.setSerialPortParams(115200,  //波特率
					SerialPort.DATABITS_8, 			//校驗位
					SerialPort.STOPBITS_1, 			//資料位
					SerialPort.PARITY_NONE);		//停止位
			serialPort.setFlowControlMode(SerialPort.FLOWCONTROL_NONE);			
			try {
				OutputStream outputStream = serialPort.getOutputStream();
				if (mode != null) {
					outputStream.write(mode);
				}
				if (data != null) {
					outputStream.write(pre_display);
					outputStream.write(data.getBytes());
					outputStream.write(post_display);
				}
				outputStream.flush();
				outputStream.close();
			} catch (IOException e) {
				e.printStackTrace();
			} finally {
				serialPort.close();
			}
		} catch (NoSuchPortException e) {
			e.printStackTrace();
		} catch (PortInUseException e) {
			e.printStackTrace();
		} catch (UnsupportedCommOperationException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		displayCustomerScreen(null,"abffff0000010d0a".getBytes());
	}
}
           

參考博文: http://my.oschina.net/baishi/blog/170014