Forum: Mikrocontroller und Digitale Elektronik Events in Strings mitzählen


von Alex (Gast)


Angehängte Dateien:

Lesenswert?

Guten Abend,

wäre cool wenn mir jemand bei folgendem Problem weiterhelfen könnte.

Ich möchte gerne einen String auf Zeichen bzw Events kontrollieren. Nun 
ist es so,  dass ich die Events bei vc_data[0] (Event1) und vc_data[9] 
(Event2)  kontrollieren will. Allerdings treten Events bei vc_data[9] 
erst nach einiger Zeit und in Kombination mit vc_data[0] auf.

Sprich, detektiere ich vc_data[0] weiß ich nicht, ob das nur ein 
„reiner“ Event1 ist, oder doch ein Event2. Aus diesem Grund, will ich 
nach dem detektieren des Events 1 warten bis evtl Event 2 eintritt. Ich 
hab mal einen Entwurf im Anhang. Allerdings frag ich mich, ob das evtl. 
noch einfacher oder etwas geschickter durchführbar ist.

Bin für jede Hilfe dankbar!

Alex

von Karl H. (kbuchegg)


Lesenswert?

Alex schrieb:
> Guten Abend,
>
> wäre cool wenn mir jemand bei folgendem Problem weiterhelfen könnte.


Nimm an dein Programm empfängt nacheinander

3000000000
3000000000
3000000001
7000000001
7000000000
0000000000
0000000001


und geh deinen Code mit jedem neuen String durch und sieh dir an, ob er 
richtig reagiert.

Sorry. Aber da musst du durch. Das mussten wir alle mal lernen, wie man 
seinen eigenen Code entweder im Kopf oder auf dem Papier durchspielt um
nachzusehen, was er eigentlich macht und ob das das ist, was man haben 
will.

von Thorsten (Gast)


Lesenswert?

Warum denn so kompliziert?
Wenn du zwei Fallunterscheidungen hast, dann reicht es doch das du bei 
einem Event erst mal bis 4 hochzählst, bspw. bis 4, und dann erst die 
eins setzt bzw summierst. Wenn in dieser Zeit, in der Event eins gezählt 
wird, Event 2 auftritt, so wird das detektiert und auf eins gesetzt bzw. 
summiert. Im Grunde erzielst du mit den unteren Zeilen den gleichen 
Effekt. Grüße

if( ( vc_data[0] == '2' ) ||
    ( vc_data[0] == '3' ) ||
    ( vc_data[0] == '6' ) ||
    ( vc_data[0] == '7' )

        tc_counter++;
      else
        tc_counter = 0;

          if( tc_counter == 4 )
            summe += 5;

von Alex (Gast)


Lesenswert?

Hallo,
ich hab mir den Hinweis von KH zu Herzen genommen und alles nochmal 
durchgecheckt...Musste einiges noch optimieren und es klappt soweit.

Allerdings steh ich jetzt auf dem Schlauch.

Ich möchte prüfen ob ein bestimmter String A nach einer Reihe gleicher 
Zeichenketten B eintritt. Wenn ja soll ein Flag für String A gesetzt 
werden, ansonsten für String B.

Also:

0000100008 (String B)
0000100008
0000100008
0000100008
0000000009 (String A) Flag A = 1

Ich weiß allerdings nicht wie oft String B aufeinander folgt, bis String 
A eintritt. String A muss aber nicht eintreten.

Ich brauch hier doch irgend ein Offsetwert der mir sagt, wann das Flag 
nun für B oder für A gesetzt wird, oder? Gibt es da eine 
Alternativmöglichkeit diese Problematik zu lösen? Hat mir jemand ein 
Tipp? Grüße

von Köppel (Gast)


Lesenswert?

Da benötigt man wohl oder übel ein Wert, der dir sagt: In diesem Bereich 
liegt Event A oder Event B vor. Anders lässt sich das nocht realisieren.

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.