Seite 3 von 3

Re: Verzeichnisübersicht

BeitragVerfasst: Sa 21. Nov 2009, 11:28
von SimonLothar
1. char/integer-Zuweisungen:
Man kann "unsigned char"- und "unsigned integer"-Variablen gegenseitig zuweisen. Man muss allerdings an den zulässigen Wertebereich denken. unsigned char kann eben nur 0..255 fassen.

2. Bfile_WriteFile:
Du hast keinen Fehler gemacht!

Bfile_WriteFile hat aber ein paar unangenehme Eigenschaften, die dummerweise im Handbuch nicht erwähnt werden.
In Deinem Beispiel liest Du zunächst eine Datei ein. Der Dateizeiger steht danach am Ende der Datei.
Anschließend schreibst Du direkt weiter.
Bfile_WriteFile kann eine existierende Storage-Memory-Datei aber nicht über den einmal mit Bfile_CreateFile reservierten Bereich hinaus verlängern.
Selbst wenn Du den Dateizeiger mit Bfile_SeekFile zurückpositionierst, dann könnte man zwar mit Bfile_WriteFile bedingt schreiben. Bfile_WriteFile kann aber wegen technischer Limitierungen des Flash-Chips grundsätzlich keine 0->1 Bitveränderung schreiben. Bfile_WriteFile hängt den Rechner vielmehr beim Versuch, eine 0->1 Bitveränderungen zu schreiben, gnadenlos auf. Die Ursache hierfür ist ein Bug in der low-level Routine, die den Flash-Chip schreibt.

Der sichere Weg, eine bereits beschriebene Datei im StorageMemory zu verändern, ist: lesen->löschen->neu anlegen. Damit eignet sich das StorageMemory nicht unbedingt für Dateien, die häufigen Änderungen unterliegen, da Dein Programm dann irgendwann wegen einer erforderlichen Optimierung des StorageMemory's versagen wird.

Man muss auch aufpassen, wenn man im StorageMemory eine Datei mit Bfile_CreateFile neu anlegt und dann portionsweise mit Bfile_WriteFile füllt. Wenn man einmal eine ungerade Anzahl von Bytes geschrieben hat, kann man nicht mehr erfolgreich weiterschreiben! Die low-level Routine, die den Flash-Chip schreibt, arbeitet WORD-orientiert. Das würde ich zwar nicht unbedingt Bug nennen, aber man hätte das im Handbuch erwähnen müssen.

Und Achtung! Bfile_WriteFile hat, wenn es auf eine SD-card angewendet wird, wieder andere Macken.

Siehe auch hier:
http://casiokingdom.org/modules.php?nam ... pic&t=1526
http://casiokingdom.org/modules.php?nam ... pic&t=1276

Tut mir leid, dass die Antwort nicht übersichtlicher ausfallen konnte.

Re: Verzeichnisübersicht

BeitragVerfasst: Sa 21. Nov 2009, 12:32
von Paul94
Vielen Dank! Lesen funktioniert jetzt. Wenn wieder Probleme auftauchen werde ich Fragen stellen.

Edit: Die erste Frage ist schon da: Wie kann ich einen int von 0-9 ausgeben? Print nimmt ja nur unsigned char*.

Re: Verzeichnisübersicht

BeitragVerfasst: Di 24. Nov 2009, 18:50
von Paul94
So bin jetzt fertig. Das AddIn ver- und entschlüsselt Textdateien auf dem Massenspeicher.
Ich habs hier auf Casigo hochgeladen:

Bild

Bild

Bild

Vielen Dank an Simon für seine Hilfe!

Paul

PS: Kann mal einer Krypto auf Casigo löschen, sodass da nur noch KRYPTO Vers. 2 ist?

Re: Verzeichnisübersicht

BeitragVerfasst: Fr 27. Nov 2009, 13:45
von defcon