# Problem mit der Gültigkeit von "USB Serial Ports"



## vfl_freak (3. März 2011)

Hallo zusammen,

ich kämpfe seit einigen Tagen mit USB Serial Ports und hoffe, dass hier irgendwer Erfahrung damit hat und mir auf die Sprünge helfen kann.

Unser Ziel ist es, jeweils zwei Rechner (die zu einem Arbeitsplatz gehören) mit einem "UBS to USB Null Modem Kabel" zu verbinden, um dann zwischen zwei Java-Anwendungen Signale für eine sehr spezielle Programmsteuerung  auszutauschen!

Grundlegend klappt dies auch problemlos (zumindest hier bei mir an meinen beiden Entwicklungsrechnern). Mir werden nach der Treiberinstallation an beiden Rechnern im Gerätemanager entsprechende COM-Ports angezeigt, die ich verwenden kann, und die Kommunikation zwischen den PCs läuft.

Nun habe ich versucht ein solches Kabel zwischen zwei Rechner im Livesystem zu schalten. Auch dort werden die COM-Port sauber angezeigt, nur meine Java-Applikation (mit einer aktuellen SerialIO.jar V10.0.9 build 9217) fängt dort an zu spinnen. 
Wenn ich versuche den nach Installation initial vorhandenen Port zu nutzen (es ist meist COM5), bekomme ich eine IOException aus der SerialIO mit dem Hinweis "Port is used". Wenn ich die Portnummer im Gerätemanager und meiner Applikation ändere (bspw. auf COM9), dann kommt die IOException aus der SerialIO mit dem Hinweis "Port is not valid" (vgl. auch Anlagen).

Der einzige Unterschied zwischen meinen Testsystem und dem Livesystem ist der, dass im Livesystem bereits jeweils eine solche USB-COMPort-Bridge (mit einem Treiber vom gleichen Hersteller) und einem unserer Geräte angeschlossen ist. Ein solches Gerät hängt bei meinen PCs direkt auf dem COM1-Port des PCs. 
Mir fiel auch auf, das der Treiber im Livesystem deutlich älter ist (2.2.8 zu 2.8.12). Allerdings lässt sich der Treiber im Gerätemanager auch nicht aktualisieren (mit dem von der Herstellerseite heruntergeladenen, der bei mir als V2.8.12 installiert wurde), mit der Begründung "keinen neueren Treiber gefunden". Allerdings glaube ich auch nicht wirklich, dass es ein Treiberproblem sein kann, da der Port ja korrekt von System erkannt und angezeigt wird.

Hat irgendwer Erfahrung mit dieser Thematik bzw. kann mir einen Tipp geben, was zu tun ist, damit die Ports auch in meiner Anwendung als gültig erkannt werden?  Bin so langsam am verzweifeln .... :-(

Danke und Gruß
Klaus

PS: falls ihr der Meinung seid, dass es doch eher ein Java-Problem denn ein Hardware-Problem ist, dann bitte verschieben

PS2: die System haben allesamt XP Prof. mit SR 2 oder 3 !!


----------



## Sebastian29 (3. März 2011)

Hallo Klaus!

Prüf mal mit *SerialPortLocal.getPortList();*, ob COM9 im Livesystem in der PortListe verfügbar ist und wenn nicht, dann muss COM9 definiert werden. Siehe unten im Zitat über "SERIAL_PORT_LIST", z.B.: SERIAL_PORT_LIST=COM1;COM2;COM3;*COM9*! 


```
If the native OS supports a 'Registry' functionality, you can determine a list of serial ports by using the method SerialPortLocal.getPortList(). For example the following code displays a list of ports that are entered in the OS 'Registry'.

 String[] names = SerialPortLocal.getPortList();
 System.out.println("Serial ports reported by system:");
 for (int i = 0; i < names.length; i++) {
  System.out.println(names[i]);
 }
 

Define Available Serial Ports
A list of serial port names can be passed to SerialPort. When passed, the list is used to determine which ports are available when using the getPortList() method and the Comm API. The list must contain a semi-colon delimited list of port names, for example

    SERIAL_PORT_LIST=COM1;COM2;COM3

When the property SERIAL_PORT_LIST is undefined then an attempt is made to determine the list of available ports using native methods. Note that not all platforms support native port discovery. A system property can be set from the command line with most modern VM's. For example

    java -DSERIAL_PORT_LIST=COM1;COM2;COM3 JavaTerm
```

Allgmeine Beschreibung über SerialPort: hier

Gruß
Sebastian


----------



## vfl_freak (4. März 2011)

Hallo Sebastian,



> Prüf mal mit SerialPortLocal.getPortList();, ob COM9 im Livesystem in der PortListe verfügbar ist und wenn nicht, dann muss COM9 definiert werden.



Das Problem ist weniger die Verfügbarkeit von Seiten des OS, sondern die Tatsache, dass ein Port, der von *getPortList()* als verfügbar angezeigt wird (und auch so im Gerätemanager steht), beim Aufruf dann als *not valid* angesehen wird .....

Gruß
Klaus


----------

