Conectar e desconectar a COM [RESOLVIDO]

10 respostas
banger

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?

10 Respostas

Metaleiro

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

enviar e receber dados pela paralela

zoren

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

caso não, esse é seu erro

banger

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??

lina

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!

criador

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!

banger

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!!!

banger

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

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

Abraço!

lina

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!

banger

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!!!

Criado 29 de abril de 2010
Ultima resposta 30 de abr. de 2010
Respostas 10
Participantes 5