2011-08-03 5 views
2

J'essaie de me connecter à un Serial Port ... mais une fois que j'ouvre le Serial Port pour la première fois. Je ne peux pas l'ouvrir à nouveau, j'ai essayé de postuler. Voici mon code:Ouvrir et fermer les ports série

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) {} 
      } 
     } 
    } 
} 

Je veux fermer ce port afin que je puisse l'utiliser pour une autre tâche.

Répondre

4

Selon l'API de communication java il vous suffit de close() votre objet port série:

serialPort.close(); 

La méthode close() provient de la SerialPort super classe CommPort.

1

serialPort.close(); travaille pour moi. Veillez à ne pas réutiliser le port avant de le fermer, car un fichier de verrouillage est écrit dans le répertoire/var/lock Linux. Dans Windows quelque chose de similaire je présume. Ce fichier doit être supprimé avant de rouvrir le port. Sinon, une exception nullPointerException se produira. La fermeture du port supprime ce fichier.