PDA

View Full Version : Aiuto con javax.comm


leon84
23-01-2007, 10:33
Salve,
devo poter leggere e scrivere dalla seriale del mio pc che monta windows xp.

Ho utilizzato il seguente codice per ora :


CommPortIdentifier com1 = null;
try {

com1 = CommPortIdentifier.getPortIdentifier("COM1");
} catch (NoSuchPortException ex) {
ex.printStackTrace();
}

SerialPort s1 = null;
try {

s1 = (SerialPort) com1.open("GpsSerial",1000);
} catch (PortInUseException ex) {
ex.printStackTrace();
}
try {

s1.setSerialPortParams(115200,s1.DATABITS_8,s1.STOPBITS_1,s1.PARITY_NONE);
} catch (UnsupportedCommOperationException ex) {
ex.printStackTrace();
}


s1.close();
// TODO code application logic here


Quando lo eseguo ho problema su questa istruzione :
com1 = CommPortIdentifier.getPortIdentifier("COM1");

Mi dice :


Error loading SolarisSerial: java.lang.UnsatisfiedLinkError: no SolarisSerialParallel in java.library.path
Caught java.lang.UnsatisfiedLinkError: com.sun.comm.SolarisDriver.readRegistrySerial(Ljava/util/Vector;Ljava/lang/String;)I while loading driver com.sun.comm.SolarisDriver
javax.comm.NoSuchPortException
at javax.comm.CommPortIdentifier.getPortIdentifier(CommPortIdentifier.java:430)
at gpsserial.Main.main(Main.java:43)
Exception in thread "main" java.lang.NullPointerException
at gpsserial.Main.main(Main.java:51)
Java Result: 1


Che significa ?

yorkeiser
23-01-2007, 11:10
Mai provato ad utilizzare le javax.comm; come prima cosa, hai controllato se la porta COM1 esiste sul PC ? Sembra non riesca a trovarla

andbin
23-01-2007, 11:14
Uhm ... alt! Quale versione di JavaComm hai preso/usato??? Purtroppo lo sviluppo di JavaComm è sempre stato un po' strano: le prime versioni, una volta, supportavano solamente Windows e Solaris ma non Linux. Poi hanno cambiato, ora la versione più recente supporta solo Linux e Solaris ma non Windows.

Credo che tu abbia preso quest'ultima, in questo caso non può funzionare su Windows. Cerca la "vecchia" versione che supportava Windows.

EDIT: la "vecchia" JavaComm 2.0 per Windows la trovi <qui> (http://javashoplm.sun.com/ECom/docs/Welcome.jsp?StoreId=22&PartDetailId=7235-javacomm-2.0-spec-oth-JSpec&SiteId=JSC&TransactionId=noreg)

leon84
23-01-2007, 13:28
Uhm ... alt! Quale versione di JavaComm hai preso/usato??? Purtroppo lo sviluppo di JavaComm è sempre stato un po' strano: le prime versioni, una volta, supportavano solamente Windows e Solaris ma non Linux. Poi hanno cambiato, ora la versione più recente supporta solo Linux e Solaris ma non Windows.

Credo che tu abbia preso quest'ultima, in questo caso non può funzionare su Windows. Cerca la "vecchia" versione che supportava Windows.

EDIT: la "vecchia" JavaComm 2.0 per Windows la trovi <qui> (http://javashoplm.sun.com/ECom/docs/Welcome.jsp?StoreId=22&PartDetailId=7235-javacomm-2.0-spec-oth-JSpec&SiteId=JSC&TransactionId=noreg)

Eh già mi sa che sarà questo il problema ... in realtà come piattaforme supportate c'era LInux, Solaris e Generi Platform. Ho preso l'ultima sperando supportasse Windows ...

Ora provo con la 2.0 ... Grazie mille del link ...

leon84
23-01-2007, 13:54
Ho provato ... nn ho più problemi di driver ma mi sa che nn mi rileva alcuna porta di comunicazione ...

Eseguendo :


public static void main(String[] args) {

CommPortIdentifier id_porta = null;
Enumeration lista_porte=null;

lista_porte = CommPortIdentifier.getPortIdentifiers();
// System.out.println (lista_porte.)
while (lista_porte.hasMoreElements())
{
System.out.println ("ciao");
id_porta = (CommPortIdentifier) lista_porte.nextElement();
System.out.println(id_porta.getName());
}
// TODO code application logic here
}


Non mi entra nel "while" infatti nn mi stampa a video "ciao" .. Questo significa che nn è in grado di ritornarmi alcuna porta ...