Arduino: zápis, ukládání a čteni long int na SD kartu

Josh

Zdravim,
mam 3 hodnoty x/y/z typu long int, ktere potrebuji zapisovat na SD kartu a nasledovne je cist pro zopakovani ukolu.
Zkousel jsem zapsat byte, ale ten jde zapisovat jen do hodnot 255 a dal si moc nevim rady. Nemohl by mi nekdo z praxe napovedet jak na to?
« Poslední změna: 02. 10. 2018, 21:29:48 od Petr Krčmář »


RDa

  • *****
  • 2 467
    • Zobrazit profil
    • E-mail
Re:Arduino zapis a ukladani a cteni long int na SD kartu
« Odpověď #1 kdy: 02. 10. 2018, 18:04:29 »
Na tohle se jako fakt musis ptat?

Josh

Re:Arduino zapis a ukladani a cteni long int na SD kartu
« Odpověď #2 kdy: 02. 10. 2018, 18:12:18 »
jsem amater a nevim jak na to :/  kdybych to vedel, neptam se

nevim jestli mam vzit long int -> vyrobit pole byte -> zapsat a opacnym zpusobem cist...

https://www.arduino.cc/en/Reference/FileWrite

Zkousel jsem neco v tomto duchu:
long int a=100000;

file.write(buf, len) ->-> file.write((byte)a,sizeof(a));  ale ocividne to spatne implementuju...

peter

Re:Arduino zapis a ukladani a cteni long int na SD kartu
« Odpověď #3 kdy: 02. 10. 2018, 19:41:42 »
Skús dať znak '&' pred premennú a, ktorú zapisuješ. A znak '*' za byte. Potom už len zistiť, prečo to funguje, napr. skúste si pohľadať aký typ argumentu buf očakáva procedúra file.write

RDa

  • *****
  • 2 467
    • Zobrazit profil
    • E-mail
Re:Arduino zapis a ukladani a cteni long int na SD kartu
« Odpověď #4 kdy: 02. 10. 2018, 21:11:06 »
long int a=100000;
file.write(buf, len) ->-> file.write((byte)a,sizeof(a));  ale ocividne to spatne implementuju...

Melo by fungovat toto (podle typu v dokumentaci co linkujete):
Kód: [Vybrat]
long int a=100000;
file.write((char*)&a,sizeof(a));

Ale overil bych ze to vraci onen sizeof(), coz by melo byt 4, protoze typicky zapis nemusi probehnout cely - treba to zapise 1,1,1,1 ci 1,3 ci 1,2,1... atd takze je treba udelat char* ptr a ten inkrementovat o skutecne zapsane bajty, v pripade < 0 tj chyby ten cyklus zas prerusit.