Java 串口編程

最近在寫java串口編程,網上一搜大多數就是JavaComm 、 RXTX資料;

起初Sun沒有爲Linux提供JavaComm的現實(從2006開始纔有的),導致了免費軟件RxTx庫的開發。

RxTx支持許多平臺而不僅僅是Linux。它可以與JavaComm結合起來使用(RxTx提供了特定硬件驅動),也可以獨立使用

但是在使用的時候發現,我們引用RXTXcomm.jar 或者 comm.jar 但 對於64位和32位系統會引用不同xxx.dll文件,配置起來不方便,最終採用jssc.jar

 

會自動選擇對應的系統,引用相應的配置,一個jar包搞定........


附上個人實例: 啓動串口,關閉

    

	/**
	 * 
	 *  打開串口
	 *  1  載波檢測  DCD(Data Carrier Detect)
	 *	2  接收數據  RXD(Received Data)
	 *	3  發送數據  TXD(Transmit Data)
	 *	4  數據終端準備好  DTR(Data Terminal Ready)
	 *	5  信號地  SG(Signal Ground)
	 *	6  數據準備好  DSR(Data Set Ready)
	 *	7  請求發送  RTS(Request To Send)
	 *	8  清除發送  CTS(Clear To Send)
	 *	9  振鈴提示  RI(Ring Indicator)
	 * 
	 */
	public   void open() {
		serialPort=new SerialPort(_config.comName);
		boolean b;
		try {
			b = serialPort.openPort();
			if(!b) {
				System.out.println("Open " + _config.comName + " failed....");
				return;
			}else{
				System.out.println("Open " + _config.comName + " success......"+_config.comDtr+" RTS:"+_config.comRts);
			}
			serialPort.setParams(_config.getComRate(), _config.getComDataBit(),_config.getComStopBit(), _config.getComParity());
			serialPort.addEventListener(this);
			serialPort.setDTR(_config.comDtr);
			serialPort.setRTS(_config.comRts);
		} catch (SerialPortException e) {
			isError=true;
			message=ErrorLogger.getStackTrace(e);
			_eLogger.Write("串口打開失敗:"+message);
			System.err.println("串口打開失敗:"+message);
		}
	}

	/**
	 *  
	 *  關閉串口
	 * 
	 */
	public void stop() {
		if(null!=serialPort){
			try {
				serialPort.closePort();
			} catch (SerialPortException e) {
				isError=true;
				message=ErrorLogger.getStackTrace(e);
				_eLogger.Write("串口關閉失敗:"+message);
				System.err.println("串口關閉失敗:"+message);
			}
		}
	}

監聽數據 ;  實現 implements     SerialPortEventListener  接口

public  void serialEvent(SerialPortEvent event) {
		if (event.isRXCHAR()) {//If data is available
			if (event.getEventValue() > 0) {
				try {
					byte[] data = serialPort.readBytes(event
							.getEventValue());
					resultStr=new String(data);
					System.out.println("bytes: " + data.length + " Received : "+ resultStr);
				} catch (SerialPortException e) {
					isError=true;
					message=ErrorLogger.getStackTrace(e);
					_eLogger.Write("監聽數據異常:"+message);
					System.err.println("監聽數據異常:"+message);
				}
			}
		} else if (event.isCTS()) {
		} else if (event.isDSR()) {
		}
	}



發佈了14 篇原創文章 · 獲贊 0 · 訪問量 7912
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章