micro sd read write

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • Page 1 of 6
TheBeginner
Schreiberling
Avatar
Gender: n/a
Location: Wunsiedel Bayern
Age: 67
Posts: 767
Registered: 06 / 2013
Subject:

micro sd read write

 · 
Posted: 24.04.2021 - 14:09  ·  #1
Hallo,
ich bemerke gerade wenn meine Datei größer als 64KByte am Computer
eingelesen wird, dann bekomme ich über mein Delphi Programm einen fehler.

<=Fehler beim Einfügen einer Zeile in RichEdit=>

Tja was ist das ? Das schreiben hat er gemacht, aber auslesen geht nicht mehr.
Unter 64KByte habe ich kein Problem mit schreiben oder lesen.

Oder liegt es an der micro SD Karte ? darf da nur eine Datei kleiner 64Kbyte sein ?
Also ich glaube es nicht.

Nur woher kommt der Fehler ?

PS. Wenn ich diese große Datei einmal lese muss ich die micro SD Karte am Computer
mit chkdsk prüfen lassen. Weil am Computer komme ich an diese Datei nicht ran
Fehler beim öffnen.



Gruß Frank

=============================================================
Nachtrag....
Jetzt bekomme ich schon nach einigen Zeilen den Fehler.
Datei ist 58kByte groß
speed habe ich standard eingestellt,


Code

  FAT16            = SDIO, PortE.4, PortE.2, PortE.3, iData;      // SDIO, PortE.4, PortB.5, PortB.6, iData; // 4xDATA, CMD, CLK

  F16_MMCspeed     = standard;                    // standard, slow, fast ,superfast = 16MHz SPI
  F16_FileMode     = F16SFN;                      // F16SFN; //F16LFN;

  F16_FileHandles  = 2;
  F16_DirLevels    = 2;
  F16_StrLen       = 64;                          // only for file of text


Merlin
Administrator
Avatar
Gender:
Age: 24
Posts: 1409
Registered: 03 / 2005
Subject:

Re: micro sd read write

 · 
Posted: 24.04.2021 - 14:44  ·  #2
Sorry Frank, I am not clear. What type of file are you writing, where and how? Are you copying PC->AVRCo, AVRCo->PC or what? I think there is not enough information here to help. Can you show relevant code?
Merlin
Administrator
Avatar
Gender:
Age: 24
Posts: 1409
Registered: 03 / 2005
Subject:

Re: micro sd read write

 · 
Posted: 24.04.2021 - 15:09  ·  #3
As a blind guess...

You are reading an RTF file on AVRCo as a text file, sending the line to the PC and adding the line to an RTF file? Am I right?

If so you need to be very careful. RTF lines are longer (sometimes MUCH longer) than the TXT equivalent. Then any file line longer than 64 bytes will be truncated to 64 bytes, and if that truncation occurs part way through an RTF special sequence you will get the error you describe.

Try increasing your line size to 255, which is the maximum AVRCo can handle.
TheBeginner
Schreiberling
Avatar
Gender: n/a
Location: Wunsiedel Bayern
Age: 67
Posts: 767
Registered: 06 / 2013
Subject:

Re: micro sd read write

 · 
Posted: 24.04.2021 - 18:33  ·  #4
Hello Merlin, sorry that I am only now answering (Fußball Bayern :-))
I once took out the RichEdit and programmed a memo field. So far it looks better.
In the Xmega, I set the send and receive sting to 254.

I now have to test it further with the memo field
whether I get errors there too
==================================
Hallo Merlin, sorry das ich jetzt erst Antworte (Fußball Bayern :-) )
Ich habe mal das RichEdit raus genommen und ein Memo Feld einprogrammiert. Soweit sieht es besser aus.
Im Xmega habe ich Sende und Empfang Sting auf 254 gesetzt.

ich muss das jetzt erstmal mit dem Memo Feld weiter testen
ob ich da auch fehler bekomme
TheBeginner
Schreiberling
Avatar
Gender: n/a
Location: Wunsiedel Bayern
Age: 67
Posts: 767
Registered: 06 / 2013
Subject:

Re: micro sd read write

 · 
Posted: 24.04.2021 - 18:46  ·  #5
Now I do not understand anything anymore :-)
10KByte or 30KByte to read into a memo field, no problem,
but over 300KByte there is this error after a while.

Socket error # 10054 The connection was reset by the peer.
=======================================
Jetzt verstehe ich gar nichts mehr :-)
10KByte oder 30KByte in ein MemoFeld zu lesen, kein Problem,
aber über 300KByte gibt es nach einer weile diesen Fehler.

Socket Fehler # 10054 Die Verbindung wurde von Peer zurückgesetzt.
Attachments
micro sd read write
Filename: SocketFehler.jpg
Filesize: 83.56 KB
Title:
Download counter: 217
TheBeginner
Schreiberling
Avatar
Gender: n/a
Location: Wunsiedel Bayern
Age: 67
Posts: 767
Registered: 06 / 2013
Subject:

Re: micro sd read write

 · 
Posted: 24.04.2021 - 19:11  ·  #6
Hello, I have now formatted the micro SD card on the computer and uploaded a 303KByte file. Then I inserted the SD card into my slot on the circuit board and now read the file with avrco.
Only read out with an Xmega256A3U, so far everything looked good,
until line 7451 came, then I got the socket error again, if I had programmed wrongly in my XMega, I would not get any data, so why suddenly a socket error with 7451?
===================================
Hallo, ich habe jetzt die micro SD Karte am Computer Formatiert und eine 303KByte Datei aufgespielt. Dann habe ich die SD Karte in mein Slot auf der Platine gesteckt und lese nun mit avrco die Datei aus.
Nur auslesen mit einen Xmega256A3U, soweit sah alles gut aus,
bis Zeile 7451 gekommen ist, dann habe ich wieder den Socket Fehler bekommen, wenn ich falsch in meinen XMega Programmiert hätte, würde ich gar keine Daten bekommen, also warum bei 7451 auf einmal ein Socket Fehler ?
Attachments
micro sd read write
Filename: SocketFehler2.jpg
Filesize: 86.01 KB
Title:
Download counter: 193
TheBeginner
Schreiberling
Avatar
Gender: n/a
Location: Wunsiedel Bayern
Age: 67
Posts: 767
Registered: 06 / 2013
Subject:

Re: micro sd read write

 · 
Posted: 24.04.2021 - 19:53  ·  #7
Hallo,
Ich denke ich habe den fehler gefunden.
Ich musste ein Delay einbauen von 1ms
jetzt kann ich die 300KByte lesen und nicht nur 1 mal
20 mal getestet.


Gruß Frank


Code

//==============================================================================
//...Sende an Host
//==============================================================================
Procedure Sende_an_Host;
Begin
 SendeStr:= SendeStr + #13+#10;
 W5x00StartSendString( cPCSocket, @SendeStr );
 end;




Procedure MMC_Datei_Read;
Begin
  F16_FileSeek(f, 0);
   while not F16_EndOfFile(f) do
        ReadLn (f, SendeStr);
        Sende_an_Host;
        mDelay(1);                 //<==================
   endwhile;

  SendeStr:= 'F16_EndOfFile'; Sende_an_Host;
  F16_FileClose(F);
end;




Nachtrag
Jetzt gehts auch mit RichEdit.! :3some: :angel11: :3some:
Merlin
Administrator
Avatar
Gender:
Age: 24
Posts: 1409
Registered: 03 / 2005
Subject:

Re: micro sd read write

 · 
Posted: 24.04.2021 - 20:27  ·  #8
Hi Frank.

Really you should wait for the host to acknowledge receipt (and indeed get the host to issue an acknowledgment packet). The 1ms delay reduces the risk of data collisions, which is probably what caused the error, and also reduces the risk of packets arriving in the wrong order, but is not the right way to do it. Setting up a two way dialog will also probably be faster than adding a 1ms delay.

Regards

Merlin
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • Page 1 of 6
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 17 · Cache Hits: 15   141   156 · Page-Gen-Time: 0.033774s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI