Skocz do zawartości
jasiekk913

Czytnik kart SD - pomoc z odczytem

Pomocna odpowiedź

no w linku wyżej do exampla "DumpFile" jest wszystko co potrzebne

  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites

Pojawia się inny problem - nie umiem skompilować pliku .xbm do pliku binarnego. Narzędzie xxd jest dla systemów 32 bitowych a takiego nie posiadam. W takim razie co robić?

Udostępnij ten post


Link to post
Share on other sites

xxd był do podglądu, że wszystko działa - też mam 64bitowy system i xxd śmiga - ja mam go z toolsów z instalacji GITa.

Plik binarny tworzysz tym programem w C.

  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites

@dambo Dobra, udało mi się skompilować! Wielkie dzięki za pomoc, dzięki tobie poznałem trochę wiedzy 🙂. Czyli teraz ten plik wrzucić na microsd i a na arduino ma być program typu:
 

char zmienna[1000];
int i=0;
myFile = SD.open("binary_file");
  if (myFile) {
	while (myFile.available()) {
      zmienna[i]=myFile.read();
      i++;
    }
    // close the file:
    myFile.close();

Oczywiście jest to przykład.

Pozdrawiam
jasiekk

Udostępnij ten post


Link to post
Share on other sites
char zmienna[1000];
myFile = SD.open("binary_file");
if (myFile) 
{
    file.read(zmienna, <rozmiar_pliku/tablicy>);
}
// close the file:
myFile.close();

nie musisz w pętli - możesz podać w funkcji read dokąd ma wkleić dane i ile ich ma być

Udostępnij ten post


Link to post
Share on other sites

Tak, tylko zostanie to zapisane w postaci jednej zmiennej, a biblioteka do wyświetlacza potrzebuje tablice charów. 

Udostępnij ten post


Link to post
Share on other sites

nie zostanie to zapisane w postaci jednej zmiennej - uzupełni się w ten sposób tablica.

Udostępnij ten post


Link to post
Share on other sites

No niestety, napisałem program, arduino nie przekazuje danych o pliku nic.txt:

 

#include <SPI.h>
#include <SD.h>

const int chipSelect = 4;
char test[500];
void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }


  Serial.print("Initializing SD card...");

  // see if the card is present and can be initialized:
  if (!SD.begin(chipSelect)) {
    Serial.println("Card failed, or not present");
    // don't do anything more:
    return;
  }
  Serial.println("card initialized.");

  File dataFile = SD.open("nic.txt");

  // if the file is available, write to it:
  if (dataFile) {
    int i=0;
    while (dataFile.available()) {
      test[i]=dataFile.read();
      i++;
    }
    for(int k=0; k<498; k++){
    Serial.write(test[k]);
    }
    dataFile.close();
  }
  // if the file isn't open, pop up an error:
  else {
    Serial.println("error opening datalog.txt");
  }
}

void loop() {
}

 

Udostępnij ten post


Link to post
Share on other sites

No ale to mogłeś przesłać co się wyświetla na terminalu jak uruchomisz taką apkę - karta jest poprawnie zainicjalizowana i plik się poprawnie otwiera, tak?

Zobacz też, że w tym miejscu:

    while (dataFile.available()) {
      test[i]=dataFile.read();
      i++;
    }

jeśli plik jest większy niż tablica to sobie nadpisujesz pamięć i aplikacja się wywali - to trzeba zabezpieczyć. I generalnie celuję w to, że właśnie to się dzieje jeśli plik się wczytuje i generalnie nie ma błędów połączeniowych.

Udostępnij ten post


Link to post
Share on other sites
Przed chwilą, dambo napisał:

arta jest poprawnie zainicjalizowana i plik się poprawnie otwiera, tak?

Tak
 

1 minutę temu, dambo napisał:

aplikacja się wywali

i chyba nawet to się dzieje bo widzę że karta inicjalizuje się co ~5 sekund (a jest w void setup). W takim razie spróbuje zrobić to tak jak mówisz i dam znać.

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Napisz odpowiedź...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...