Autor Beitrag
Mr Bean
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 07.12.08 22:41 
Hallo

Ich möchte mich erstmal vorstellen und hallo zu allen hier im Forum sagen. Ich studiere Elektrotechnik. Hier haben wir unter anderem ein Fach Namens Informatik. Wir arbeiten hier mit Visual Studio 2008 und programmieren in C#.
Ich habe hier die Aufgabe bekommen eine Klasse zu programmieren die eine Einschaltverzögerung darstellt. Ihr wird also eine Zeit (Double) und ein Signal (bool) übergeben. Zurückgeliefert werden soll der Ausgang (bool) und die abgelaufene Zeit (double).
Mir fehlt da immernoch etwas der Ansatz. Ich habe jetzt etwas im Internet gestöbert und bin immer wieder auf System.Windows.Forms.Timer gestoßen. Ich bin mir aber nicht ganz sicher ob das der richtige für mein Problem ist.
Könnt ihr mir da weiter helfen und vielleicht auch noch ein paar gute Tips zum generellen Programmieren der Klasse geben?
Vielen Dank schonmal im Voraus!

Gruß

Bean
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: So 07.12.08 23:58 
Einschaltverzögerung hört sich nach einem synchronen Vorgang an. Heißt solange bis die Zeit abgelaufen ist soll die Anwendung nichts anderes tun.

Insofern wäre eher ein Slepp über System.Threading.Thread.Sleep das passende Stichwort.
Wenn es doch etwas asynchrones sein soll ist ein Timer eine gute Wahl. Du solltest aber eher auf System.Timer schauen und nicht den von Winforms verwenden. Zumindest solange du keine GUI programmierst und den Timer über den Winforms Designer einstellen möchtest.

Ansonsten ist die Fragestellung noch etwas unklar.
Ist Signal = Ausgang? Warum ist die Zeit in Double? Und in welcher Einheit?
Ich hätte gedacht an unseren Hochschulen gibts deutlichere Aufgabenstellungen.
Mr Bean Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mo 08.12.08 00:39 
Hallo

Vielen Dank für die Antwort!
Also die Aufgabe ist eigentlich mehrere Logik Gatter zu implementieren (NAND,OR, RS, TON etc.). Mir fehlen eigentlich nur noch das RS und das TON. Die anderen hab ich schon hinbekommen (waren auch nicht so schwer...) Warum die Zeit in Double ist kann ich leider auch nicht sagen, das steht so in der Aufgabenbeschreibung. Die Einheit der Zeit ist sec.
Der Ausgang ist im Endeffekt nur eine Variable, die ich dann wieder an eine andere Klasse zurück gebe.

MFG

Bean
Mr Bean Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mo 08.12.08 11:37 
Hallo

So habe das nun mal mit folgendem Code probiert:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
public TOFElement(uint ID, InPort start, InPort time)
            : base(ID)
        {
            System.Timers.Timer TON = new System.Timers.Timer();
            TON.Elapsed += new System.Timers.ElapsedEventHandler(result=true);
            TON.Interval = time;
            TON.Enabled = start;
        }


Das ist für mich auch plausibel, ich braucht jetzt ja aber noch irgendwoher die Zeit die verstrichen ist, die soll ich auch mir ausgeben. Konnte da aber nirgends etwas brauchbares finden.
Könnt ihr mir weiterhelfen?

Gruß

Bean

Moderiert von user profile iconKha: C#-Tags hinzugefügt
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mo 08.12.08 17:10 
user profile iconMr Bean hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden C#-Quelltext
1:
TON.Elapsed += new System.Timers.ElapsedEventHandler(result=true);					
Das dürfte so nicht funktionieren.

Mir ist immer noch nicht klar, was mit dem Zeit-Double passieren soll. Wenn es darum geht, eine Methode/den Konstruktor diese Zeitspanne warten zu lassen, ist Thread.Sleep der richtige Weg.

_________________
>λ=