像数据库那样在finally后加上关闭行不?

解决方案 »

  1.   

    java中串口的问题不懂,原来用汇编的时候曾经写过,可惜现在忘了,:(
    红脸中,up一下~!
      

  2.   

    /*
     * @(#)SimpleWrite.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.*;
    import java.util.*;
    import javax.comm.*;public class Dial_up implements SerialPortEventListener{
        static Enumeration portList;
        static CommPortIdentifier portId;
        static String messageString = "Hello, world!\n";
        static SerialPort serialPort;
        static OutputStream outputStream;
        static InputStream inputStream;    public static void main(String[] args) {
            portList = CommPortIdentifier.getPortIdentifiers();        while (portList.hasMoreElements()) {
                portId = (CommPortIdentifier) portList.nextElement();
                if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
                    if (portId.getName().equals("COM1")) {
                    //if (portId.getName().equals("/dev/term/a")) {
                        try {
                            serialPort = (SerialPort)
                                portId.open("SimpleWriteApp", 2000);
                        } catch (PortInUseException e) {}                    try {
                            outputStream = serialPort.getOutputStream();
                        } catch (IOException e) {}                   try {
                         inputStream = serialPort.getInputStream();
                       } catch (IOException e) {}                    try {
                            serialPort.setSerialPortParams(9600,
                                SerialPort.DATABITS_8,
                                SerialPort.STOPBITS_1,
                                SerialPort.PARITY_NONE);
                        } catch (UnsupportedCommOperationException e) {}                    try {
                           serialPort.addEventListener(new SerialListener1());
                        } catch (TooManyListenersException e) {}
                        serialPort.notifyOnDataAvailable(true);                    try {
                            outputStream.write(messageString.getBytes());
                        } catch (IOException e) {}
                    }
                }//end of if COM1
            }//end of while
        }//end of main    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;
            }
        }
    }//end of class
      

  3.   

    wyhgg(石头),你这读取没问题,但是你是否考虑到在这里出错呢,
     serialPort.setSerialPortParams(9600,
                                SerialPort.DATABITS_8,
                                SerialPort.STOPBITS_1,
                                SerialPort.PARITY_NONE);
    这里出错后,串口将一直处于开的状态