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



BeitragVerfasst: Do 29.01.09 18:17 
Guten Tag liebe Entwickler,

ich schreibe gerade ein Programm in C#, das CAN Werte an eine Bremseinheit sendet.
Der CAN-Adapter ist von Peak Systems und Dank C# DLL ist das Ansprechen dieses Dongle ein Leichtes.

Um den zeitlichen Abstand zwischen 2 Nachrichten einzustellen, verwende ich das Timer-Objekt.
Das funktioniert auch ganz gut, jedoch kommt das Programm teilweise ins Schwanken und hält den Abstand nicht mehr (z.B. wenn ein anderes Programm, z.B. MS Office Ressourcen verbraucht).

Gibt es eine Möglichkeit die Priorität meiner Applikation zu erhöhen oder könnte ich anstatt dem Timer auch eine andere Funktion nutzen, um den Abstand zwischen den CAN-Nachrichten zu definieren?

Ich habe nämlich festgestellt, dass wenn ich zwei oder mehrere Timer laufen lasse, die CPU-Last dramatisch steigt.

Ich bedanke mich schon einmal für eure Hilfe und wünsche noch einen schönen Feierabend.

freundliche Grüße
Jan


Moderiert von user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Do 29.01.2009 um 17:21
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Do 29.01.09 20:43 
:welcome:

System.Windows.Forms.Timer, nehme ich an? Versuch es mal mit einem System.Threading.Timer, der sollte genauer sein.
Da den Flaschenhals wohl die Kontextwechsel darstellen, könntest du auch mit Thread.Priority experimentieren. Oder du gibst mit Thread.SpinWait in einer Schleife die Zeitscheibe gar nicht mehr vorzeitig ab, dann hast du allerdings 100% CPU-Auslastung.

_________________
>λ=
freilicht Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Fr 30.01.09 09:24 
Vielen Dank!

Ja, ich verwende derzeit den Windows.Forms.Timer.
Ich werde Anfang kommender Woche mit dem Threading.Timer experimentieren und meine Erfolge oder auch Misserfolge hier berichten :)