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));
}
}
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.
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.
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.