Hallo, ich möchte per UART mehrere aneinander gereihte hex-Werte auswerten. Ich bekomme alles problemlos hin, wenn ich nur EINEN hex-Wert (bspw. 01) auswerte. Leider scheitere ich an dem ganzen String: 01040A00FF - das ist der kommende Befehlssatz bzw. String. Dieser wird immer mit FF abgeschlossen. Momentan realisiere ich das über eine If-Schleife. Bin Newbie, habe versucht das hier: Beitrag "mittles ATmega VISCA "hex Werte" empfangen und auswerten" schon einmal darzustellen. Der Thread ist aber etwas lang geworden. Danke und Gruß Christoph
Ch Sp schrieb: > Momentan realisiere ich das über eine If-Schleife. das ist nicht gut, versuch mal eine while-Schleife
Hallo Walter S., warum ist eine If-Schleife nicht gut?
Alles Schrott. Das Mittel der Wahl heisst Zustandsmaschine. (Statemachine)
Hallo, das habe ich nach Lesen im Internet so halb verstanden. Habe mein programm auf Case umgestellt. Jetzt habe ich folgendes Problem:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
Wobei das so ja falsch ist: Case &H01040602FF Das sind ja 5 Byte (??), also muss die Variable ein String sein (??) Habs probiert, aber ich habe auch nichts gefunden, was da näher bringt. Auch jeden Wert einzeln macht mir beim compilieren Probleme...
Gast
#2295442
if ist keine Schleife sondern ne Verzweigung ... Dein Codeschnipsel ist Müll ...
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |
63 | |
64 | |
65 | |
66 | |
67 | |
68 | |
69 | |
70 | |
71 | |
72 | |
73 | |
74 | |
75 | |
76 | |
77 | |
78 | |
79 | |
80 | |
81 | |
82 | |
83 | |
84 | |
85 | |
86 | |
87 | |
88 | |
89 | |
90 | |
91 | |
92 | |
93 | |
94 | |
95 | |
96 | |
97 | |
98 | |
99 | |
100 | |
101 | |
102 | |
103 | |
104 | |
105 | |
106 | |
107 | |
108 | |
109 | |
110 | |
111 | |
112 | |
113 | |
114 | |
115 | |
116 | |
117 | |
118 | |
119 | |
120 | |
121 | |
122 | |
123 | |
124 | |
125 | |
126 | |
127 | |
"Müll" ist als Umschreibung auch Müll! Das If eine Verzweigung und keine Schleife ist, werde ich mir aber merken.
Gast
#2295498
Hi, so wie ich das sehe wird dein Code nicht funktionieren. Du list mit dieser Zeile immern nur ein Byte aus
1 | |
2 | |
Allerdings ist jedes Zeichen, dass über die RS232-Schnittstelle gesendet wird jewels ein Byte. Du musst dir mal genau anschauen, wie die Zeichen codiert sind (ASCII, hex,...). Wenn ich deinen Post richtig verstanden habe, dann ist das ganze jeweils ein ganzer Befehlsblock, richtig? Du musst dir also einen Zwischenspeicher programmieren, z.B. indem du die Werte in ein Array schreibst nachdem ein FF enfangen wurde, wenn dann wieder FF empfangen wurde, kannst du dein Array (also deinen Befehl) auswerten. Gruß Astroscout
Guten morgen! Ja, eigentlich total offensichtlich... Kommentar... Die Zeichen sind hex Werte, also ein Block immer abgeschlossen durch FF. Das mit dem Zwischenspeicher muss ich mir dann noch mal anschauen.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.