PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fragen zu Uart Datenverarbeitung



Blamaster
16.07.2008, 15:30
Hi,

ich stehe gerade total aufm Schlauch.

Ich sende vom Pc an den µC über die Hardware Uart Daten an den µC die dieser dann verarbeiten soll.

Wenn über die Uart der String "Start" reinkommt soll der µC wissen das nun die zu speichernden Daten kommen. (Bis hier auch noch kein Problem)

Daten1
Daten2
Daten3
Daten4

sind arrays die jeweils die gesendeten Werte annehmen sollen.

es sollte also wie folgt funktionieren

Start befehl kommt rein.

Daten1(1) nimmt den nächsten reinkommenden Wert an.
Daten2(1) nimmt den nächsten reinkommenden Wert an.
Daten3(1) nimmt den nächsten reinkommenden Wert an.
Daten4(1) nimmt den nächsten reinkommenden Wert an.

Nun soll das nächste Array genommen werden also 2

Daten1(2) nimmt den nächsten reinkommenden Wert an.
Daten2(2) nimmt den nächsten reinkommenden Wert an.
Daten3(2) nimmt den nächsten reinkommenden Wert an.
Daten4(2) nimmt den nächsten reinkommenden Wert an.

So soll das ganze dann immer wieter gehen, bis über die Uart der wert Fertig übergeben wird.

Für die Arrays würde ich jetzt ein Byte z.B. I deklarieren, welches nach einem kpmpletten Datensatz um 1 hochgesetzt wird.

Nur ich habe gerade keine Idee wie ich es schaffen kann den satz an Daten zu verarbeiten. Also wie ich es hinbekommen kann das der 1. Wer in Daten1 kommt der nächste in Daten2 usw.

Ich hoffe es kann wer helfen.

mfg Blamaster

Jaecko
17.07.2008, 06:52
Mit "If-Anweisungen" gehts immer, aber ist halt unsauber.
In C wäre da der Vorteil, dass man mehrdimensionale Arrays zaubern kann, also Daten[x][y].
Was mir dazu einfallen würde, wäre, dass du den Array evtl mit Daten(z) ansprichst.
Du hast z.B. Daten1...4 und jeder Array selbst hat z.B. mal 10 Elemente:



DIM Daten(40) ' 10 Elemente * 4 "virtuelle Arrays" = 40
x = 2 'ansprechen von Array 2, Daten2(..)
y = 6 'Array 2, Element 6, Entspricht Daten2(6)
z = x * 4
z = z + y
Daten(z) = ...


Im Speicher siehts dann ähnlich aus, wie bei den C-Arrays; also so (Daten abgekürzt als D):
D1(1), D1(2), D1(3)... D1(9), D1(10), D2(1), D2(2)... D4(8), D4(9), D4(10)

Damit könntest du jetzt die Werte x, y per Zähler verändern.

Blamaster
17.07.2008, 10:44
Hi,

danke schonmal

und wie würde das mit if anweisungen zu realisieren sein ?

Jaecko
17.07.2008, 10:47
In etwa auch mit x und y:

If x = 1 Then Daten1(y)...
If x = 2 Then Daten2(y)...
...