SD Card auslesen

  • 1
  • 2
  • Seite 2 von 2
TheBeginner
Schreiberling
Avatar
Geschlecht: keine Angabe
Herkunft: Wunsiedel Bayern
Alter: 68
Beiträge: 776
Dabei seit: 06 / 2013
Betreff:

Re: SD Card auslesen

 · 
Gepostet: 01.06.2020 - 11:21 Uhr  ·  #9
Ich mache mal kein neues Topic auf und schreibe hier.
Ich möchte eine file of text auslesen und habe das Programmiert.

Code


Procedure MMC_Datei_Read;
var len : byte;
Begin
  SendStr:= '';
  if F16_CheckDisk = true then
   F16_FileSeek (f,0);
   while not F16_EndOfFile(f) do
        Readln(f, SendStr);
        TxBlock(@SendStr, word(len));
    endwhile;
  endif;

in der file steht zum testen
123456789012345678901234567890

Wenn ich mir jetzt den RxBuff unter Delphi anschaue
RxBuff[0] hier steht lo byte von count
RxBuff[1] hier steht hi byte von count
RxBuff[2] und ab hier sollte das erste Byte oder Zeichen stehen also eine 1
aber hier steht die länge des strings drin.
RxBuff[3] und hier steht dann die 1
RxBuff[4] = 2
u.s.w.

Warum wird denn mit TxBlock(@SendStr, word(len)); auch SendStr[0] kopiert ?

Gruß Frank
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: SD Card auslesen

 · 
Gepostet: 01.06.2020 - 17:09 Uhr  ·  #10
Hi Frank,

was ist denn, wenn du die serielle mal über ein Terminalprogramm abhörst? Was kommt da an? Ich hab (leider?) kein Delphi, aber vielleicht wird damit automatisch auch die Länge einer Übertragung zur Verfügung gestellt?

Harry
pvs-deck
PowerUser
Avatar
Geschlecht:
Alter: 54
Beiträge: 1343
Dabei seit: 02 / 2009
Betreff:

Re: SD Card auslesen

 · 
Gepostet: 01.06.2020 - 17:21 Uhr  ·  #11
Hallo Frank,

wenn Du einen String verarbeitest, dann ist es ein String. Dieser hat im AVRCO immer die Längenangabe unter [0], Du sagst dem Compiler ja sogar, das er diesen mitkopieren soll:

Code
TxBlock(@SendStr, word(len));


Der Pointer auf dem String liegt immer ab Adresse "[0]", wenn Du das nicht möchtest, musst Du es wie folgt anpassen:

Code
TxBlock(@SendStr+1, word(len));


Dann ist die Längenausgabe nicht dabei.

Du kannst aber auch im Delphi einfach diese "Alten", PascalString verwenden und verarbeiten. Diese nennen sich (ab Delphi 2007) dann Typ "ShortString"

Thorsten
TheBeginner
Schreiberling
Avatar
Geschlecht: keine Angabe
Herkunft: Wunsiedel Bayern
Alter: 68
Beiträge: 776
Dabei seit: 06 / 2013
Betreff:

Re: SD Card auslesen

 · 
Gepostet: 01.06.2020 - 17:31 Uhr  ·  #12
Danke Thorsten das war es. Jetzt gehts super danke!

TxBlock(@SendStr+1, word(len));
rh
Administrator
Avatar
Geschlecht:
Herkunft: Germany
Alter: 25
Homepage: e-lab.de
Beiträge: 5558
Dabei seit: 03 / 2002
Betreff:

Re: SD Card auslesen

 · 
Gepostet: 01.06.2020 - 19:05 Uhr  ·  #13
In Pascal gehört das längenbyte @$0 immer zum string dazu !!!!
rolf
  • 1
  • 2
  • Seite 2 von 2
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 15 · Cache Hits: 14   95   109 · Page-Gen-Time: 0.051604s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI