2012-01-28 22 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."); 
     } 
    }  
} 

gnu.io.PortInUseException: अज्ञात एप्लिकेशन?

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

दे रहा है मैं 7 घर 64-बिट Windows में जावा के साथ RXTX उपयोग कर रहा हूँ।

उत्तर

3

सिस्टम को रीबूट करें/बंदरगाह को अक्षम करें।
वास्तविक समस्या तब होती है जब प्रोग्राम पोर्ट चलाता है और प्रोग्राम समाप्त होने के बाद यह बंद नहीं होता है।
यह काम करता है।

2

मैं इस समस्या में भाग गया क्योंकि बंदरगाह वास्तव में उपयोग में था। विंडोज़ टास्क मैनेजर में javaw.exe का एक पिछले उदाहरण दिखाई दिया, यह बंदरगाह को दबा दिया।

कारण पिछली जावा प्रक्रिया लटका एक हार्डवेयर समस्या थी: यूएसबी -2 पोर्ट में उपयोग करने के लिए यूएसबी -2 सीरियल कनवर्टर प्लग करने के दौरान, सभी ने ठीक काम किया। USB-3 पोर्ट में प्लग इन होने पर, RXTX CommPortIdentifier कोड लटका होगा, और उसके बाद जावा के बाद के उदाहरणों को PortInUseException प्राप्त हुआ।

12

जांचें कि आपकी मशीन पर/var/lock फ़ोल्डर मौजूद है।

 

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

मैं संभाल \Device\PCISerial0 के साथ एक प्रक्रिया को खोजने के लिए प्रोसेस एक्सप्लोरर का इस्तेमाल किया और संभाल बंद कर दिया। यदि आपके कॉम पोर्ट पीसीआई कार्ड पर नहीं हैं, तो नाम अलग हो सकता है।