none
zeitgesteuerte prozesse starten RRS feed

  • Allgemeine Diskussion


  •             }
                else if (e.Result.Text == "Uhrzeit")
                {
                    var speechSynthesizer = new SpeechSynthesizer();
                    speechSynthesizer.Speak(DateTime.Now.ToString());
                }
                DateTime Time = DateTime.Now;
                    int minutes = Time.Minute;

                    if (minutes == 07)  //FIRE ON THE HOUR
                    {
                        var speechSynthesizer = new SpeechSynthesizer();
                        speechSynthesizer.Speak("Hier soll der Code ausgeführt werden");
                    }

                }
            }
        }
    }

    der fett markierte code läuft nicht alleine. er wird nur zur 7. minute in einer stunde in verbindung mit dem sprachbefehl uhrzeit ausgeführt. er soll aber alleine zu einer bestimmten minute in der stunde ausgeführt werden. hat jemand einen tipp???

        

    Donnerstag, 21. Juni 2012 07:45

Alle Antworten

  • hmm, wenn ich dich recht verstehe: Du brauchst ein Timer und musst den entsprechenden Code-Abschnitt in das Timer-Ereignis legen.

    btw, ein Betreff wie der deinige ist nicht so das Gelbe vom Ei. Er sollte dein Problem mit wenigen Worten beschreiben.


    Donnerstag, 21. Juni 2012 08:07
  • ich möchte zum beispiel zur vollen stunde die uhrzeit als sprachausgabe haben. 9 uhr 20 eine anwendung starten und 9 uhr 40 ein anderes event ausführen. also ebend in einer stunde verschiedene sachen ausführen die minuten genau festgelegt und ausgeführt werden. countdown timer helfen mir nicht, da die anwendung nicht immer zur gleichen zeit gestartet wird.

    DateTime Time = DateTime.Now;
             
    int minutes = Time.Minute;

               
    if (minutes == 00)  //FIRE ON THE HOUR
                   
    { DO THIS  }

               
    if (minutes == 15)  //FIRE ON 1/4 HOUR
                   
    {  DO THIS }

               
    if (minutes == 30)  //FIRE ON 1/2 HOUR
                   
    { DO THIS }

               
    if (minutes == 45)  //FIRE ON 3/4 HOUR
                   
    { DO THIS }
       
    }

    betreff geändert:-))


    • Bearbeitet tauricoder Donnerstag, 21. Juni 2012 08:15
    Donnerstag, 21. Juni 2012 08:10
  • Natürlich hilft dir ein Timer, von Countdown war allerdings nicht die Rede.

    Du musst wie es halt üblich ist, entweder das erste Timer-Intervall abhängig von der Startzeit berechenen und die weiteren auf dein viertel Stundenintervall setzen oder aber du lässt deinen Timer mit einem Intervall laufen, das eine geeignted Auflösung bietet um sämtliche gewünschten Intervalle zu bekommen. Z.B. ein 30 Sekunden Intervall.

    btw, int minutes = DateTime.Now.Minute;

    Donnerstag, 21. Juni 2012 09:14
  • aber warum werden die zeilen wie oben nur in verbindung mit dem letzten sprachbefehl ausgeführt? der timer selbst läuft ja, nur eben in verbindung mit......
    Donnerstag, 21. Juni 2012 09:34
  • Weil du den Code in einem Ereignis stehen hast, welches nur bei einem Sprachbefehl ausgelöst wird.. Siehe auch Timer-Basics.
    Donnerstag, 21. Juni 2012 09:39
  • Wenn ich mich da einmischen darf ....

    Du erstellest eine Timer funktion die oft genug aufgerufen wird, je nach Bedarf zum Beispiel alle Millisekunde oder Sekunde und in diesen Timercode schreibst Deinen Code rein.

    Grüße

    Donnerstag, 21. Juni 2012 09:40
  • Jo, darfst du. Hatte ich auch schon vorgeschlagen ;) Wobei (Milli-)Sekunden ein zu kleine Auflösung sind.
    Donnerstag, 21. Juni 2012 09:52
  • bitte schüttel den kopf nicht:-)) bin in c# noch recht frisch.

    könnte ich die timer02.cs ins projekt einbinden? was mache ich mit der meldung "mehrere einstiegspunkte" .

    habs jetzt so:

    cs ins projekt hinzugefügt

    //  Timer02.cs - Displaying Date and Time
    //      Using the Timer class. 
    //      Press Ctrl+C to end program. 
    //------------------------------------------
    using System;
    using System.Timers;
      
        public class Timer1
        {
                void timer_Tick(object sender, EventArgs e)
                {
                    DateTime Time = DateTime.Now;
                    int minutes = Time.Minute;

                    if (minutes == 51)  //FIRE ON THE HOUR
                    {
                    System.Diagnostics.Process.Start(@"C:\***\winamp.exe");
                    }

                }
            }


    • Bearbeitet tauricoder Donnerstag, 21. Juni 2012 09:56
    Donnerstag, 21. Juni 2012 09:56
  • Mehrere Einstiegspunkt heißt, das du mehr als eine Methode [STAThread]Main hast. Hier ein paar Beispiel für Timer in der Console.

    Donnerstag, 21. Juni 2012 11:18
  • meins tut schon ....

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                Timer t = new Timer(fnTimer, 5, 0, 1000);
                Console.ReadLine();
            }
    
    
            private static void fnTimer(Object state)
            {
                DateTime dt = DateTime.Now;
                if (dt.Second == 30)
                {
                    Console.WriteLine("Sekunde 30");
                }
                if (dt.Second == 15)
                {
                    Console.WriteLine("Sekunde 15");
                }
                if (dt.Second == 0)
                {
                    Console.WriteLine("Sekunde 0");
                }
                if (dt.Second == 45)
                {
                    Console.WriteLine("Sekunde 45");
                }
            }
        }
    }

    Donnerstag, 21. Juni 2012 11:30
  • Gehe mal zurück auf Anfang. Und nun kleine Schritte:

    Teste erstmal den Timer nur in einem Consolen-Projekt, dann teste den Timer auf einem Formular. Jeweils ohne Speech. Lege jeweils ein eigenes Projekt in deiner Solution an..

    Donnerstag, 21. Juni 2012 12:35
  • hab ich gemacht. in der "nur" konsole läuft der timer.

    in der form kommt 

    Fehler 1 "System.Windows.Forms.Timer" enthält keinen Konstruktor, der 4-Argumente akzeptiert. ****\WindowsFormsApplication1\Program.cs 15 27 EventTimer Form

    Donnerstag, 21. Juni 2012 12:52
  • Also mein Code war nicht zum reinprogrammieren gedacht, sondern als minimal Beispiel für eine Timer Anwendung.

    Du hast jetzt 2 mal die Main drin, da geht glaube ich so gar nicht.

    Hast Du jetzt eigentlich eine Consolen Anwendung oder eine Windowsform?

    Jetzt machst meinen Code wieder raus und versuchst in Deinem Code (Main)den Timer wie in meinem Code zu initialisieren.

    Dann mußt noch den "TimerCode" bei Deiner "Software" einfügen und dort den Code reinschreiben denn Du zyklisch aufrufen willst.

    Viel Glück, ich mach Feierabend.!
    Donnerstag, 21. Juni 2012 14:02
  • ich gebs erstmal auf. bin wohl zu xxxx für c#. dachte hab vb.net kappiert, kann ich auch c# lernen..:-(

    aber trotzdem danke für die tipps

    • Bearbeitet tauricoder Donnerstag, 21. Juni 2012 14:39
    Donnerstag, 21. Juni 2012 14:38
  •  
    warum nicht den Task Scheduler von Windows verwenden?
     
     
     
    Donnerstag, 21. Juni 2012 15:46
  • weil ich es lernen möchte:-) und weil ich aus einer exe über den tag verteilt verschieden aufgaben ausführen lassen möchte. windows scheduler möchte ich dazu nicht nutzen.
    Donnerstag, 21. Juni 2012 16:08
  • kann mir denn keiner helfen? wie bekomme ich dieses prob gelöst. mir qualmt der kopf.

            private static void recognizer_SpeechRecognized(object sender, System.Speech.Recognition.SpeechRecognizedEventArgs e)
            {

                Console.WriteLine(e.Result.Text + " (" + e.Result.Confidence.ToString() + ")");

                if (e.Result.Text == "Status")
                {
                    var speechSynthesizer = new SpeechSynthesizer();
                    speechSynthesizer.Speak("Bereitschaftsmodus.");
                }
                else if (e.Result.Text == "Uhrzeit")
                {
                    var speechSynthesizer = new SpeechSynthesizer();
                    speechSynthesizer.Speak(DateTime.Now.ToString());
                 }

    //##############das hier############

                   DateTime Time = DateTime.Now;
                    int minutes = Time.Minute;

                    if (minutes == 46)  //FIRE ON THE HOUR
                    {
                        var speechSynthesizer = new SpeechSynthesizer();
                        speechSynthesizer.Speak("ja ja");
                    } 

    //###############################################

    habs mit eigenen namespace, eigener klasse versucht.


    • Bearbeitet tauricoder Donnerstag, 21. Juni 2012 16:54
    Donnerstag, 21. Juni 2012 16:54

  • "tauricoder" schrieb

    weil ich es lernen möchte:-) und weil ich aus einer exe über den tag verteilt
    verschieden aufgaben ausführen lassen möchte. windows scheduler möchte ich dazu nicht nutzen.

    Es gibt auch nich andere, Spring oder so...

    Ausserdem kann man den Task Scheduler vollständig, vom eigenen Programm aus, fernsteuern.
     Aber wenn  Du das unbedingt selbär machen willst:

    Man startet seinen Vorgang immer durch auslösen eines Events durch einen Timer. (Beachte: Es gibt mind. 3 Timer in Dot.Net)

    Wenn der um 12:oo was tun soll, musst Du ihn stellen, indem Du ausrechnest wie lange es noch bis 12:oo dauert, vom initialisieren des Programms aus gerechnet. Das kann man mit Timespan.

    Soll sich der Vorgang wiederholen muss das neue Interval berechnet werden und der Timer neu gestartet.
    Man kann natürlich auch mehrere Timer für verschiedenen Aufgaben erzeugen und die Intervalle angepasst berechnen.
    Das dann alles schön in einen Klasse und schon isses fertig.

    Donnerstag, 21. Juni 2012 17:44
  • das ist doch das problem....der timer funktioniert doch. ich komme nur mit den klassen nicht klar. 

      }
                else if (e.Result.Text == "Uhrzeit")
                {
                    var speechSynthesizer = new SpeechSynthesizer();
                    speechSynthesizer.Speak(DateTime.Now.ToString());
                } -----------wie trenne ich diese beiden codes?-----------------
                DateTime Time = DateTime.Now;
                    int minutes = Time.Minute;

                    if (minutes == 07)  //FIRE ON THE HOUR
                    {
                        var speechSynthesizer = new SpeechSynthesizer();
                        speechSynthesizer.Speak("ICH BIN DER CODE, DER AUSGEFÜHRT WERDEN WILL");
                    }

                }
            }
        }
    }

    • Bearbeitet tauricoder Donnerstag, 21. Juni 2012 18:46
    Donnerstag, 21. Juni 2012 18:43

  • "tauricoder" schrieb im Newsbeitrag

    das ist doch das problem....der timer funktioniert doch. ich komme nur mit den klassen nicht klar.

    Das ist Müll, fang von vorne an und mache es richtig

    http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=de-de&k=k(SYSTEM.TIMESPAN);k(TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0%22);k(DevLang-VB)&rd=true

    Donnerstag, 21. Juni 2012 19:07
  • habs hin bekommen. schwitz. ein näherer tipp als nur verweise auf webseiten wäre zwar schöner gewesen, man lernt ja auch durch hilfe vorlagen:-) und als anfänger ließt sich vieles wie brüder grimm aus 2300. aber trotsdem danke:-)
    Donnerstag, 21. Juni 2012 20:43
  • habs hin bekommen. schwitz. ein näherer tipp als nur verweise auf webseiten wäre zwar schöner gewesen, man lernt ja auch durch hilfe vorlagen:-) und als anfänger ließt sich vieles wie brüder grimm aus 2300. aber trotsdem danke:-)
    Dann poste mal Deine/Die Lösung und markiere die Antwort und was für Dich hilfreich war.
    Freitag, 22. Juni 2012 05:25
  • ****************************************************************************************************************
    Dieser Thread wurde mangels weiterer Beteiligung des Fragestellenden ohne bestätigte Lösung abgeschlossen.
    Neue Rückfragen oder Ergänzungen zu diesem Thread bleiben weiterhin möglich.
    ****************************************************************************************************************

    Robert Breitenhofer, MICROSOFT  Twitter Facebook
    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Donnerstag, 28. Juni 2012 16:08
    Moderator