Ubuntu 系统下java rxtx 开发串口通讯程序
2013-10-30 17:41
483 查看
最近做了Ubuntu系统下关于Java Rxtx 串口开发的项目,对于Rxtx有一些经验和大家分享一下。 获取系统可用串口,可以设置屏蔽掉ttyUSB0-ttyUSB3(因为可能被系统占用,也可以不屏蔽).开发主要针对USB-SerialPort,直接是串口的话,将ttyUSB修改为ttyS。
进行监听获取到的需要通讯的串口,其中ttyUSB为需要打开的串口/dev/ttyUSB(在windows下使用,只要将ttyUSB换成COM)。
打开串口后,就可以通过串口和串口设备进行通讯了。
若要进行串口写操作,使用SerialOutputStream。
刚开始学着写博客,写的不好,请大家谅解哈。
/** * 列出可用串口列表
* @return */ public String getAvailableSerialPortsName() { String ttyUSB = null; @SuppressWarnings("rawtypes") Enumeration thePorts = CommPortIdentifier.getPortIdentifiers(); while (thePorts.hasMoreElements()) { CommPortIdentifier com = (CommPortIdentifier) thePorts.nextElement(); switch (com.getPortType()) { case CommPortIdentifier.PORT_SERIAL: CommPort thePort = null; try {//过滤COM1-3 thePort = com.open("CommUtil", 2000); if (!Pattern.compile("ttyUSB[0-3]\\b").matcher(com.getName()).matches()) { ttyUSB = com.getName(); } } catch (PortInUseException e) { e.printStackTrace(); } catch (Exception e) { System.out.println("Failed to open port " + com.getName()); } finally { if (thePort != null) { thePort.close(); } } } } return ttyUSB; }
进行监听获取到的需要通讯的串口,其中ttyUSB为需要打开的串口/dev/ttyUSB(在windows下使用,只要将ttyUSB换成COM)。
/** 检测系统中可用的通讯端口类 */ static CommPortIdentifier portId; /** Enumeration 为枚举型类,在java.util中 */ @SuppressWarnings("rawtypes") static Enumeration portList; InputStream inputStream; /** 声明RS-232串行端口的成员变量 */ SerialPort serialPort; OutputStream outputStream; /** * 点击按扭所触发的事件:打开串口,并监听串口.
* @author Luckyion
*/
public void actionPerformed(String ttyUSB) { /**获取系统中所有的通讯端口 */ portList=CommPortIdentifier.getPortIdentifiers(); /** 用循环结构找出串口 */ while (portList.hasMoreElements()){ /**强制转换为通讯端口类型*/ portId=(CommPortIdentifier)portList.nextElement(); if(portId.getPortType() == CommPortIdentifier.PORT_SERIAL){ //USB串口1 if (portId.getName().equals(ttyUSB)) { try { serialPort = (SerialPort) portId.open("ReadComm", 2000); /**设置串口监听器*/ serialPort.addEventListener(this); /** 侦听到串口有数据,触发串口事件*/ serialPort.notifyOnDataAvailable(true); } catch (PortInUseException e) { e.printStackTrace(); } catch (TooManyListenersException e) { e.printStackTrace(); } } //if end } //if end } //while end } //actionPerformed() end
打开串口后,就可以通过串口和串口设备进行通讯了。
/** * 串口监听器触发的事件,设置串口通讯参数,读取数据 * @author Luckyion */ public void serialEvent(SerialPortEvent event) { /**设置串口通讯参数:波特率、数据位、停止位、奇偶校验*/ try { serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); } catch (UnsupportedCommOperationException e) { e.printStackTrace(); } try { inputStream = serialPort.getInputStream(); } catch (IOException e) { e.printStackTrace(); } try { switch(event.getEventType()) { case SerialPortEvent.BI: case SerialPortEvent.OE: case SerialPortEvent.FE: case SerialPortEvent.PE: case SerialPortEvent.CD: case SerialPortEvent.CTS: case SerialPortEvent.DSR: case SerialPortEvent.RI: case SerialPortEvent.OUTPUT_BUFFER_EMPTY: break; case SerialPortEvent.DATA_AVAILABLE: /** 从线路上读取数据流 */ //String bytess=""; while (inputStream.available() > 0) { int numBytes = inputStream.read(); } //while end } } catch (IOException e) { e.printStackTrace(); } }
若要进行串口写操作,使用SerialOutputStream。
/** * 写入串口数据 * @author Luckyion */ protected void writes(byte[] b){ try { outputStream = serialPort.getOutputStream(); outputStream.write(b); outputStream.flush(); } catch (IOException e) { e.printStackTrace(); } }
刚开始学着写博客,写的不好,请大家谅解哈。
相关文章推荐
- Ubuntu系统下使用rxtx开发串口程序
- ubuntu14.04,安装JDK1.8(JAVA程序需要的开发、运行环境)
- Linux系统下开发或者运行java程序
- JAVA开发系统托盘程序
- 通用权限管理系统多语言开发接口 - java,php 调用接口程序,多业务子系统集成
- 要编写一个程序,控制串口通讯,java里面有...
- 自动蓄水系统 java小程序(简单小插件开发)
- Linux系统下开发java程序
- 利用Java实现串口全双工通讯-Java基础-Java-编程开发
- 64位机器使用java开发串口程序心得
- 搭建一个开发Predix软件的Ubuntu 系统(3)配置Java开发环境
- Ubuntu系统配置Java开发环境
- 使用JAVA开发系统托盘程序
- Java程序与RSR232串口通讯小练手
- ubuntu系统下eclipse配置hadoop开发环境并运行wordcount程序
- ubuntu系统下eclipse配置hadoop开发环境并运行wordcount程序
- Java使用开源Rxtx实现串口通讯(串口开发)
- Java使用开源Rxtx实现串口通讯(串口开发)
- [置顶] JAVA串口通讯程序
- 使用JAVA开发系统托盘程序