Nejste přihlášen/a.

Přihlásit se do poradny

 

Arduino, C++, přepisování proměnných

Od: ladefeto* odpovědí: 2 změna:

Dobý den,

mám dotaz na problém, s kterým se už několik dní trápím a tak se obracím s otázkou sem a doufám že najdu někoho zběhlejšího kdo by mi s tímto poradil.

Týká se objektového programování v Arduinu. Vytvořím si objekt, který má vlastní proměnné (viz obrázek Knihovna)

// Constructor

Zasobnik_prijimaci::Zasobnik_prijimaci() {

int velikost_vyuziti_zasobniku;

int velikost_zasobniku;

}

Proměnné "velikost_vyuziti_zasobniku" pak nastavím velikost například 200 a nikde dál její hodnotu neupravuji. V main/loop pak do smyčky volám dotaz na hodnotu této proměnné vždy když pošlu do arduina nějaká data.

Problém je v to, že 5x za sebou se hodnota proměnné nezmění (nemá ani důvod), ale pak se najednou změní. Moje podezření je, že špatně deklaruji ty proměné v konstruktoru/ špatná alokace paměti...?

Nemá někdo nápad co dělám špatně/ jak by se to mělo opravit?

V příloze posílám pár fragmentů kódu, kdyby se v tom náhodou chtěl někdo šťourat trochu víc.


doplněno 17.11.19 20:27:

Identifikoval jsem problém blíže ke zdroji.

chyby dělají:

řádky 185 - paket_velikost = prijimaci_zasobnik[4];

řádek 193 - paket_kontrolni_soucet = prijimaci_zasobnik[5];

v přiloženém archivu je to soubor Zasobnik_prijimaci.cpp

netuším proč, ale při tomto zápisu dojde k tomu, že se v proměnná prijimaci_zasobnik[4] posune na místo prijimaci_zasobnik[3] a prijimaci_zasobnik[4] zůstane bez hodnoty. Nevím jestli jsou ty proměné nějak vadně zadefinované, už mi z toho jde hlava kolem. Možná špatné zadefinování hodnot paket_velikost , paket_kontrolni_soucet a prijimaci_zasobnik. No já ale vůbec netuším v čem je ta chyba.


Parova_komunikace.rar 3.86 kB

Arduino, C++, přepisování proměnných
Arduino, C++, přepisování proměnných #2

 

 

2 odpovědi na otázku
Řazeno dle hodnocení

 

 

nikdo*
hodnocení

0x

Jen tak na dálku. Tyhle divný chování může způsobovat kolize tabulek proměnných s pamětí programu za jeho běhu, zkontrolujte si obsazení paměti za běhu.

Druhá věc, která mě napadá je kolize lokálních a globálních proměnných.

ladefeto*
hodnocení

Ok, děkuji,ale bohužel ale vůbec nevím jak tohle s Arduinem udělat. Pokusím se si zítra na toto něco najít.

 

 


 

 

 

Přihlásit se k odběru odpovědí z této otázky:

Neneseme odpovědnost za správnost informací a za škodu vzniklou jejich využitím. Jednotlivé odpovědi vyjadřují názory jejich autorů a nemusí se shodovat s názorem provozovatele poradny Poradte.cz.

Používáním poradny vyjadřujete souhlas s personifikovanou reklamou, která pomáhá financovat tento server, děkujeme.

Copyright © 2004-2025 Poradna Poradte.cz. Všechna práva vyhrazena. Prohlášení o ochraně osobních údajů. | [tmavý motiv]