您现在的位置是:首页 >

rs232串口定义 通过JAVA与串口(RS232)通信实例

火烧 2022-09-07 18:52:57 1091
通过JAVA与串口 RS232 通信实例   最近了解到的需求是需要需激光打刻机进行(RS )串口通信 这里使用的是RXTX开源包实现的   之前并没有用java做过串口通信 而且这方面资料不是很多

通过JAVA与串口(RS232)通信实例  

  最近了解到的需求是需要需激光打刻机进行(RS )串口通信 这里使用的是RXTX开源包实现的

  之前并没有用java做过串口通信 而且这方面资料不是很多

  项目实际应用中可能会采用VB开发(这个我就不会了)

  只不过用java尝试一下 记个笔记 希望可以对相关开发用些帮助

  下面是实现代码

  Java代码

  package test;

  import java io IOException;

  import java io InputStream;

  import java io InputStreamReader;

  import java io OutputStream;

  import java util Date;

  import java util Enumeration;

  import java util TooManyListenersException;

  import gnu io CommPortIdentifier;

  import gnu io PortInUseException;

rs232串口定义 通过JAVA与串口(RS232)通信实例

  import gnu io SerialPort;

  import gnu io SerialPortEvent;

  import gnu io SerialPortEventListener;

  import gnu io UnsupportedCommOperationException;

  public class CommUtil implements SerialPortEventListener {

  InputStream inputStream; // 从串口来的输入流

  OutputStream outputStream;// 向串口输出的流

  SerialPort serialPort; // 串口的引用

  CommPortIdentifier portId;

  public CommUtil(Enumeration portList String name) {

  while (portList hasMoreElements()) {

  CommPortIdentifier temp = (CommPortIdentifier) portList nextElement();

  if (temp getPortType() == CommPortIdentifier PORT_SERIAL) {// 判断如果端口类型是串口

  if (temp getName() equals(name)) { // 判断如果端口已经启动就连接

  portId = temp;

  }

  }

  }

  try {

  serialPort = (SerialPort) portId open( My +name );

  } catch (PortInUseException e) {

  }

  try {

  inputStream = serialPort getInputStream();

  outputStream = serialPort getOutputStream();

  } catch (IOException e) {

  }

  try {

  serialPort addEventListener(this); // 给当前串口天加一个监听器

  } catch (TooManyListenersException e) {

  }

  serialPort notifyOnDataAvailable(true); // 当有数据时通知

  try {

  serialPort setSerialPortParams( SerialPort DATABITS_ // 设置串口读写参数

  SerialPort STOPBITS_ SerialPort PARITY_NONE);

  } catch (UnsupportedCommOperationException e) {

  }

  }

  public void serialEvent(SerialPortEvent event) {

  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:// 当有可用数据时读取数据 并且给串口返回数据

  byte[] readBuffer = new byte[ ];

  try {

  while (inputStream available() > ) {

  System out println(inputStream available());

  int numBytes = inputStream read(readBuffer);

  System out println(numBytes);

  }

  System out println(new String(readBuffer) trim());

  } catch (IOException e) {

  e printStackTrace();

  }

  break;

  }

  }

  public void send(String content){

  try {

  outputStream write(content getBytes());

  } catch (IOException e) {

  e printStackTrace();

  }

  }

  public void ClosePort() {

  if (serialPort != null) {

  serialPort close();

  }

  }

  }

  测试

  Java代码

  package test;

  import gnu io CommPortIdentifier;

  import java util Enumeration;

  public class Test {

  public static void main(String[] args) throws InterruptedException {

  Enumeration portList = CommPortIdentifier getPortIdentifiers(); //得到当前连接上的端口

  CommUtil m = new CommUtil(portList );

  int i = ;

  while(i< )

  {

  Thread sleep( );

  m send( hello );

  i++;

  }

  m ClosePort();

  }

lishixinzhi/Article/program/Java/hx/201311/25965  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码