Criação de Método

Boa noite,
Estou com um problema em um projeto e já dei nó no “chifre” e não consegui decifrar. srsrsrsrsrs
Se alguém puder me ajudar agradeço.

tenho um método chamado “enviarDados” \ Envia dados String via porta serial

http://i63.tinypic.com/n1z7z6.jpg

eu preciso de rodar todo esse “1º Estágio” simultâneo.

Criei o seguinte método.

public void estagio(String a, String b, int v, int f) { 
int x = Integer.valueOf(a); 
if (b.equals( "Pulso" )) { 
for (int i = 0; i < x; ++i) { 
enviarDados(Integer.toString(v)); 
delay(1); 
enviarDados(Integer.toString(f)); 
delay(1); 
} 
} else if (b.equals( "Segundos" )) { 
enviarDados(Integer.toString(v)); 
delay(x); 
enviarDados(Integer.toString(f)); 
} 
} 

e chamo ele através

estagio(jTextField2.getText(),(String) jComboBox1.getSelectedItem(),1,0);

porem, por conta do método “enviarDados” estar dentro deste método se eu chamo também,

estagio(jTextField3.getText(),(String) jComboBox2.getSelectedItem(),3,2); 

Eles não rodam simultâneos. Preciso criar um método onde eu chame ele pra enviar os dados todos juntos. á e o delay é só pra dar um tempo. desculpe a desorganização.

Você precisa estender Thread para dar o tempo, delay(), em java é sleep().

No primeiro if voce envia os mesmos dados do else if. Então, neste caso, você pode deixar eles ficarem executando em loop infinito:

    public int v;
    public int f;
    public void inicio(String a, String b, int v, int f) throws InterruptedException { 
        this.v = v;
        this.f = f;
        int x = Integer.valueOf(a); 
           if (b.equals( "Pulso" )) { 
                for (int i = 0; i < x; ++i) {
                estagio1(v);
                estagio2(this.f);
                } 
            } else if (b.equals( "Segundos" )) { 
                estagio2(f); 
                estagio1(this.v);
            } 
        }
    
    
    public void estagio1(int v) throws InterruptedException {
         enviarDados(Integer.toString(v)); 
         sleep(5005); 
         estagio2(this.v);
    }
    
    public void estagio2(int f) throws InterruptedException {
          enviarDados(Integer.toString(f));
          sleep(5005);
          estagio1(this.f);
    }

Pode haver defeitos na execução do tempo, pois sleep() dentro do for fica doido…Não testei esse codigo, mas pode te ajudar, talvez

Não sei o que você está enviando nos ints v e f, talvez criando objetos e usando esses atributos em sets e gets possa resolver a confusão

Obrigado amigo,
Mais testei o código não rolo não,
Isso aqui é um sistema que envia dados para a porta serial e basicamente vai ligar e desligar cada pino.
o delay foi um nome que dei pra um método.

private void delay(int t) {
    try {
        Thread.sleep(1000 * t);
    } catch (InterruptedException ex) {
    }
} 

o que deve acontecer é onde meu campo tiver preenchido ele vai enviar dados de “0 a 9”.
por exemplo se o estagio 1 tiver tudo preenchido com 1 pulso ele deve enviar.

enviarDados(“1”); \ liga o pino 3
enviarDados(“3”); \ liga o pino 5
enviarDados(“5”); \ liga o pino 7
enviarDados(“7”); \ liga o pino 9
enviarDados(“9”); \ liga o pino 11

delay (1);

enviarDados(“0”); \ desliga o pino 3
enviarDados(“2”); \ desliga o pino 5
enviarDados(“4”); \ desliga o pino 7
enviarDados(“6”); \ desliga o pino 9
enviarDados(“8”); \ desliga o pino 11

delay (1);

e a mesma coisa porem com delay (jTextField);
caso em vez de pulso seja segundos.

mais obrigado novamente pela resposta.

ok

Você tem que colocar as chamadas dos seus métodos em Threads separadas:

final String a = jTextField2.getText();
final String b = (String) jComboBox1.getSelectedItem();

Thread t1 = new Thread(
    new Runnable(
        public void run(){
            estagio(a,b,1,0);
        }
    )
)

final String c = jTextField3.getText();
final String d = (String) jComboBox2.getSelectedItem();

Thread t2 = new Thread(
    new Runnable(
        public void run(){
            estagio(c,d,3,2);
        }
    )
)

t1.start()
t2.start()

t1.join()
t2.join()

lembrando que componentes Swing não devem ser manipulados por outras threads que não seja a EventDispatcher.