- fchao-Sinus-Wechselrichter AliExpress         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 17 von 17

Thema: String auf SD-Karte mit Drivewritesector()

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Benutzer Stammmitglied
    Registriert seit
    06.08.2009
    Beiträge
    45
    Stimmt das mit dem endbyte hatte ich garnicht beachtet. Wegen der Auswertung: ich wollte in jeden Sektor nur einen datenstring schreiben und zur Auswertung dann die Sektoren durchgehen, dann brauche ich doch keine Endzeichen?
    Wegen der Anfangssektoren werde ich das mal bei meiner 1 gb Karte herausfinden und dann den Startsektor dementsprechend anpassen.

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Zitat Zitat von Fabian1995 Beitrag anzeigen
    ich wollte in jeden Sektor nur einen datenstring schreiben und zur Auswertung dann die Sektoren durchgehen, dann brauche ich doch keine Endzeichen?
    Wenn der Datenstring immer eine bestimmte Länge hat, könnte man auf das Endzeichen verzichten, ansonsten braucht man's um das Ende des Strings erkennen zu können. Bascom wird das Endzeichen aber auf jeden Fall schreiben, wenn also der String tatsächlich max 512 Bytes enthalten kann, dann unmittelbar auf die Buffervariable folgend ein einzelnes Byte dimensionieren, damit dieses das Endzeichen aufnimmt und nix überschrieben wird.

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Vielleicht solltest du nicht solche hintenrum Lösungen implementieren, die du nachher nicht mehr verstehen kannst.
    Tatsächlich habe ich es bei mir genau anders herum gemacht:

    Dim Messwerte_string * 512 as string
    Dim Buffer(512) As Byte at Messwerte_string overlay

    Dabei wird auch Platz für das Endezeichen bei 512 Byte langen Strings erzeugt.
    Die Bufferlänge von 512 reicht, weil die hier nur zur Verdeutlichung angegeben wird.

    Die DriveWriteSector() Funktion schreibt nicht bis zum Endezeichen des Strings sondern 512 Byte, egal was da drin steht.
    Das musst du dann nur beim Einlesen bedenken, wenn du die DriveReadSector() Funktion benutzt, um den Sektor wieder in den Buffer und damit in den String zu bekommen. Steht weder in den 512 Byte noch im zusätzlichen Byte von Messwerte_string kein 0-Byte, dann geht der String einfach weiter, solange bis er im SRAM auf ein 0-Byte trifft. Evtl. kommen damit aber die Stringfunktionen nicht mehr zurecht.

    Mit den Stringfunktionen solltest du bei solch langen Strings ohnehin sehr vorsichtig umgehen. Besonders Dinge wie

    Messwerte_string = "12345678901234567890" + Messwerte_string

    können zu recht hohen Anforderungen an deinen Frame Bereich führen, weil hierzu eine Kopie von Messwerte_string erzeugt werden muss.
    Damit werden dann evtl. die Stacks überschrieben, was zu recht garstigen Fehlern führen wird.

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. Chr(0) im String
    Von Furtion im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 8
    Letzter Beitrag: 28.11.2008, 10:37
  2. string an lcd senden, string in pointer speichern
    Von andi.studi im Forum PIC Controller
    Antworten: 15
    Letzter Beitrag: 13.08.2008, 23:51
  3. String auf String zuweisen geht nicht
    Von Jaecko im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 14.12.2006, 17:48
  4. Sim-Karte
    Von Speed im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 2
    Letzter Beitrag: 18.11.2006, 11:51
  5. SD-Karte oder CF-Karte?
    Von Johannes G. im Forum AVR Hardwarethemen
    Antworten: 3
    Letzter Beitrag: 22.08.2006, 12:28

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests