Vítej, Host. Prosím přihlaš se nebo se zaregistruj.
24.04.2026, 21:11:24

Domů Nápověda Vyhledávání Přihlásit Registrovat
 
Fórum k produktům firmy ELSACO Kolín  

+  PROMOS fórum
|-+  FRED - grafické vývojové prostředí
| |-+  FRED - platforma PL2 (CCPU)
| | |-+  Zmena poradi bajtu
0 uživatelů a 1 Host prohlíží toto téma. « předchozí další »
Stran: [1] Dolů Tisk
Autor Téma: Zmena poradi bajtu  (Přečteno 3226 krát)
anonym
člen

Příspěvků: 33



« kdy: 20.10.2010, 12:25:41 »

Do CCPU se nam dostava (z atypickeho merice) protokolem Modbus floatove cislo, ale ma opacne poradi bajtu. Dostavame 0x12345678, potrebovali bychom 0x78563412 a ve vysledku z toho udelat float. Lze to nejak v CCPU dosahnout?
Zaznamenáno
libor
moderátor+

Příspěvků: 388



« Odpověď #1 kdy: 20.10.2010, 13:55:44 »

Tuto konverzi lze provést, jedná se o využití SW hradel.

Nejprve je nutné si číslo rozdělit na 2 dvojbajtové části (WORDy) a jejich jednotlivé bajty mezi sebou prohodit (viz první obrázek).

Následně je potřeba opět ze 2 WORDů složit jedno 4bajtové číslo, takže provedeme posun horního WORDu o 16 bitů doleva (vynásobením 65536) a čísla sečteme. Výsledek "přetypujeme" na float přivedením na vstup nějakého floatového modulu - v příkladu jsem použil Aplus (přičítaná hodnota je 0.0, aby neovlivnila výsledek). Vše je vidět na přiloženém obrázku nebo v ukázkovém projektu, který je také v příloze.

(připojené soubory vidí pouze registrovaní uživatelé)
Zaznamenáno

Stran: [1] Nahoru Tisk 
« předchozí další »
Skočit na:  


Poháněno MySQL Poháněno PHP Powered by SMF 1.1.21 | SMF © 2011, Simple Machines Validní XHTML 1.0! Validní CSS!