Buffer für Kommunikation

Gast #4088657
Lesenswert?
• ▲
▼
Hallo,

ich habe momentan ein kleines Problem, ich habe mir einen RFID Reader 
beschafft mit welchem ich Daten Aus einer Karte Auslesen will.

Der Reader liefert recht viele Daten z.B. wenn ich Daten aus dem Tag 
lese.

Da ich verschieden viele Daten erfassen will z.B. 250Byte brauche ich 
einen RX und einen TX Buffer in meinem Controller der das Managt. Die 
Daten kommen per UART rein bzw. Raus.

Wie würdet ihr sowas angehen und wie gehe ich am besten vor um die Daten 
zu verarbeiten...

Ich arbeite auf einem SAM3S1A mit 16k RAM. Dort läuft aber noch ein 
USB-CDC Drauf. Somit habe ich nicht all zuviel speicher frei.

Anbei ein PDF welches die Daten erklärt.
Angehängte Dateien:
Gast #4088666
Lesenswert?
• ▲
▼
Himmel, was machst du denn mit dem CDC, dass von 16K nicht mehr viel 
übrig bleibt.

Allokier dir einfach den Buffern, den du brauchst und fertig. Wenn es 
eng wird, kannst du immer noch überlegen, wie du das optimieren willst.

Grüße
Gast #4088675
Lesenswert?
• ▲
▼
Zunächst mal würde ich raten, dass Problem in den Details zu klären:

1. Wie viele Daten empfängst Du maximal von den Tags?
Die Angabe "z.B. 250 Bytes" könnte bedeuten, dass auch mehr Daten 
ankommen können.

2. Wie viel RAM-Speicher hast Du noch übrig?
Vielleicht reicht er ja. Ist das der Rohwert oder ist da Platz für Stack 
und sonstige Variablen abgezogen?

Da Du uns die Beschreibung der Daten lieferst, liegt die Annahme nahe, 
das Du vermutest, Du könntest einige Daten beim Empfang gleich, 
sozusagen "wegwerfen". Das ist eine durchaus gute Idee.
Sie setzt aber voraus, dass Du einen recht grossen Überschuss an 
Verarbeitungszeit übrig hast. Denn Du musst die Daten sofort oder 
jedenfalls rechtzeitig genug untersuchen können, um die Entscheidung zu 
treffen, was Du behälst und was nicht.
Welche Daten allerdings DU genau aufheben willst und wie viele das sind, 
können wir nicht wissen.

Daher
3. Was geschieht mit den Daten nach dem Empfang?
Gast #4088868
Lesenswert?
• ▲
▼
Hallo,

Also

1. Momentan belege ich mit meiner Applikation ink. USB Stack 9964 bytes 
SRAM. Somit noch gut 6k über.

2. Maximal werde ich momentan ca 1k RX + TX Buffer benötigen um den 
Inhalt einer Karte zu verarbeiten. Also 1024Byte Nutzdaten von der Karte 
+ 13 Byte Command.

3. USB benötige ich da ich eine Config Schnittelle brauche, momentan 
nutze ich die auch noch zum Debuggen.

4. Nach dem Empfangen der Daten rechne ich ein Paar Parameter 
gegeneinander die in den 1024 Byte versteckt sind und prüfe ob die 
Karten Daten OK sind, ist für ne Zugriffskontrolle.

Besten Dank schon mal
Gast #4088876
Lesenswert?
• ▲
▼
Hm. Dann ist Dein Problem also nicht das Du zu wenig Speicher hast. 
Richtig?

Sondern Du fragst danach, auf welche Weise Du Daten verarbeiten kannst. 
Richtig?
Dann erkläre doch einmal was für ein spezifisches Problem Du damit hast.

Mal ganz stumpf gesagt:
An sich verarbeitet man Daten einfach in dem man eine oder mehrere 
Variablen miteinander verknüpft und das Ergebnis einer weiteren Variable 
zuweist.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.