Moin, folgendes Problem: ich möchte per SPI von einer SD-Karte ein Textfile zeilenweise einlesen und analysieren ( AVR_FAT32 ) Das alles soll auf einem Mega 128 oder 256 laufen. Mein Plan: - prüfen, ob Textfile vorhanden ist und File öffnen ( ffopen ) - erste Zeile lesen - gelesen Daten analysieren - tu was - lies nächste Zeile ( loop ) Nun meine Fragen: - wie komme ich an die ERSTE Zeile - mit ffseek(0x00) ?? - wie lese ich die GANZE Zeile ein - bis ich ein 0x13 (CR) lese ?? und was für mich noch sehr schleierhaft ist: wie sieht eine "vorbildliche" zeilenweise Zeichenanalyse aus - da würde mir sicher ein anschauliches Beispiel sehr viel Kopfzerbrechen ersparen. Schon mal vielen Dank für Antworten. Hardy
>- wie komme ich an die ERSTE Zeile - mit ffseek(0x00) ?? Nein, wenn die Datei zum lesen geöffnet wird beginnt sie automatisch bei 0. >- wie lese ich die GANZE Zeile ein - bis ich ein 0x13 (CR) lese ?? Ja.
Textfiles gibt es aus Sicht eines Filesystems nicht - File ist File und basta. Du kannst also bloß blockweise lesen und mußt dir das Ganze dann selbst in Zeilen oder erstmal in einzelne Zeichen zerlegen. W.S.
Offenbar hat er eine FUnktion, die die Blöcke bereits in Einzelzeichen aufbricht und ihm Zeichen für Zeichen liefert. > zeilenweise Zeichenanalyse aus - da würde mir sicher ein anschauliches > Beispiel sehr viel Kopfzerbrechen ersparen. :-) Was dir noch viel mehr Kopfzerbrechen ersparen würde: Ein C-Buch und dort ganz speziell das Kapitel über Stringverabeitung.
hab mir schon KR unters Kopfkissen gelegt ;-) ... bloß einige Dinge leuchten mir erst richtig ein, wenn ich dazu ein passendes Beispiel gesehen habe. So auch Stringzerlegung und Analyse.
Hartmut O. schrieb: > hab mir schon KR unters Kopfkissen gelegt ;-) ... bloß einige Dinge > leuchten mir erst richtig ein, wenn ich dazu ein passendes Beispiel > gesehen habe. So auch Stringzerlegung und Analyse. Das kommt ganz auf die Strings und ihren Inhalt selber an. Auch nicht uninteressant ist, ob es zb einen garantiert immer gleichen Stringaufbau gibt. Je nachdem sind strtok_r, strcmp, strncmp deine Freunde.
mehr oder weniger ist der Inhalt immer gleich. Geplant ist, in ferner Zukunft damit einen rudimentären G-Code-Interpreter zu basteln, welcher im Prinzip nur eine Hand voll Wege- und Maschinenbefehle kennen soll. Zur Stringzerlegung gibt es ja schon eine Menge Threads ... man muß nur die richtigen Begriffe in die Suche eingeben - aber manchmal scheitert es schon daran :-0 Das mit dem "Block-Lesen" muß ich erst mal auseinanderdividieren. Ich gehe mal nun einfach davon aus, dass ein Block nicht unbedingt eine Zeile ist, sondern kompakt die Daten aus dem File liegen, welche nur mit einem 0x13 getrennt werden, stimmts?
Hartmut O. schrieb: > mehr oder weniger ist der Inhalt immer gleich. Geplant ist, in ferner > Zukunft damit einen rudimentären G-Code-Interpreter zu basteln, welcher > im Prinzip nur eine Hand voll Wege- und Maschinenbefehle kennen soll. > Zur Stringzerlegung gibt es ja schon eine Menge Threads ... man muß nur > die richtigen Begriffe in die Suche eingeben - aber manchmal scheitert > es schon daran :-0 > Das mit dem "Block-Lesen" muß ich erst mal auseinanderdividieren. Ich > gehe mal nun einfach davon aus, dass ein Block nicht unbedingt eine > Zeile ist, sondern kompakt die Daten aus dem File liegen, welche nur mit > einem 0x13 getrennt werden, stimmts? So ist das. Wenn du so willst: eine Buchseite. Ohen Rücksicht auf Satzende oder Zeilenumbrüche. Einfach die nächsten 256 (oder 128 oder ... was dir deine SD-Lib anbietet) Zeichen vom File. Was immer die auch sind.
Hartmut O. schrieb: > - wie lese ich die GANZE Zeile ein - bis ich ein 0x13 (CR) lese ?? Argh. Ich versuche jetzt seit 30 Minuten ordentlichen Pseudocode zu schreiben und kriegs nicht hin. :-( Versuchen wir es mit Wörtern: Du liest erstmal einen großen "Batzen" der Datei in den RAM, einzelnde Bytes aus der Datei lesen dürfte länger dauern sofern es überhaupt eine Funktion gibt. Dann fängst du vorne an und suchst den ersten Zeilenumbruch. Anschließend kopierst du die gefundene Zeile eventuell woanders hin und verarbeitest sie und suchst dann die nächste Zeile wobei du ein Zeichen weiter anfängst um das eben gefundene '\n' zu überspringen. Wenn eine Zeile über 2 oder mehr Blöcke verteilt ist wirds etwas schwieriger, dann musst du den ersten Teil sichern bevor der Block überschrieben wird. Eigentlich nur ein paar Schleifen und etwas Pointergewusel. Hm, ist auch nicht besser, aber ich schicks jetzt ab. Pff... > und was für mich noch sehr schleierhaft ist: wie sieht eine > "vorbildliche" > zeilenweise Zeichenanalyse aus Was willst du da "analysieren"?
murkscoder schrieb:
> Was willst du da "analysieren"?
vorweg vielen Dank für deine Pseudo-Code-Bemühungen!
Na ja, wie ich schon angedeutet habe will ich sogenannten G-Code
interpretieren und danach verarbeiten. Dazu müssen alle Zeichen
nacheinander untersucht, auf plausibilität geprüft und dann
dementsprechend abgearbeitet werden.
Aber langsam geht mir ein Licht auf und habe eine vage Vorstellung von
dem, wie ich das anstellen will :-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.