2011-08-03 146 views
2

我想連接到Serial Port ...但是一旦我第一次打開Serial Port。我無法再打開它,我嘗試申請。這裏是我的代碼:打開和關閉串行端口

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")) { 
       try { 
        serialPort = (SerialPort) 
         portId.open("SimpleWriteApp", 2000); 
       } catch (PortInUseException e) {} 
       try { 
        outputStream = serialPort.getOutputStream(); 
       } catch (IOException e) {} 
       try { 
        serialPort.setSerialPortParams(9600, 
         SerialPort.DATABITS_8, 
         SerialPort.STOPBITS_1, 
         SerialPort.PARITY_NONE); 
       } catch (UnsupportedCommOperationException e) {} 
       try { 
        outputStream.write(messageString.getBytes()); 
       } catch (IOException e) {} 
      } 
     } 
    } 
} 

我想關閉該端口,以便我可以將它用於其他任務。

回答

4

根據Java通信API,你只需要close()您的串行端口對象:

serialPort.close(); 

的close()方法來自SerialPort超類CommPort

1

serialPort.close();爲我工作。在關閉它之前,請小心不要再使用該端口,因爲鎖定文件將寫入/ var/lock Linux目錄。在我認爲的窗口類似的東西。在重新打開端口之前,必須刪除該文件。否則會發生nullPointerException。關閉端口將刪除此文件。