Java und Serielle COM Ports

lenny89

Mitglied
Moin,
ich habe folgendes Probelm.

Ich möchte über die Serielle Schnittstelle was senden und empfangen.
Verwendet wird dafür RXTXcomm.
Diese klappt auch ohne Probleme.
Leider Funktionier das Öffnen des Com-Ports nicht immer.

Wenn ich das Programm auf meinen Rechner starte und in meiner Entwicklungsumgegbung Funktioniert alles Ohne Problem.

starte ich aber zum Beispiel diese Programm auf einen anderen Rechner kann das Öffnen des Ports bis zu 1 Minute dauern.

Hier der Code:
Java:
public void openPort()
  {
    CommPortIdentifier portIdentifier = null;
	try 
	{
	  //Dauer sehr lange
	  portIdentifier = CommPortIdentifier.getPortIdentifier(glCOM.getSelectedCOMPort());
	  try 
	  {
		serialPort = (SerialPort) portIdentifier.open("OpenPort", 0);
		serialPort.setSerialPortParams(glCOM.getBaudrate(), glCOM.getDataBits(), glCOM.getStopBits(), glCOM.getParity());
		glCOM.setComPortOpen(true);
		inStream = serialPort.getInputStream();
		outStream = serialPort.getOutputStream();
	  } 
	  catch (Exception e) 
	  {
        JOptionPane.showMessageDialog(null, "COM-Port (" + glCOM.getSelectedCOMPort() + ") konnte nicht geöffnet werden","COM Fehler",JOptionPane.ERROR_MESSAGE);
	  }
	} 
	catch (NoSuchPortException e) 
	{
	  e.printStackTrace();
	  glCOM.setComPortOpen(false);
	  if(glCOM.getSelectedCOMPort() == "")
	  {
		Toolkit.getDefaultToolkit().beep();
		JOptionPane.showMessageDialog(null, "Bitte einen COMPort auswählen.", "COMPort Fehler", JOptionPane.ERROR_MESSAGE);
	  }
	}	
  }

Beim debugen ist mir aufgefallen das er die langezeit immer bei folgendem schritt benötigt:

portIdentifier = CommPortIdentifier.getPortIdentifier(glCOM.getSelectedCOMPort());

habt ihr vlt. eine lösung vodran es liegen könnte?

Grüße
lenny
 
glCOM ist eine Instanz einer Klasse in der "Globale" Variable gespeichert werden.
Die methode glCOM.getSelectedCOMPort() liefert mir gen ausgewälten COM-Port(COM10) als String zurück.
 
Ähm, ja...

Da du schon selber festgestellt hast das es dort so lange dauert, würde ich mal in der Methode nachsehen ob da was länger dauert.

Ich habe hier auch Programme mit rxtx auf mehreren Rechnern getestet und es hat nie wirklich lange gedauert eine Verbdinung zu öffen. Daher die Idee das es irgendwas damit zu tun hast wie und wo die Portnummer beschafft wird.
 
Ich glaube nicht wirklich das es an der Methode an sich liegt.

ich vermute eher das es irgendwas mit dem laden der RXTXcomm.jar oder der rxtxSerial.dll zu tun hat.

den sobald ich das erste mal eine Eigenschaft oder eine Methode aufrufe dauert es so lange.
In der Consloe wir mir folgendes ausgegeben:

Stable Library
=========================================
Native lib Version = RXTX-2.2-20081207 Cloudhopper Build rxtx.cloudhopper.net
Java lib Version = RXTX-2.1-7
WARNING: RXTX Version mismatch
Jar version = RXTX-2.1-7
native lib Version = RXTX-2.2-20081207 Cloudhopper Build rxtx.cloudhopper.net

ist dieses erstmal geladen kann ich ohne Zeitverzögerung arbeiten.
 

Zurück
Oben