SOLO Communication Manual - UART and USB
www.solomotorcontrollers.com
September 2021 - Revision V_1.0.1 Copyright © 2021, All right Reversed. SOLO motor controllers.
15
DATA Types Conversions:
Converting Sfxt(32-17) data type to floating point data type:
If the DATA section of a packet received from SOLO, contains a number in Fixed-Point format,
you can use the following two methods to convert it back to a floating point data type depending
on the sign of the received data and whether if it’s a positive value or a negative value:
Condition1) If the data read from SOLO is less than or equal to 0x7FFE0000 (Hex) or
2,147,352,576 (decimal), This means the data is positive, so follow the following steps
1) Convert the hex data read from SOLO into Decimal format
2) The float number = data read from SOLO (in Decimal format) / 131072
Condition2) If the data read from SOLO is greater than 0x7FFE0000 (Hex) or 2147352576
(decimal), This means the data is negative, so the conversion will be as :
1) Subtract the data from 0xFFFFFFFF and then add a 0x1 to it (add 1 to it)
2) Convert the result of step “1” into Decimal format
3) The float number = (data in Decimal format taken from step “2” /131072 ) * -1
Example1 _ positive Numbers:
Data read from SOLO is “0x00030000”
So it’s a Positive Numbers Conversion since the data read from SOLO is less than or equal to
0x7FFE0000 so the conversion will be:
1) Decimal (0x00030000) = 196608
2) 196608 / (131072) = 1.5
Example2 _ negative Numbers:
Data read from SOLO is “0xFFFCCDD2”
So it’s a Negative Numbers Conversion since the data read from SOLO is greater than
0x7FFE0000, so the conversion will be:
1) (0xFFFFFFFF – 0xFFFCCDD2 ) + 0x1 = 0x0003322E
2) Decimal ( 0x0003322E ) = 209454
3) (209454 / (131072) )* -1 = -1.598