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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章