2012-01-28 12 views
5
void connect (String portName) throws Exception 
{ 
    CommPortIdentifier portIdentifier = CommPortIdentifier.getPortIdentifier(portName); 
    if (portIdentifier.isCurrentlyOwned()) 
    { 
     System.out.println("Error: Port is currently in use"); 
    } 
    else 
    { 
     System.out.println(portIdentifier.getCurrentOwner()); 
     CommPort commPort = portIdentifier.open(this.getClass().getName(),2000); 

     if (commPort instanceof SerialPort) 
     { 
      SerialPort serialPort = (SerialPort) commPort; 
      serialPort.setSerialPortParams(115200,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE); 

      InputStream in = serialPort.getInputStream(); 
      OutputStream out = serialPort.getOutputStream(); 

      (new Thread(new SerialReader(in))).start(); 
      (new Thread(new SerialWriter(out))).start(); 

     } 
     else 
     { 
      System.out.println("Error: Only serial ports are handled by this example."); 
     } 
    }  
} 

sta dandognu.io.PortInUseException: Applicazione sconosciuta?

gnu.io.PortInUseException: Unknown Application 
    at gnu.io.CommPortIdentifier.open(CommPortIdentifier.java:354) 

sto usando RXTX con Java in Windows 7 Home 64-bit.

risposta

3

Riavviare il sistema/disabilitare la porta.
Il problema reale si verifica quando viene aperta la porta del programma e non si chiude dopo la chiusura del programma.
funziona.

2

Mi sono imbattuto in questo problema perché la porta era effettivamente in uso. Un'istanza precedente di javaw.exe è stata visualizzata nel task manager di Windows, ha bloccato la porta.

Il motivo per cui il precedente processo Java era bloccato era un problema hardware: quando si collega il convertitore USB-2-seriale che mi è capitato di utilizzare in una porta USB-2, tutto funzionava bene. Quando collegato a una porta USB-3, il codice CommPortIdentifier RXTX si blocca e quindi le successive istanze di Java hanno ricevuto PortInUseException.

12

Verificare che la cartella/var/lock sia presente sulla macchina.

 

mkdir /var/lock 
chmod go+rwx /var/lock 
 
0

ho usato Process Explorer per trovare un processo con il manico \Device\PCISerial0 e chiuso la maniglia. Se le tue porte COM non sono su una scheda PCI, il nome potrebbe essere diverso.

Problemi correlati