Hallo ,
Ich habe Daten Zeilenweise in einer normalen .txt Datei nun möchte ich
jede Zeile dieser .txt Datei in einen eigenen Sektor der SD-Karte
schreiben (ein Sektor 512 Byte) .
Gibt es dafür ein Tool ? Denn jede zeile von Hand mittels Hex-Editor in
einen eigene Sktor zu kopieren ist sehr umständlich.
Liebe Grüße
Hermann
Ich nehme mal an hier kommt keine Antwort, weil die Fragestellung bei
jedem der sie liest und nicht Gedanken lesen kann erst mal 1000
Gegenfragen aufwirft!
Auf welchem System wurde die Textdatei erstellt? PC oder uC? Befinded
sich die Text-Datei auch schon auf der SD-Karte?
Auf welchem System willst Du die Sektoren erstellen? PC? Win? Linux? uC?
Wie bestimmst Du die Sektoren? Sollen die innerhalb einer Datei liegen?
Muss FAT heile gelassen werden - sprich soll die SD-Karte anschließend
noch von einem PC lesbar sein?
In Linux dürfte das ganze am einfachsten gehen. Ein wenig XARGS, AWK, DD
und schon ist die Text-Datei auf Sektoren verteilt aber FAT kaputt ;o)
PC - Einfach ein Programm schreiben, das dir aus der Txt-Datei eine
*.DAT oder *.RAW oder wie Du sie auch nennen willst erzeugt. Lese Zeile,
schreibe Zeile + (512-Zeilenlänge). Dateien fangen immer bündig mit
einem Sektor an. Das heißt durch das auffüllen landet jede Zeile in
einem eigenen Sektor wenn man die Datei dann auf die SD kopiert. Wenn
die SD-Karte leer ist (frisch formatiert), dann sind die Sektoren auch
aufsteigend. Vorteil: die FAT bleibt ganz.
uC - jegliche Lib zum Zugriff auf eine SD-Karte sollte auch einen
low-level-Part haben, der auf Sektoren zugreift.
auf dem PC(Win7) wird die textdatei erstellt .
Nein die Textdatei befindet sich nicht auf der sd karte .
Die Sektoren sind auf dem PC erstellt und FAT muss nicht heil bleiben da
die Sektoren nurmehr vom µC ausgelesen werden müssen .
Ich will nur vom PC(Win7) direkt auf die SD Karte (ohne FAT) zeile für
zeile dieser Textdatei in einen eigenen Sektor kopieren ,ohne es von
hand zB mit einem hexeditor machen zu müssen.
Das ganze dient dazu das ich mit dem µC dann diese daten Sektorweise
auslesen kann.
Wieso nimmst Du nicht einfach die FAT Bibliothek von Elm Chan auf dem
µC, dann hast Du damit gar kein Problem? Alternativ schreib doch die
Daten mit dem µC(über RS232 vom PC) auf die SD-Karte.
Gruß
Thomas
Hermann schrieb:> ohne es von> hand zB mit einem hexeditor machen zu müssen.
Warum nicht von Hand? Wie viele tausend SD-Karten möchtest du denn
beschreiben?
Ich würde es so machen:
1. Zeilen auffüllen (mit einem Script in der Sprache deiner Wahl)
2. mit HxD auf die SD Karte kopieren
asdf schrieb:> Warum nicht von Hand? Wie viele tausend SD-Karten möchtest du denn> beschreiben?
Meine 2 GB Sd karte hat tausende 512 Byte Sektoren und das Textfile auch
bis zu zweitausend von dem her ist das etwas mühselig ^^
aber ich werds mal mit Python probieren,ein Script zu schreiben, auch
wenn ich bis jetzt noch 0 ahnung davon habe .
Ich hatte nur gehofft das soetwas in der Art schon wer gemacht hat somit
würde ich mir einen beträchtlich Aufwand ersparen um eine Script Sprache
zu lernen .
Aber trotzdem danke das mit den Zeilen auffüllen ist garkeine so
schlechte Idee .
Ich hab' mal so was Ähnliches mit "dd" für Windows gemacht. Kopiert was
auch immer mit beliebigem Offset auf die Karte. Braucht
Admin(elevated!)-Rechte.
Gruß,
Oliver
Der Grund ist das auf der SD karte genug Sektoren sind und ich mir mit
dem µC leicht beim auslesen/filtern der zeilen tue .
Etwa 50 Zeichen pro Zeile sind sie lang.
Einen dd Befehl einfach in eine cmd befehlszeile? Funktioniert das?
Danke für die Antworten (:
Lg
Das funktioniert sogar einwandfrei. Schreibe Deine Daten in eine Datei
und kopiere die dann mit "dd" auf die Karte. Ich habe mal für einen
Sound-Geocache ein Programm geschrieben, welches auf diese Art und Weise
ein primitives Dateisystem für einen einfachen MC auf der SD-Karte
anlegt.
Für FAT war der MC viel zu schwach, mit meinem ollen Dateisystem hat es
trotzdem gut geklappt.
Du solltest darauf achten immer "dd --filter=removable ..." zu
verwenden, um Dir nicht Deine Platten zu schrotten ;-)
Gruß,
Oliver
Okay ich habs gerade probiert ich schreibe :
dd if=C:\Python27/test12.txt of=F
wenn ich mir dan aber mit einem hexeditor(HxD) die SD karte ,die bei mir
das Laufwerk F: ist ansehe, sehe ich das File nicht.
Mfg Hermann
Nun ja, die Syntax zu "dd" solltest Du schon kennen, bevor Du das
Kommando benutzt. "dd --list" zeigt Dir die Partitionsnamen an, die Du
dann verwenden musst. Bei meinem USB-Stick lautet das z.B.
"of=\\?\Device\Harddisk2\Partition0". An Deiner Stelle würde ich ja das
"--filter=removable" nie weglassen!
Gruß, Oliver
Sicher würde ein Python-Profi das anders/besser machen, aber für die
allererste Stunde Python geht's und Liefert das, was gebraucht wird.
Einfach die Filenamen entsprechend anpassen und schon hast Du ein File,
welches 512 byte pro Zeile hat.
Das dann einfach auf eine frisch formatierte SD-Karte kopieren und FAT
bleibt erhalten. Musst halt in Deinem Programm herausfinden oder
hardcoden wo der erste Sektor der Datei liegt.
Oder du nimmst dd und schreibst das File Sektorweise auf die SD-Karte.
PS: das "if len( aline ) > 0:"
liegt eigentlich auf der gleichauf mit dem "if len( aline ) == 0:"
Ebenso "out_line = aline[ 0:len( aline )-2 ] + empty_sector[ len( aline
)-2:512 ]"
und "out_file.write( out_line )"
Hat das Forum-System scheinbar was dagegen! Vermutlich ist es durch den
Mix von Tabs/Spaces durcheinander gekommen.
Oliver R. schrieb:> "dd --list" zeigt Dir die Partitionsnamen an, die Du> dann verwenden musst. Bei meinem USB-Stick lautet das z.B.> "of=\\?\Device\Harddisk2\Partition0". An Deiner Stelle würde ich ja das> "--filter=removable" nie weglassen!
Wenn ich bei cmd "dd --list" eingebe kommt
"unrecognized option Try ´dd --help´"
und im help stehen dan die üblichen funktionen wie if,of,bs usw ..
--filter=removable schmeist er mir genau das selbe raus .
komm ich sonst irgendwie zu dem Pfad? oder mache ich was falsch?
Ich wusste doch, dass es besser geht!
Wäre ich nicht über den linecache gestolpert ... wer weiß wie es dann
aussehen würde. Auf .strip() und *"\0" kommt man auch nicht so einfach
in nem ultra-schnellen Selbststudium ohne Tuts - also ausschließlich
anhand der Hilfe.
Danke @asdf
Eine eigene Frage?
Dieser Thread ist über 14 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.