Wie einen Datenstrom auswerten



  • Mir ging es eher um die Art und Weise der Auswertung ohne auf eine spezielle Programmiersprache einzugehen.

    Die Daten sind mit verschiedenen Startmarkierungen (festgelegte Zeichen) markiert.

    Die Zeichen (...,10,2A,...) bedeuten also, dass die Nachricht 2A beginnt. In den Specs steht dann an welcher Stelle der Nachricht welche Info zu finden ist.

    Eine meiner zetralen Fragen lautet:"Wie wartet man möglichst Rechenzeitschonend auf eine Folge von Zeichen in einem Datenstrom"? In diesem Fall also 10 gefolgt von 2A.

    Grüße



  • naja, also wenn du wirklich nur nach dem Zeichen 102A suchst, dann kopier doch deinen Datenstrom in einen std::string (also jetzt in C++) und mach dann ein string::find("102A"); ich glaube was besseres als ne sequentielle suche gibts für dien Problem nich.



  • 0Ahnung schrieb:

    Die Zeichen (...,10,2A,...) bedeuten also, dass die Nachricht 2A beginnt. In den Specs steht dann an welcher Stelle der Nachricht welche Info zu finden ist.

    mach es online. lies den datenstrom byteweise bis du auf 0x10 und diese message-id (0x2a) triffst. dann byteweise weiterlesen und irgendwas damit anstellen bis die message zuende ist. das ist oft besser als erstmal alles abzuspeichern und hinterher auszuwerten...



  • So wie "net" es beschreibt, mache ich die Auswerung zur Zeit. Ich habe nur leider einen Code geschrieben, der etwas unübersichtlich geworden ist. Ich werde Ihn nochmal schreiben, diesmal allerdings mit Funktionen (C++).

    Dazu habe ich noch ein anderes Problem.

    Auf dem gleichen Rechner läuft noch ein anderes Programm, das aber nicht von mir ist und von dem ich auch keine Code habe. Nun diesen Programm fordert fast die gesammte Rechenleistung, sodass ich Lücken in meiner Aufzeichnung habe.
    Welche Möglichkeiten habe ich unter WinXP ein bestehendes Programm zu beeinflussen? Ich dachte man könnte die Priorität des Programmes verändern.

    Grüße



  • hm... naja priorität verändern müsste doch schon was bringen. Und die eigene Priorität hoch setzen. Und wenn alles nichts hilft: Kill das andere Programm 🙂



  • Maxi schrieb:

    Und wenn alles nichts hilft: Kill das andere Programm

    Na ja, das andere Programm ist der Sinn des Rechners. Wenn das nicht läuft, kann ich es auch lassen 😉

    Wie setzt man die Priorität eines Programmes runter, am besten per Batch-Script oder so -> WinXP.

    Grüße



  • oder besser die rs232 mit rts/cts betreiben...



  • Was kann das?



  • damit kann der empfänger den sender stoppen, wenn er nicht hinterherkommt.



  • Vorausgesetzt, es ist beim Sender implementiert.



  • Ist es wahrscheinlich nicht. Die Daten kommen einfach über die Schnittstelle, was damit geschieht ist dem Sender egal.

    Ich danke schon mal allen die sich die Zeit genommen haben zu antworten.

    Ich werde meinen Code dahin überarbeiten, dass ich ihn lesbarer gestalte und evtl. die Daten sekundenweise speichere (jeweils ein komplettes Frame) und danach verarbeite.

    Grüße



  • 0Ahnung schrieb:

    So wie "net" es beschreibt, mache ich die Auswerung zur Zeit. Ich habe nur leider einen Code geschrieben, der etwas unübersichtlich geworden ist. Ich werde Ihn nochmal schreiben, diesmal allerdings mit Funktionen (C++).

    Dazu habe ich noch ein anderes Problem.

    Auf dem gleichen Rechner läuft noch ein anderes Programm, das aber nicht von mir ist und von dem ich auch keine Code habe. Nun diesen Programm fordert fast die gesammte Rechenleistung, sodass ich Lücken in meiner Aufzeichnung habe.
    Welche Möglichkeiten habe ich unter WinXP ein bestehendes Programm zu beeinflussen? Ich dachte man könnte die Priorität des Programmes verändern.

    Grüße

    Wenn du schon C++ programmierst, dann mach es objektorientiert 🙄



  • DEvent schrieb:

    Wenn du schon C++ programmierst, dann mach es objektorientiert 🙄

    na klar 😮 man kann alles mit gewalt in ein objektorientiertes schema pressen. egal wie widerspenstig sich das problem auch gibt...



  • es beantwortet meine Frage nicht bzw. es ist keine Lösung. Ich kann beide lösungen OO machen (den Datenstrom vorher speichern oder direkt auswerten) das Eine hat mit dem Anderen nichts zu tun.

    Mir ging es um einen prinzipielle Lösung des Problems. Deshalb bin ich auch nicht ins C++-Forum gegangen. Die verwendete Sprache ist EGAL. Es ging nur darum verschiedene Wege zu diskutieren.

    Aber trozden Danke für die Anteilnahme

    Grüße


Anmelden zum Antworten