Öffnen eines COM-Ports führt zu Programmabsturz

richiking

Mitglied
Hallo, folgendes Problem...

Ich möchte gerne eine Excpetion werfen falls ein Port nicht geöffnet werden kann.... Zurzeit ist dies so realisiert:

Java:
try
						{
							
							Com = (SerialPort)s_id.open("SerialWriter", 200);	
						}
						catch(Exception e)
						{							
							e.printStackTrace();
						}


Doch leider wird keine Exception ausgeworfen sondern das Programm "reagiert" nicht mehr und muss dann geschlossen werden.

Folgender Ablauf funktioniert:

-> Programmstart bei verfügbarem COM-Port (getPortIdentifiers liefert dabei den Port)
-> Gerät des virtuellen COM-Ports wird ausgeschaltet
-> Versuch den Port zu öffnen scheitert...

-> Lass ich das Gerät eingeschaltet funktioniert das ganze natürlich...

Mir ist auch klar dass es keine Verbindung aufbauen kann wenn der Port/das Gerät nicht aktiv/eingeschaltet ist... aber das müsste man doch abfangen können ohne Programmabsturz???


lg, richi
 
Sorry war etwas in Eile...

Also:

Benutze Eclipse und RXTX unter Windows 7

Folgende Funktion öffnet den Port:

Java:
//openPort------------------------------------------------------------------------------------------------------------
		public boolean open_Port(CommPortIdentifier s_id) throws IOException
		{
						
           
			try 
	        {
					
					
						
						try
						{
							log4j.debug("Attempt to connect to:"+s_id.getName());
							Com = (SerialPort)s_id.open("SerialWriter", 200);	
						}
						catch(Exception e)
						{							
							e.printStackTrace();
						}
					
					
				
					
	    			Com.setSerialPortParams(115200,  				//BAUDRATEN einstellung
	            		SerialPort.DATABITS_8,
	            		SerialPort.STOPBITS_1,
	            		SerialPort.PARITY_NONE);
	    			
					inputStream = Com.getInputStream();
					
					return true;
	         	}
	         
	         catch (Exception e) 
	         {
	        	System.out.println("Port konnte nicht geöffnet werden!");
	        		return false;
	         }


Das Problem ist, dass RXTX scheinbar bei dem Befehl open (also s_id.open) scheinbar unbedingt einen aktiven COM-Port benötigt. Jedenfalls kommt es genau bei diesem Befehl zu einem Programmabsturz àla ".... reagiert nicht mehr"...

lg
 
Das Problem ist, dass RXTX scheinbar bei dem Befehl open (also s_id.open) scheinbar unbedingt einen aktiven COM-Port benötigt. Jedenfalls kommt es genau bei diesem Befehl zu einem Programmabsturz àla ".... reagiert nicht mehr"...
Was genau meinst du mit "aktiven Port" ?
Normalerweise müsste es möglich sein jeden Seriellen Port, den man über [c]CommPortIdentifier.getPortIdentifiers();[/c] erhält, öffnen zu können - eine Gegenstelle wird nicht zwingend benötigt.
 
Naja es geht dabei um 2 Platinen die jeweils mit einem Bluetooth-Modul bestückt sind. Diese erzeugen mir nach dem pairen mit dem PC 2 virtuelle serielle Schnittstellen, die unter den Bluetooth-Einstellungen unter der Reiter "COM-Anschlüsse" zu finden sind.

Ich habe beispielsweise 6 Platinen gepairt und nun 6 COM-Ports....

Habe ich von den 6 Platinen allerdings nur 2 eingeschaltet liefert der Befehl CommPortIdentifier.getPortIdentifiers() lediglich die 2 "aktiven" Ports der eingeschalteten Platinen.

Schalte ich nun aber eine der beiden aus und will diesen Port dann öffnen mit port.open(), hängt sich das Programm auf.... Ich hoffe es ist jetzt verständlicher 😉
 
Bei Bluetooth Modulen kann ich dir leider nicht helfen - habe angenommen das es um eine Hardware geht die direkt angeschlossen wird.
 
Hallo nochmals,

stell die Frage nochmals von der anderen Seite aus...

Wie kann ich diese Ports anzeigen lassen? (siehe Bild)



Mit getPortIdentifiers bekomme ich ja nur jene Ports deren Bluetooth-Module eingeschaltet sind, zumindest ist das bei mir so...

Wäre gut, wenn jemand eine Antwort parat hätte... bin leicht am verzweifeln!

lg, richi
 

Anhänge

  • Neues Bild.jpg
    Neues Bild.jpg
    23,3 KB · Aufrufe: 34

Zurück
Oben