Forum: PC-Programmierung zyklisches senden von Daten in einem Thread C#


von Michael (Gast)


Lesenswert?

Hallo,
ich hab einen Thread gestartet und möchte das dieser jede Sekunde Daten 
per COM-Port verschickt. Alos Thread starten etc. funktioniert ohne 
Probleme .Allerdings habe ich Probleme mit dem zyklischen versenden der 
Daten. Habe eine while() Schleifdie wie folgt aussieht:
1
while (!_shouldStop)
2
        {
3
ticker = new Stopwatch();
4
long frequency = ticker.frequency;
5
ticker.Start();
6
if ((ticker.Elapsedtick() / frequency) > 1)
7
{
8
ticker.stop()
9
           write_Data();
10
ticker.Reset();
11
ticker.Start();
12
}
13
        }
Das Problem ist das es nicht wirklich im Sekundentakt funktioniert. Es 
ist mal mehr mal weniger...
Gibt es eine andere Lösung/bessere Lösung???

Vilene Dank für eure Antwort...

von Peter II (Gast)


Lesenswert?

dafür gibt es doch den Timer, dann wird eine funtion jeden Sekunde 
aufgerufen.

von Michael (Gast)


Lesenswert?

Und wie geht es mit dem? Ich habe es nicht hinbekommen....

Grüße

von keystone (Gast)


Lesenswert?

[c]
private void tmrEditNotify_Tick(object sender, EventArgs e)
        {
            if (m_btrack)
            {
[/c ]

so gehts

von Michael (Gast)


Lesenswert?

aber ich kann den Timer nachdem ich ihn gestoppt habe nicht mehr 
starten? also wenn ich will, dass das zyklishce senden aufhört bzw. es 
wieder starten will..

von bluppdidupp (Gast)


Lesenswert?

1
TimeSpan sleepTime=new TimeSpan(0,0,1); // 1sek
2
while (!_shouldStop)
3
{
4
    write_Data();
5
    Thread.Sleep(sleepTime);
6
}

von Peter II (Gast)


Lesenswert?

bluppdidupp schrieb:
> TimeSpan sleepTime=new TimeSpan(0,0,1); // 1sek

das ist aber leider nicht genau, es veschieb sich immer um die 
sendedauer. Und das macht sich bei Serial doch bemerkbar.

von bluppdidupp (Gast)


Lesenswert?

Wohl wahr, der Windows-Forms Timer ist allerdings auch nicht viel besser 
(oder welche Timer-Klasse ist gemeint?)

Recht genau sind Waitable-Timer, dafür gibt es aber glaube ich keine 
Klasse im .net-Framework (aber auf codeproject meine ich ne 
Wrapper-Klasse gesehen zu haben)
Für ne Waitable-Timer Wrapper-Klasse im Eigenbau:
- 
http://msdn.microsoft.com/en-us/library/windows/desktop/ms682492%28v=vs.85%29.aspx
- 
http://msdn.microsoft.com/en-us/library/windows/desktop/ms686289%28v=VS.85%29.aspx
- 
http://msdn.microsoft.com/en-us/library/windows/desktop/ms687032%28v=VS.85%29.aspx

...wobei es evtl. sinnvoller wäre (insbesondere im Hinblick auf 
USB-Adapter) das Erzeugen des richtigen Timings auf nen Mikrocontroller 
auszulagern.

von bluppdidupp (Gast)


Lesenswert?

(Die Sendedauer könnte man natürlich noch messen und abziehen)

Beitrag #5039056 wurde von einem Moderator gelöscht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.
Lade...