2016-07-14 21 views
1

Ich brauche ein wenig Hilfe mit meiner Logik mehr als alles andere.Schalten eines Relais jeden Zyklus eines Timers

Ich habe einen Timer:

{ 
    timer = new java.util.Timer(); 
    timer.schedule(new java.util.TimerTask() { 

     @Override 
     public void run() { 

     try{ 
      byte st = presetNo[count]; 
      System.out.println("Start Tour Button pressed, String: "+st); 

       count ++; 
        if(count >=MaxCount) count=0; 

     byte[] command = {(byte) startTx, address, byteOne, goPreset, 0x00, st, endTx, 0x0F};                         
       TwoWaySerialComm.SerialWriter sw = new TwoWaySerialComm.SerialWriter(
       twoWaySerCom.serialPort.getOutputStream()); 

           sw.out.write(command); 

      } 


     catch (IOException e) 
       { 
        e.printStackTrace(); 
       } 

     } 
    }, 
100,5000 

); 

} 

Für jeden Zyklus des Timers i

pin.toggle(); 

auslösen ein Relais für 2 Sekunden nur auf

wollen. Ich kann nicht verstehen, wie ich das machen würde. Kann mir jemand eine Idee geben?

+0

Was meinen Sie mit jedem Zyklus des Timers? Was ist das Zeitintervall zwischen den Zyklen? – pahan

+0

Momentan erhält der Timer alle 5 Sekunden die 'Anzahl' einer Voreinstellung, sendet eine Zeichenkette und erhöht dann die 'Anzahl' um eins. –

+0

Ich möchte jedes Mal ein Relais auslösen, wenn der Timer die Zählung erhöht und ich möchte, dass das Relais für 2 Sekunden ausgelöst bleibt. –

Antwort

1

Jedes Mal, wenn timer das Relais, derzeit an fünf Sekunden-Intervallen schließt, schedule() eine zweite TimerTask mit einer zwei Sekunden delay und öffnen Sie das Relais in der Umsetzung der zweiten Aufgabe run().