Conectar e desconectar a COM [RESOLVIDO]

fala gente,

pessoal, o problema acho que e simples pra vcs mas pra mim por ter contato com o cod tah sendo mais dificil encontrar o erro mas vamos lah:

tenho um botao chamado conectar que ele se conecta(obviamente!uahuha) a porta serial com do pc, faz a leitura e recebe o texto ou outra coisa ai que mandar por ela, e tenho um botao desconectar, que na teoria deveria para a leitura da porta.

tentei de prima, colocar o metodo de desconectar:


    public void close() {
       try {
    readThread.stop();

if(readThread.stop() == true) {
    read.append("desconectado!");
} else {
    read.append("Impossivel desconectar!");
}
} catch (SecurityException e) {
    System.out.println(e);
}
    }

mas naum rolou, ele manda a menssagem assim:


Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: Uncompilable source code - 'void' type not allowed here

será que vcs poderiam me dizer aonde está o erro ou oque poderia fazer para parar a thread?

[color=darkblue]Não sei se ajuda, fazia isso em outras linguagens: [/color]

enviar e receber dados pela paralela

esse seu método stop() retorna boolean??

caso não, esse é seu erro

entaum kra meu prob naum e a conexão, mas a logica para desconectar, acho que e mais na parte de implantar no swing, tpw eu faço a conexao, recebo e envio, soh que eu quero interromper a thread para desconectar, ai se eu quero conectar eu aperto o botao conectar, de novo e começa tudo de novo!!

tpw naum tem como eu abortar o botao pq ele so ativa o metodo,por isso eu to achando que eu preciso cortar a comunicação na thread, pq ai ele teoricamente pararia o processo.
ai no codigo acima eu utilizei o interrupt para isso mas dah o erro apresentado, void type.

alias nem sei se o que fiz ai emcima é possivel, tpw dá pra cancelar um metodo com outro método??

Oi,

O erro é claro e objetivo. Este código está com problemas de compilação, ou melhor, nem executa:

Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: Uncompilable source code - 'void' type not allowed here

Como o amiguinho Zoren falou, verifique se o método stop() possui retorno.:

    public void close() {
       try {
    readThread.stop(); // Ele retorna alguma coisa?!?!

if(readThread.stop() == true) {  // Não seria um isStop?!?! ou melhor, isSomeThing?! ou isConnected() ?
    read.append("desconectado!");
} else {
    read.append("Impossivel desconectar!");
}
} catch (SecurityException e) {
    System.out.println(e);
}
    }

Tchauzin!

Enxugando um pouco o código:

public void close() {
	try {
		// Não precisa fazer a comparação com == true, porque esté método já retorna um booleano (pelo menos deveria).
		read.append(readThread.stop() ? "desconectado!" : "Impossível desconectar!");
	} catch (SecurityException e) {
		System.out.println(e);
	}
}

Abraço!

bom realmente nao esta retornando um valor booleano, vou passar agora o codigo do metodo que conecta:

public void nulltest() {
      // initalize serial port
      try {
         serialPort = (SerialPort) portId.open("SimpleReadApp", 2000);
      } catch (PortInUseException e) {}

      try {
         inputStream = serialPort.getInputStream();
      } catch (IOException e) {}

      try {
         serialPort.addEventListener(this);
      } catch (TooManyListenersException e) {}

      // activate the DATA_AVAILABLE notifier
      serialPort.notifyOnDataAvailable(true);

      try {
         // set port parameters
         serialPort.setSerialPortParams(56000, SerialPort.DATABITS_8,
                     SerialPort.STOPBITS_1,
                     SerialPort.PARITY_NONE);
      } catch (UnsupportedCommOperationException e) {}

      // start the read thread
      readThread = new Thread(this);
      readThread.start();

galera mil desculpas e que eu naum sei mais oque faço aqui, pq o metodo e void, o stop e void e tambem naum aceita os valores booleans.

o coloquei o codigo assim, mas ainda sim naum rolou:

    public void close() {
            
        try {
            readThread.interrupt();
                    
            if(readThread.isInterrupted() == true) {
                read.append("desconectado!\n");    
            } else {
                read.append("Impossível desconectar!\n");
            
            }

        } catch (SecurityException e) {
            System.out.println(e);
}

este aqui ele jah escreve impossivel desconectar, mas ainda naum me resolveu!!!

detalhe se eu colo um retorno booleano ele me tras o erro que naum é permitido valor boolean no tipo void.

public String close() throws SecurityException {
    
	readThread.interrupt();
	return (readThread.isInterrupted() ? "desconectado!" : "Impossível desconectar!");
        
}

Abraço!

Oi,

Se fez readThread.interrupt() para que testar se está interrupted?!?!?!?!! (readThread.isInterrupted() ? “desconectado!” : “Impossível desconectar!”)

Se ele não conseguir, sairá por exception… ou não?!

Tchauzin!

putz vei consegui resolver de outro jeito, hj eu to melhor pra pensa!!!

bom eu vi que pra parar a thread nao e tao simples, entaum consegui um jeito mais simple pra resolver!:


public void stop() {
     if(portId.isCurrentlyOwned() == false) {
         serialPort.close();
         read.append("Desconectado!\n");
     
     } else {
         read.append("impossivel desconectar!\n\n");
     }

}

vlw gente caso inda tenha algum comentario a expor no topico vou deixa-lo aberto por mais 1 hr!!!

vlw gente!!!

vlw guj!!!