- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 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

    String auf SD-Karte mit Drivewritesector()

    Hallo,

    ich sitze jetzt schon einige Stunden vor dem PC und komme nicht weiter.
    Habe auch schon lange im Internet gesucht aber keine wirkliche Erklärung gefunden.
    Und zwar habe ich mehrere Messdaten in einem String zusammengefasst und würde diese gerne in einem
    Sektor auf der SD-Karte speichern.
    Doch wenn ich es richtig verstanden habe besteht der angelegte Buffer aus Bytes und lässt sich somit auch nur in dieser Form übertragen.
    Könnte mir diesbezüglich jemand einen Tipp geben wie ich mit dem Drivewritesector()-Befehl am besten einen String speichern kann?

    MfG Fabian

  2. #2
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Hi,

    du könntest den String Byteweise auf die Karte schreiben. Sprich du machst nen Zähler der für die Position im String ist. Dann schreibst du das Zeichen worausf der Zähler zeigt auf die Karte und erjöhst den Zähler um eins. Und dann machste das nochmal. Den ganzen Spaß wiederholst du solange bis du am Ende vom String bist.
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    06.08.2009
    Beiträge
    45
    Ok aber ich glaube ich habe noch nicht so ganz die Funktionsweise von dem Befehl Drivewritesector verstanden.
    Kann man Byteweise die Karte beschreiben weil es wird doch immer gesagt, dass man nur vollständige Sektoren Schreiben kann?
    Codeausschnitt:
    ......
    Dim Berror As Byte
    Dim Buffer(512) As Byte 'SRAM-Bereich für Transfer
    Dim Wsrampoint As Word 'Adress-Pointer für die Drive.. Routinen
    Dim Lselectornumber As Long 'Variable für Sektor-Nummer
    Wsrampointer = Varptr(buffer(1))
    Lselectornumber =1
    .....
    Druck1 = Getadc(4)
    Druck2 = Getadc(5)
    Temperatur = Getadc(6)

    Messwerte_string = Gpgga + ";" + Str(druck1) + ";" + Str(druck2) + ";" + Str(temperatur) + "*"
    ......

    Ich glaube ich stehe gerade auf dem Schlauch.. Wie kann ich dann deine Idee mit ' Berror = Drivewritesector(wsrampoint , Lsectornumber)' umsetzen?

    Danke für die schnelle antwort

  4. #4
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Laut der Hilfe schreibst du mit dem Befehl bis zu 512 Bytes in einen Sektor:

    Write a Sector (512 Bytes) to the (Compact Flashcard) Drive
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    06.08.2009
    Beiträge
    45
    Okay hab ich anscheinend überlesen....
    Aber wo wird bei dem Befehl definiert was ich jetzt eigentlich speichere?
    in meinem Fall gibt doch Berror einen Wert zurück, ob das Schreiben funktioniert hat, wsrampoint die Adresse von wo und Lsectornumber in welchen Sektor ich es schrieben will.
    oder wird mit wsrampoint automatisch das byte an dieser Stelle übertragen?

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Hallo Fabian,
    ich habe das einfach so gemacht:
    Code:
    Dim Berror As Byte
    Dim Buffer(512) As Byte 'SRAM-Bereich für Transfer
    Dim Messwerte_string * 512 as string at Buffer(1) overlay
    Dim Wsrampoint As Word 'Adress-Pointer für die Drive.. Routinen
    Dim Lselectornumber As Long 'Variable für Sektor-Nummer
    Wsrampointer = Varptr(buffer(1))
    Lselectornumber =1
    .....
    Druck1 = Getadc(4)
    Druck2 = Getadc(5)
    Temperatur = Getadc(6)
    Messwerte_string = Gpgga + ";" + Str(druck1) + ";" + Str(druck2) + ";" + Str(temperatur) + "*"
    Berror = DriveWriteSector(Wsrampointer,Lselectornumber)
    Du schreibst in den String, durch das Overlay aber gleichzeitig auch in das Byte-Array Buffer.
    Der DriveWriteSector Befehl schreibt immer die nächsten 512 Byte ab der angegebenen Adresse auf die SD Karte.
    Beachte, dass du die Karte mit Windows nicht mehr lesen kannst, wenn du auf den Sektor 1 schreibst.

Ä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
  •  

fchao-Sinus-Wechselrichter AliExpress