Terminal se sériovou komunikaci

Patrik
Příspěvky: 199
Registrován: 02 dub 2020, 09:58
Reputation: 0

Terminal se sériovou komunikaci

Příspěvek od Patrik » 27 led 2021, 08:00

Ahoj,

jaký doporučíte terminal se sériovou komunikaci k arduino Mega 2560? Chci měnit proměnné za chodu programu, či úplně vytvořit novou proměnnou. Lze to? Chtěl bych měnit, přidávat proměnné zejména v externí FRAM paměti, v paměti EEPROM v Arduinu a jestli půjde, tak také ve FLASH paměti arduino (mám zde uložená data pomocí PROGMEM), ale to asi nepůjde, co?
Důležité je pro mě hlavně ta paměť FRAM a EEPROM. V FRAM paměti bych měl uložené uživatele nejlépe jako datovou strukturu (string jmeno, unsigned int cislo, byte cas, boolean blokovan, boolean trvale_blokovan). Nyní mám v Flash paměti arduino jméno, číslo a trvale_blokovan). No a teď bych to nejraději uložil vše do FRAM paměti... Za chodu programu není potřeba měnit jméno ani číslo karty... Ostatní bych rád za chodu změnil... Ovšem... Take bych rád pokud to nějak půjde uživatele přes terminál přidal nebo odebral.. Odebrat zase není tak důležité.. Tam by se eventuálně dala přiřadit log 1 jako trvale blokovan... Ale například bych měl 150 uživatelů, chtěl bych přidat do paměti za chodu programu např. pana Nováka s číslem čipu karty 305479 s časem 50 a log. 0 a 0... Dá se toto uskutečnit?

Děkuji.

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

Re: Terminal se sériovou komunikaci

Příspěvek od KamilV » 27 led 2021, 09:30

Na stacku to tak úplně nejde.
Na heapu lze dynamicky alokovat proměnnou (malloc), v uvedeném případě by to bylo pole požadovaných struktur, které by se rozšiřovalo. Velmi bych se ale bál, že paměti nebude dostatek. Kolik by to mělo udržovat osob?

Raději bych popřemýšlel nad externí databází a z čipu komunikoval s ní.

I pro uživatele bude příjemnější administrace databáze, než nějaký terminál...

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

Re: Terminal se sériovou komunikaci

Příspěvek od ondraN » 27 led 2021, 09:40

Taky může mít celou databázi v té FRAM paměti a v RAM jen pole ukazatelů na položky. Pak si můžeš nadefinovat celou FRAM jako databázi a nic nemusíš rozšiřovat. V tom poli ukazatelů v RAM můžeš mít uložené věci pro rychlé hledání, třeba ID karty a pak si do malého bufferu stáhneš všechna data z FRAM odpovídající ID.

Uživatelský avatar
gilhad
Příspěvky: 778
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: Terminal se sériovou komunikaci

Příspěvek od gilhad » 27 led 2021, 10:25

Taky muze mit v RAM pouze ukazatel na tu databazi v FRAM a tu tam dynamicky alokovat a pouzivat podobne jako heap v RAM, akorat ze to navic muze pretrvat restart/vypnuti. Nebo tu FRAM pouzivat jako filesystem :)

Patrik
Příspěvky: 199
Registrován: 02 dub 2020, 09:58
Reputation: 0

Re: Terminal se sériovou komunikaci

Příspěvek od Patrik » 27 led 2021, 10:39

Tak mi prosím poraďte, co bude nejlepším a zároveň levnějším řešením. Uživatelů by mělo být nyní kolem cca 150, počítám maximálně s 200.

FRAM paměť by měla mít 32 KB.

Mou představou bylo to učinit takto:
Mam RFID čtečku, kde se čtou jednotlivé karty uživatelů a chtěl bych učinit i administratorsky čip, kde vlastně po přiložení bych se dostal do jiné části cyklu programu (přidat / odebrat uživatele) a zároveň tento přístup bych zapsal na SD kartu, včetně vše co bylo uložené do FRAM paměti... To znamená, kdybych se časem chtěl podívat, tak si vytáhnu SD kartu, dam do mobilu, nebo notebooku a vím, kdy kdo koho přidal, popřípadě blokoval a nebo změnil čas...
S tou databázi vůbec nevím jak bych to udělal... Právě jsem myslel, že bych SD kartu měl I na ty struktury, uživatele a tak... Ale prý to není jednoduché a je to navíc pomalé... Fakt netuším, nikdy jsem tohle nedělal.. Komunikace s SD kartou mi funguje.

Děkuji za rady a doporučení... Eventuálně me napadlo, že ten terminál nemusí umět písmenka.. Stačí jen čísla, jestli je to levnější... Pak kdyby správce přidával dalšího klienta, tak by akorát nezadal jméno.. A automaticky by se třeba priradilo, že je 151.... Zadal by jen číslo karty, čas a nastavil blokaci. A jméno bych časem třeba aktualizoval pomocí PC...

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

Re: Terminal se sériovou komunikaci

Příspěvek od ondraN » 27 led 2021, 10:42

gilhad píše:
27 led 2021, 10:25
Taky muze mit v RAM pouze ukazatel na tu databazi v FRAM a tu tam dynamicky alokovat a pouzivat podobne jako heap v RAM, akorat ze to navic muze pretrvat restart/vypnuti. Nebo tu FRAM pouzivat jako filesystem :)
Akorát je ta FRAM na I2C, takže to bude pomalé, proto jsem doporučoval něco jako index v RAM. Taky nevím, proč to řešit dynamicky, když tam není nic jiného, co by taky používalo tu FRAM. Zbytečně se to tím komplikuje.

Uživatelský avatar
gilhad
Příspěvky: 778
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: Terminal se sériovou komunikaci

Příspěvek od gilhad » 27 led 2021, 11:27

Tak ono I2C neni ani extra rychle ( v porovnani treba s RAM) ani extra pomale (v porovnani treba s clovekem), takze zalezi, co vsechno se tam bude prenaset, co tam bude ulozeno primarne a a co bude dopocitavano, nebo cachovano v RAM. A u trochu vetsich systemu se ta FRAM muze hodit i misto EEPROM i na dalsi veci, nez jen udrzovani "databaze" uzivatelu - naproklad i na konfiguraci casu, kdy je ci neni pracovni/otviraci doba, jake jsou kvoty casu, pripadne i skupiny uzivatelu ... takze myslim, ze je dobre vedet, ze to jde pouzit ruznymi zpusoby a pak treba zacit tim nejjednodussim a nejsnazsim, a az/pokud se system rozroste, tak vedet, ze to jde i jinak a (mozna) to prepsat sofistikovaneji ...

Patrik
Příspěvky: 199
Registrován: 02 dub 2020, 09:58
Reputation: 0

Re: Terminal se sériovou komunikaci

Příspěvek od Patrik » 27 led 2021, 13:13

Ano, tu FRAM chci používat primárně jako EEPROM paměť. Kdy zápisů by se provádělo tak cca 200 denně. Jinak čtení z paměti FRAM by se provádělo jen pokud by uživatel přiložil čipovou kartu... Jinak by program cyklo al bez potřeby čtení a zápisu do FRAM.

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

Re: Terminal se sériovou komunikaci

Příspěvek od ondraN » 27 led 2021, 14:01

Potřebuješ tu konzoli jako součást toho zařízení, nebo by stačilo se třeba jen připojit s notebookem?

Patrik
Příspěvky: 199
Registrován: 02 dub 2020, 09:58
Reputation: 0

Re: Terminal se sériovou komunikaci

Příspěvek od Patrik » 27 led 2021, 15:14

No, můžeš mi dát obě varianty. Nejlepší by bylo bez notebooku... Ale jde I o cenu... Pokud bych měl nějakého správce, který by měl za úkol přidávat jen karty a měnit proměnné, tak by to bylo fajn bez notebooku.

Odpovědět

Kdo je online

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