Arduino SD karta soubor setting.txt
Úvodní stránka › Fórum › Software › Jazyky › Jazyk Wiring › Arduino SD karta soubor setting.txt
Označeno štítky: arduino sd setting.txt
- Toto téma obsahuje celkem 1 odpověď. Do diskuze (2 diskutující) se naposledy zapojil uživatel Vojtěch Vosáhlo a poslední změna proběhla před 9 roky.
-
AutorPříspěvky
-
21.9.2015 v 13:05 #4631vaseks0001Účastník
Dobrý den,
Začínám se učit programovat v jazyce Wiring. Vymyslel jsem si takový projekt pěstírna na chilli papričky. Jako ovládačku jsem si vybral Arduino. Potřebuji, aby systém jel 24 hodin denně a spolehlivě. Podle mého názoru nějaké ovládačky s operačním systémem micro pc apod. jsou na toto hodně nevhodné. PLC zase pro změnu moc drahé a tak proto Arduino. Dokázal jsem inicializovat sd kartu kdy systém mi řekne, zda karta je připravená nebo nikoliv jako čtečku jsem použil ethernet shield. Jelikož kvůli paměti chci na sd kartu umístit soubor s nastavením například IP adresu Mac adresu atd. kterou v budoucnu budu moct upravovat přes síť. A také program už umí inicializovat soubor setting.txt na kartě, vypsat určitý řádek přes sériovou linku. Zaseknul jsem se u toho jak vložit určitý řádek třeba s ip adresou do nastavení síťové komunikace. Může mi někdo poradit jak na to? Vyjmout řádek uložit ho do proměnné třeba IP a tu použit v aplikaci. Ještě jsem zapomněl. Kód o šéfovat tak aby při výpadku sd karty byli nastaveny výchozí ip? Ani za boha na to nemohu přijít// ——————————————————————————-INICIALIZACE KARTA SD———————————————————————-
// CS pro četčku karet na pinu 4
Serial.print(„Inicializace SD karty…“);
pinMode(4, OUTPUT);//zkontroluje inicializaci karty
if (!SD.begin(chipSelect)) {
Serial.println(„\nKarta nenalezena…“);
return;
}Serial.println(„\nKarta inicializovana…“);
// otevře soubor setting.txt
File dataFile = SD.open(„setting.txt“, FILE_READ);// když soubor existuje
if (dataFile)
{// Kdyz soubor existuje vypise hlasku nalezen
Serial.println(„Soubor setting nalezen“);// inicializuje proměnou pro číslo řádku
int radek = 1;// dokud nebudeme na konci souboru tak:
while (dataFile.available())
{
// přečte jeden bajt (znak) a uloží do proměné data
byte data = dataFile.read();// když jsou data znak #13 (Enter, nový řádek)
if (data == 13)
{// přičti k proměné řádek + 1
radek++;
}// když je číslo řádku 4
// a
// znak není „řídící“ (viz ASCI tabulka)-
// pouze zobrazitelné znaky
if (radek == 3 && data > 32)
{// odešle byte (znak) na Serial Monitor
Serial.write(data);
}
}
// soubor opět zavřeme
dataFile.close();
}
// Když soubor chybi
else
{
// Když soubor chybi vypise hlasku soubor nenalezen
Serial.println(„Nepodarilo se otevrit soubor setting“);}
// ——————————————————————————-KONEC INICIALIZACE KARTA SD———————————————————————-19.10.2015 v 18:19 #4954Vojtěch VosáhloÚčastníkAhoj,
odpověď na tvou 1. otázkuMůže mi někdo poradit jak na to? Vyjmout řádek uložit ho do proměnné třeba IP a tu použit v aplikaci.
je docela jednoduchá. Využij funkci dataFile.position() a nebo dataFile.seek(). Tyto funkce udávají tvojí pozici v souboru. Jednoduše, pokud se podíváš do dokumentace ke knihovně SD najdeš jak na to, pak jednoduše použiješ dataFile.read(). Tím sice přečteš je 1 bajt ale když použiješ jednoduchou funkci for tak se můžeš po přečtení bajtu posunout o jednu pozici a přečíst další. Když přidáš nějakou podmínku a na konci znaky sloučíš dostaneš celou IP kterou můžeš použít. Druhou otázku nechápu úplně přesně. Myslíš to tak že pokud kartu vyndáš tak aby se IP nastavila na nějakou defaultní kterou si nastavíš? Pokud ano tak si zapiš do EEPROM procesouru svou základní IP a pak při každém psacím/čtecím cyklu zkusíš zda je karta vsunuta (SD.available()) a pokud není tak si můžeš IP přečíst a použít. Doufám že je to vše co si potřeboval a přeji hodně štěstí.
-
AutorPříspěvky
- Pro reakci na toto téma se musíte přihlásit.