COM Port und Timer
-
Das Problem sieht so aus:
Ich lese Daten über eine serielle Schnittstelle ein und lasse mir diese in einem Fenster anzeigen. Jede Sekunde bearbeite ich mittels Timer die Daten (1. Berechnung von Werten aus den Daten; 2. speichern der Daten in einer Datei; 3. Visualisierung). Bei ein paar Daten klappt das auch einwandfrei. Nun sende ich zum Beispiel alle 50µs Werte, dann rattern diese in mein Fenster, doch die Timer treten nie in Aktion! Warum?? ...sprich: Es wird nix mehr gespeichert, berechnet oder visualisiert! Warum?
-
Hallo
Ich habe ja keine genauen Vorstellungen von deiner genauen Implementierung der Zusammenarbeit von Ser. Schnittstelle und Timer, aber da der TTimer ja maximal auf 1ms herunterzusetzten geht (effektiv nicht weniger als 20ms) bekommst du vielleicht probleme, weil mehr Daten als erwartet pro Timer-Aufruf ankommen?
Das ist offensichtlich ein Design-Problem, das nur durch Einblick in den Code gelöst werden kann. Du sagst ja selber, das die Signale korrekt an deine Anwendung übergeben werden, oder?
bis bald
akari
-
Also ich öffne den ComPort (ComPort1->Open();) und lese mit dem Ereignis OnRxChar die eingehenden Daten in ein Fenster ein:
void __fastcall TForm1::ComPort1RxChar(TObject *Sender, int Count) { unsigned char a; for(int i=0; i<Count; i++) { ComPort1->Read(&a,1); EmpfangUSB->Lines->Add(a); // EmpfangUSB = Memo-Fenster } }Nun möchte ich mit den eingehenden Daten Berechnungen durchführen, sie in einer Datei abspeichern und grafisch darstellen. Diese drei Aufgaben werden über Timer gesteuert. Nur leider werden sie (auf Grund der Datenflut!?) nie ausgelößt.
z.B.void __fastcall TForm1::Timer1Timer(TObject *Sender) { CODE }Die Timer haben Intervalle von 1 oder 1000! Wie schaffe ich es, dass sie ausgelößt werden? Danke für Hilfe!