原创 java 串口例程及javacomm

2008-11-23 22:16 4561 5 4 分类: 软件与OS

comm下载地址:


http://llk.media.mit.edu/projects/cricket/software/javaSerial.zip
http://mdubuc.freeshell.org/Jolt/javacomm20-win32.zip  (带例程)


组件配置:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


Communications API包含三个文件,comm.jarjavax.comm.propertieswin32com.dll,将三个文件分别保存到如下路径:(<JDK_HOME>代表是JDK的根目录




<JDK_HOME>\jre\bin\win32com.dll


<JDK_HOME>\jre\lib\javax.comm.properties


<JDK_HOME>\jre\lib\comm.jar


 


http://www.java2s.com/Code/JavaAPI/javax.comm/SerialPortSTOPBITS1.htm



SerialPort.STOPBITS_1




/*
 * @(#)SimpleRead.java  1.12 98/06/25 SMI
 *
 * Copyright (c) 1998 Sun Microsystems, Inc. All Rights Reserved.
 *
 * Sun grants you ("Licensee") a non-exclusive, royalty free, license 
 * to use, modify and redistribute this software in source and binary
 * code form, provided that i) this copyright notice and license appear
 * on all copies of the software; and ii) Licensee does not utilize the
 * software in a manner which is disparaging to Sun.
 *
 * This software is provided "AS IS," without a warranty of any kind.
 * ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
 * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
 * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND
 * ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY
 * LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE
 * SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS
 * BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,
 * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES,
 * HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING
 * OUT OF THE USE OF OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
 *
 * This software is not designed or intended for use in on-line control
 * of aircraft, air traffic, aircraft navigation or aircraft
 * communications; or in the design, construction, operation or
 * maintenance of any nuclear facility. Licensee represents and
 * warrants that it will not use or redistribute the Software for such
 * purposes.
 */

import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.TooManyListenersException;

import javax.comm.CommPortIdentifier;
import javax.comm.PortInUseException;
import javax.comm.SerialPort;
import javax.comm.SerialPortEvent;
import javax.comm.SerialPortEventListener;
import javax.comm.UnsupportedCommOperationException;

public class MainClass implements Runnable, SerialPortEventListener {
  static CommPortIdentifier portId;

  static Enumeration portList;

  InputStream inputStream;

  SerialPort serialPort;

  Thread readThread;

  public static void main(String[] args) {
    portList = CommPortIdentifier.getPortIdentifiers();

    while (portList.hasMoreElements()) {
      portId = (CommPortIdentifierportList.nextElement();
      if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
        // if (portId.getName().equals("COM1")) {
        if (portId.getName().equals("/dev/term/a")) {
          MainClass reader = new MainClass();
        }
      }
    }
  }

  public MainClass() {
    try {
      serialPort = (SerialPortportId.open("MainClassApp"2000);
    catch (PortInUseException e) {
    }
    try {
      inputStream = serialPort.getInputStream();
    catch (IOException e) {
    }
    try {
      serialPort.addEventListener(this);
    catch (TooManyListenersException e) {
    }
    serialPort.notifyOnDataAvailable(true);
    try {
      serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1,
          SerialPort.PARITY_NONE);
    catch (UnsupportedCommOperationException e) {
    }
    readThread = new Thread(this);
    readThread.start();
  }

  public void run() {
    try {
      Thread.sleep(20000);
    catch (InterruptedException 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[20];

      try {
        while (inputStream.available() 0) {
          int numBytes = inputStream.read(readBuffer);
        }
        System.out.print(new String(readBuffer));
      catch (IOException e) {
      }
      break;
    }
  }
}

           
       
Related examples in the same category

1. SerialPort.PARITY_NONE
2. SerialPort.DATABITS_8
3. SerialPort.addEventListener(SerialPortEventListener arg0)
4. SerialPort: notifyOnDataAvailable(boolean arg0)
5. SerialPort: setSerialPortParams(int arg0, int arg1, int arg2, int arg3)

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
5
关闭 站长推荐上一条 /3 下一条