Speicherproblem bei Sniffer
3. Jul 2006, 14:50
Hallo Forum,
ich hab eine Anwendung die mit einer Hardware über Ethernet kommuniziert. Das sind ca. 50 Telegramme pro Sekunde. Da ich darin ein spezielles Protokoll verwenden muss und es mir mühe macht Fehler zu suchen habe ich mir einen Sniffer geschrieben, der die Daten in den Ethernetpacketen aufschlüsselt und mir als Kurven in einem TChart als Kurven darstellt.
Jetzt hatte ich das so gemacht, dass ich ein Event bekomme jedesmal wenn ein Packet kommt ( das Event ist von der Snoop komponente die das mitsniffern erlaubt ). Die Daten dann in ein array kopiert und selbst einen PostMessage ausgelöst um die Daten dann in einer anderen Routine zu verarbeiten und zu zeichnen. Problem ist jetzt dass ich zu langsam bin im zeichnen der Daten. Ich brauche zu lange und die Events stapeln sich so dass ich irgend wann einen EStackOverflow bekomme. Besonders wenn Windows entscheidet im Hintergrund irgend was anderes zu tun.
Jetzt bin ich heute schon den ganzen Tag am suchen und testen um die Daten z.B in eine kbMemTable zu schreiben, und abgeoppelt vom Empfangen diese dann zu verarbeiten. Aber das ist immer noch zu langsam.
Hat jemand eine Idee wie man so etwas hinbekomme kann? Mich würde auch interessieren, wenn ich jetzt was anderes verwende z.B. eine StringList liegt die dann im Speicher und lässt den Stack in Ruhe?
Stack vergößern will ich eigentlich nicht, denn das verzögert das Problem nur. Am Prinzip der Kommunikation kann ich auch nix ändern.
Danke für jeden Vorschlag
In C geschrieben und schön war zuletzt Franz Schuberts 9. Symphonie
|