petrMicro Programování Mosaic 9. 4. 2025 15:31 10. 4. 2025 13:00

Dobrý den,

Narazil jsem, že mi nefunguje funkce „ReadFromDataBox“ z knihovny DataBoxLib_V17_20201109.mlb v mém programu

Pokusem jsem zjistil, že funkce není funkční když chci vracet přečtené data do proměnné na pozici kolem %R65000 (%R65528). To je asi adresa rozhraní dvou paměťových bloku.

 

Proměnná  „Sur_name at %R65000: array [0..200] of T_surovina“ je funkce nefunkční.

Pokud je %R40000 nebo %R100000 tak funkce bez problému funguje.

 

Přikládám zkušební program.

Odpovědi 2

M.B. 10. 4. 2025 12:16

Dobrý den,

v knihovně je opravdu chyba. Funkce kvůli zpětné kompatibilitě používá pro prvních 64kB starší verzi instrukce, která je dostupná napříč všemi systémy. Kopírování probíhá v cyklu po 250 bytech od konce zadané zóny. Chyba se projeví ve chvíli kdy kopírovaný blok 250 bytů začíná v prvních 64kB, ale svou velikostí tuto oblast přesahuje. V tu chvíl vrátí funkce chybu čtení/zápisu.

Než bude chyba opravena je možno použít novější funkce ReadFromDBx a WriteToDBx. Tyto funkce jsou obecně rychlejší a pracují s celou pamětí bez omezení velikostí kopírovaného bloku. Upravený projekt je přiložen.

petrMicro 10. 4. 2025 13:00

Dobrý den,

děkuji za úpravu programu. Zítra vyzkouším u zákazníka. A děkuji za upozornění na novější funkce ReadFromDBx a WriteToDBx.

Vaše odpověď

Pro vložení odpovědi je nezbytné být přihlášený. Pokračujte na přihlášení.