Obrácení pořadí bytů pro komunikaci
06.06.2011 08:25
Tuto operaci je třeba provést např. při komunikaci s vizualizací InTouch, popř. jinou, která u MODBUSU nepodporuje formát swapet-long / swapet-float. Obrácení pořadí bytů se pak provede takhle nějak (v případě proměnných LONG; nutno ověřit funkci!):
Let LONG = ((SwLONG & 0x0000FFFF) << 16) | (SwLONG >> 16)
Pro float je to trochu složitější, kód pro matici jsem vytvořil takto:
For iter01, 0.000, 10.000, 1.000
Let CH_COM = SwFLOATs[iter01,0]
StrFormat CH_COM_O, 0, NONE, "", 6, -1, -1, -1, CH_COM, NONE.0
Let FLOATs[2*iter01,0] = CH_COM_O[0,0]|(CH_COM_O[0,1]<<8)
Let FLOATs[2*iter01+1,0] = CH_COM_O[0,2]|(CH_COM_O[0,3]<<8)
EndFor