Buonasera.
Adesso che ho trovato (sul sito Koders.com) vari programmi Java che mi possono essere utili a realizzare l'applicazione che sto cercando di creare, mi ritrovo in difficoltà al momento di utilizzare il programma CommPortIdentifier che ho scaricato da quel sito. Questo è il programma che ho realizzato:
------
package javax.comm;
import java.io.*;
import java.util.*;
public class TestPorte
{
public static void main (String [] args)
{
try
{
System.out.println ("Nome porta specificato.");
// Specifica di un nome per la porta che desideriamo.
String portaCercata = "COM1";
System.out.println ("Enumerazione iniziata.");
// enumerazione di tutte le porte che JavaComm conosce.
Enumeration identificatoriPorte = gnu.io.CommPortIdentifier.getPortIdentifiers();
System.out.println ("Esaminare ID porte. Individuare porta seriale corrispondente al nome " + portaCercata);
// Ogni identificatore di porta viene poi esaminato per vedere se identifica una porta seriale, e se il nome è
// quello che stiamo cercando.
CommPortIdentifier idPorta = null; // verrà settata una volta che sarà stata trovata la porta che vogliamo.
while (identificatoriPorte.hasMoreElements())
{
CommPortIdentifier pid = (CommPortIdentifier) identificatoriPorte.nextElement();
if (pid.getPortType()==CommPortIdentifier.PORT_SERIAL &&
pid.getName().equals(portaCercata))
{
idPorta = pid;
System.out.println ("Trovato elemento.");
break;
}
}
if (idPorta == null)
{
System.err.println ("Porta " + portaCercata + " non trovato.");
System.exit(1);
}
// Per acquisire la porta, si usa l'identificatore associato.
SerialPort porta = null;
System.out.println ("Tentativo acquisizione della porta.");
try
{
porta = (SerialPort) idPorta.open("nome", 10000); // Nome dell'applicazione a cui serve la porta,
// attesa massima in millisecondi
}
catch (gnu.io.PortInUseException e)
{
System.err.println ("Porta già in uso: " + e);
System.exit(1);
}
System.out.println ("Porta acquisita. Accesso esclusivo.");
// Ora che la porta è stata acquisita, e abbiamo accesso esclusivo ad essa, possiamo configurarla in
// modo da ottenere i flussi di ingresso e di uscita. Settare i parametri.
try
{
porta.setSerialPortParams(115200, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
}
catch (UnsupportedCommOperationException e)
{
System.err.println ("Operazione non supportata. " + e);
System.exit(1);
}
// Aprire il lettore dei flussi di ingresso e uscita.
System.out.println ("Aprire lettore flussi.");
BufferedReader ingresso = null;
PrintStream uscita = null;
System.out.println ("Preparazione flussi ingresso/uscita.");
try
{
ingresso = new BufferedReader (new InputStreamReader(porta.getInputStream()));
}
catch (IOException e)
{
System.err.println ("Apertura flusso di input impossibile: sola scrittura.");
ingresso = null;
}
System.out.println ("Aperto flusso ingresso.");
uscita = new PrintStream(porta.getOutputStream(), true);
// La comunicazione vera e propria dei dati avviene a questo punto. Bisogna poi chiudere nuovamente
// i flussi di ingresso-uscita in modo che le risorse possano in seguito essere assegnate di nuovo.
if (ingresso != null) ingresso.close();
if (uscita != null) uscita.close();
if (porta != null) porta.close();
// Lettura di dati
String risposta = ingresso.readLine(); // se è stato inviando "AT", risposta è "OK"
// Scrittura in uscita
uscita.print("AT");
uscita.print("\r\n"); // Line feed
ingresso.readLine(); // La prima lettura contiene il comando di eco "AT".
ingresso.readLine(); // La seconda rimuove il line feed che AT genera come output.
}
catch (Exception e)
{
System.err.println ("Operazione non riuscita. " + e);
}
}
}
------
Quando lo compilo, tutto ok, la classe viene creata senza intoppi. Tuttavia, quando cerco di lanciarlo, mi viene visualizzato un errore come questo:
"Exception in thread "main" java.lang.NoClassDefFoundError: TestPorteNeo (wrong name javax/comm/TestPorteNeo)"
Qualcuno mi può dare un suggerimento? Qual è il mio errore, e come posso rimediarci?
Ringrazio fin d'ora per l'aiuto!

Rispondi quotando