2024. április 19., péntek

Gyorskeresés

[NXT] Ismert hibák, észrevételek

Írta: |

[ ÚJ BEJEGYZÉS ]

Utoljára frissítve: 2009-06-26 15:04

#1 - BT kapcsolat építés
Kapcsolat építésénél (lehet manuális vagy programból) gyakran előfordul, hogy a slave azonnal bontja a kapcsolatot (be kell iktatni egy kis várakozást, kb. 5 mp, és utána leellenőrizni, hogy él-e még a kapcsolat).

#2 - BT kapcsolat építés
Kapcsolat építésénél, ha a master akkor próbál kapcsolatot teremteni, mikor a slave-t bekapcsoljuk, slave-n kikapcsolhat a BT vezérlő.

#3 - BricxCC bug
A legfrissebb verzióban (3.3.7.19.) 4 vagy ennél nagyobb szám kerül a BTDeviceName()-be (elvileg 32 db párosítást képes eltárolni), akkor szól, hogy a szám nem kisebb mint 4, így nem fordul le. Csak for ciklus + tömb módszerrel hajlandó kiírni a kapcsolatok neveit. Példa a hibaüzenetre:
"Line 53: Error: compchk failed. 5 is not less than 4."

Manuális módszer:
TextOut(0,LCD_LINE1,BTDeviceName(SLAVE_1));

For + tömb:
int slaves[] = {SLAVE_1,SLAVE_2,SLAVE_3};

for (int i=0; i<=3; i++)
{
int x = slaves[i];
TextOut(0,LCD_LINE1,BTDeviceName(x));
}

3.3.7.17.-es verzióban a for ciklus nem működik, mert a BTDeviceName() konstansot vár, a tömbös módszert nem fogadja el, de 4-nél nagyobb számot viszont már elfogad, így ki lehet íratni manuálisan.

#4 - BT befagyás
Élő kapcsolatot jelez, pedig nincs élő kapcsolat azon a csatornán (vagy semelyik csatornán).
Ha befagyott a BT, és menüből próbáljuk a kapcsolatot bontani: befagy. Ha befagyott a BT, és kikapcsoljuk az NXT-t, nem lehet bekapcsolni (kb. 30-60 mp után lehet), aksi ki és be után újra működik.
Befagyás lehetséges okai:
+ BT kapcsolódás után a slave eldobja a kapcsolatot de a master még azt hiszi, hogy él a kapcsolat, és már várja az üzenetet, illetve küld üzenetet (slave szemszögéből is előfordulhat).
+ Sok üzenettel túlterheljük a BT vezérlőt.
+ Üzenetforgalom idején kezdjük el ellenőrizni a BT vezérlő állapotát.

#5 - Szenzorok
While ciklusban mindig érdemes valamennyi várakoztatást belerakni, mert főleg a szenzor lehívó függvények meghülyülnek (hibás adatokat adnak vissza), ha gyorsan pörög a ciklus.

#6 - Szenzorok
Szenzorok lehívó függvényeinek egy taszkban kell lennie, különben csak a legutolsónak meghívott taszk függvényei működnek.

#7 - Fagyás
Egy bizonyos TextOut() függvénnyel le lehet fagyasztani az egész NXT-t. (Nem mentettem le, hogy milyen szöveggel hal le.)

#8 - Sub
Ha meg akarunk hívni egy sub függvényt, akkor sub-t a meghívás felett kell definiálni. Tehát, ha a sub akarmi() kódrész a 100-105 sorban van, akkor a akarmi() parancsot 105. sor alatt lehet meghívni, különben a fordító hibát jelez.

#9 - Kijelző
Vízszintes:
100 képpont vízszintesen, 16 kirajzolható karakter, balról kezdi a számozást.
0 -> 1. karakter
6 -> 2. karakter
12 -> 3. karakter .....
Természetesen lehet 1,2,3,stb.-vel is kezdeni, ennek megfelelően beljebb kezdi

Függőleges:
64 képpont függőlegesen, 8 sor, számozást alulról kezdi.
8-(i/8) (i: a beadott szám, és ez a képlet megadja, hányadik sort jelenti az a szám.) Itt nincs törés, pl.: 56-63 között is ugyanabba (1. sorba) rakja a szöveget.

#10 - BricxCC bug

Ezt be kell állítani Edit -> Preferences -ben.

#11 - File Error
Ha a NXT File Error-t ír ki, az egyik oka: túl lett címezve egy tömb.

#12 - Taszkok
Kommunikáció újraírása során tapasztaltam, hogy hiába van a leírásban az, hogy 255 taszkot bír el az NXT, jobban szereti, ha minél kevesebb van. Eredeti programban 4 db taszk felelt a kommunikációért (BT figyelés, RS485 figyelés, üzenet értelmező, csomagtovábbító), de rendszeresen elakadt az üzenet, befagyott, stb. Miután 1 db taszkba sűrítettem az egészet, tökéletesen működik, késleltetés állandó, minden üzenet megérkezik.

Hozzászólások

(#2) Elrood válasza ,,no name" (#1) üzenetére


Elrood
őstag

Én is szeretnék egyet, de az ár engem is korlátoz :(.

''The spice exists on only one planet in the entire universe. A desolate, dry planet with vast deserts. The planet is Arrakis, also known as DUNE.''

További hozzászólások megtekintése...
Copyright © 2000-2024 PROHARDVER Informatikai Kft.