zapis / cteni promenne ze souboru

cz_marek
Příspěvky: 104
Registrován: 31 led 2018, 09:01
Reputation: 0

Re: zapis / cteni promenne ze souboru

Příspěvek od cz_marek » 16 pro 2021, 19:59

Priučit se chci - vetsinu projektu se snazim delat tak aby me to nekam posouvalo.

Strukturu jsem procetl - je to fakt paradni. Jdu se do toho pustit.

Diky za tip.

KamilV
Příspěvky: 479
Registrován: 03 dub 2018, 15:27
Reputation: 0
Bydliště: Olomouc

Re: zapis / cteni promenne ze souboru

Příspěvek od KamilV » 17 pro 2021, 12:39

3x int 1x za den pro zachování po restartu. To je úplně ukázkový příklad pro EEPROM, netahal bych do toho soubory, které budou vnášet jen větší míru nespolehlivosti.

Uživatelský avatar
kiRRow
Příspěvky: 1152
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: zapis / cteni promenne ze souboru

Příspěvek od kiRRow » 17 pro 2021, 13:13

Ano souhlasím. Při 1x denně zápisu dojde k dosažení limitu přepisů paměti za cca 11let. Když si budu schopen uložit do EEPROM i zároveň kolikátý přepis provádím, jsem schopen po dosažení limitu začít ty data ukládat na jiné místo v EEPROM => dalších 10+ let navíc s každým posunem v paměti.

Ale velmi podobně jsem schopen celou struktůru vložit do EEPROM a stejně šikovně ji zase vytáhnout. Jen se přepíše pár řádků.

cz_marek
Příspěvky: 104
Registrován: 31 led 2018, 09:01
Reputation: 0

Re: zapis / cteni promenne ze souboru

Příspěvek od cz_marek » 21 pro 2021, 07:05

Tak hotovo - EEPROM je fakt elegantni a jednoduche reseni. Ted nejak nechapu jak jsem to vubec mohl chtit delat pres nejaky debilni soubor :D

Diky za pomoc

ondraN
Příspěvky: 932
Registrován: 08 srp 2019, 20:01
Reputation: 0

Re: zapis / cteni promenne ze souboru

Příspěvek od ondraN » 21 pro 2021, 11:38

Tak on i ten soubor má svůj smysl. Pokud už používáš SD kartu v projektu a pracuješ s ní, tak je to často lepší řešení, než EEPROM. Obzláště, když chceš vyřešit situaci, kdy dojde k výpadku při zápisu dat, tak se to se souborem dělá snáze. A nebo může i nastat situace, kdy se to do EEPROM nevejde a nebo se snažíš vystopovat, kde se to minule seklo a proč :mrgreen:

Uživatelský avatar
kiRRow
Příspěvky: 1152
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: zapis / cteni promenne ze souboru

Příspěvek od kiRRow » 21 pro 2021, 19:26

:) rád čtu, že se povedlo. Pamatuj však, že EEPROM nelze přepisovat do nekonečna, vydrží určitý počet přepisů a pak začne ukládat nesmysly. Ukládat na SD kartu jako soubor v určitém formátu má taky svůj smysl. Pominuli velikost datového úložiště, SD kartu lze přednostně vyjmout a zpracovat její data na PC. Zajímalo by mne jestli tam ty data vkládáš jako struktůru dat :) a pokud ano, bylo to náročné pochopit ?

cz_marek
Příspěvky: 104
Registrován: 31 led 2018, 09:01
Reputation: 0

Re: zapis / cteni promenne ze souboru

Příspěvek od cz_marek » 21 pro 2021, 20:58

Jasne ja vim ze ma EEPROM omezeny pocet zapisu ale pro me pouziti je to uplne na pohodu. Kdyz to vezmu pruměrne tak si myslim ze zapis 1x denne je maximum, spis bych to videl na 1x týdne - takze se o zivotnost zas az tak nebojim :-) Uvazoval jsem jeste ze bych tam udelal dalsi promennou s pocitadlem a treba pri 1000 zapisu bych to posunul na dalsi adresu - zapisuji 8 bytu takze muzu posouvat dost dlouho :-)

SD karta ma vhod\ to je jasne, od velikost, moznost ji vathnout atd... ale pro jednoduche ulozeni 3 promennych je to zbytecny luxus :-) Ukladam to tam bez struktury, ale struktura se mi tak libila ze jsem si udelal aspon priklad a vyzkousel to. Priklad si schovam - to se bude jeste hodit.
Pochopit se to da i kdyz to teda nedopadlo uplne na prvni pokus.

Uživatelský avatar
kiRRow
Příspěvky: 1152
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: zapis / cteni promenne ze souboru

Příspěvek od kiRRow » 22 pro 2021, 15:28

Já bych navrhoval ukládat ty data takto :

Na adrese 0 si ukládat informaci o tom,kolikrát už došlo k posunutí dat. - tohle se přepíše jednou za desítky tisíc přepisů může zůstat furt na svém místě (manualně tam musíš uložit 0). Tuto hodnotu vynásobíš celkovým počtem bytů + počet bytů které zabere informace o posuvu (int ma dva bajty... dejme tomu ze data mají 12bytů, máme 4x posunutou paměť ... adresa kde začínají data = (4 * 12) + 2 ........ nikdy nesmí vyjít větší číslo než velikost eeprom - celkovy pocet bajtů jednoho bloku
1.proměnná bude obsahovat aktuální počet přepisů tohoto bloku - tu taky pak musíš ukládat do nového místa - přepisovat ji budeš často
zbytek dat už je pak na tobě.

No tak to počkej, až objevíš třídy. Když nebudeme zabíhat do detailů, je to v podstatě struktůra, která krom uchovávání dat umí taky uchovávat funkce.
Máš pak třeba třídu "player", ta má svá data. Jméno, pozice X,Y, životy atp a taky své funkce - umí střílet, umí se hýbat. Programuješ potom tak, že dle třídy player, vytvoříš objekt Hrac1 a Hrac2. Pokud zmačnu čudlik, Hrac1.Strilej(typZbrane, cíl) , pokud je cíl zasazen, tak cíl.Zivoty - typZbrane.poskozeni ....
Obrovskou výhodu o proti kopírování funkcí a přejmenovávání všeho z Hrac1 na Hrac2... Hrac3 a Hrac4 je to, že když chceš změnit styl jejich pohybu, změníš ho jen ve třídě a nemusíš procházet 4různé funkce... A v programu ti to ušetří po zkompilování spoustu místa. Vytvoří se totiž jen jedna funkce, kterou všechny objekty sdílí akorát každý ji provádí se svými daty.

Doporučuji tenhle seriál :
https://learn.adafruit.com/multi-taskin ... -the-delay - končí to třema ledkama co si každá bliká svoje a dvěma servama a loop má 6řádků :D
1.díl je s delay, 2.díl je s millis, 3.díl je právě ono kopírování když chceš druhou led, 4.díl je s třídama ... classy solution :)

KamilV
Příspěvky: 479
Registrován: 03 dub 2018, 15:27
Reputation: 0
Bydliště: Olomouc

Re: zapis / cteni promenne ze souboru

Příspěvek od KamilV » 27 pro 2021, 09:02

kiRRow píše:
22 pro 2021, 15:28
Na adrese 0 si ukládat informaci o tom,kolikrát už došlo k posunutí dat. - tohle se přepíše jednou za desítky tisíc přepisů
A jak pozná, že došlo k mezní hodnotě a má čítač (ten na pozici 0) posunout? Čítač se musí inkrementovat s každým zápisem (jeho životnost tedy bude stejná jako životnost zapisované struktury), proto ani čítač nemůže být na fixní pozici a musí se posouvat se strukturou. Číst pak bude z posledního validního bloku "čítač+struktura",
kiRRow píše:
22 pro 2021, 15:28
No tak to počkej, až objevíš třídy. Když nebudeme zabíhat do detailů, je to v podstatě struktůra, která krom uchovávání dat umí taky uchovávat funkce.
Chápu, že má jít o tip. Ačkoliv si nemyslím, že přehlednosti fora přispívá takové vypálení tipu, o kterém vlákno není - protože každý by tady teď mohl napsat tip na cokoliv jiného. Spíš bych se pozastavil nad tím, že nahlížet na třídy jako "struktury dat a funkcí" je i při zjednodušení hodně zavádějící a hodně programátorů - začátečníků to pak vede ke špatným představám o OOP.
Pokud člověk nahlíží na objekty jako na "obálky pro funkce", může zrovna tak velmi dobře vystačit s funkcemi rozsekanými do samostatných souborů.

Stěžejní pro OOP je: princip zapouzdření, abstrakce, polymorfismus, kompozice a delegování, rozhraní a traity, v některých případech dědičnost. Čím dříve toto i začátečník pochopí, tím dříve začne z OOP opravdu těžit.

Uživatelský avatar
Caster
Příspěvky: 380
Registrován: 11 zář 2019, 09:02
Reputation: 0

Re: zapis / cteni promenne ze souboru

Příspěvek od Caster » 27 pro 2021, 12:14

Na nějaké třídy bych se vykašlal a jednoduše použil EERAM ;) . Jak na to:

How to interface a 47C16 EERAM with Arduino
47L/C16 EERAM library for Arduino - GitHub
SukkoPera / Arduino-MC47xxx

Paměti EERAM

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 9 hostů