==== BufDec ====
Decode a part of a buffer into a scalar
=== Description ===
BufDec( const buf[], offset, method )
This command will decode a portion of a buffer into a scalar variable.
=== Parameters ===
| ''buf'' | Data buffer |
| ''offset'' | Byte offset into the buffer where to start the decoding |
| ''method'' | What type of value is encoded in the buffer |
Available methods:
^ Method ^ Length ^ Type ^ Description ^
^ BT_INT8 | 8 bit | signed integer | Single octet value |
^ BT_UINT8 | 8 bit | unsigned integer | Single octet value |
^ BT_INT16 | 16 bit | signed integer | Big endian integer |
^ BT_UINT16 | 16 bit | unsigned integer | Big endian integer |
^ BT_INT32 | 32 bit | signed integer | Big endian integer |
^ BT_UINT32 | 32 bit | unsigned integer | Big endian integer |
^ BT_INT32LE | 32 bit | signed integer | Little endian integer |
^ BT_UINT32LE | 32 bit | unsigned integer | Little endian integer |
^ BT_INT32BLE | 32 bit | signed integer | Big-Little endian integer |
^ BT_UINT32BLE | 32 bit | unsigned integer | Big-Little endian integer |
^ BT_INT32LBE | 32 bit | signed integer | Little-Big endian integer |
^ BT_UINT32LBE | 32 bit | unsigned integer | Little-Bit endian integer |
^ BT_FLOAT | 32 bit | float | IEEE 732 floating point |
^ BT_FLOATLE | 32 bit | float | IEEE 732 floating point little endian |
^ BT_FLOAT64 | 64 bit | float64 | IEEE 732 64-bit floating point (converts to 32 bit float) |
^ BT_FLOAT64LE | 64 bit | float64 | IEEE 732 64-bit floating point little endian (converts to 32 bit float) |
Also available for decoding bitmaps:
Bit offset : **BT_BITOFS0** through **BT_BITOFS15**\\
Bit mask : **BT_BITMASK1** through **BT_BITMASK8**
The BT_BITOFSx and BT_BITMASKx methods can be OR:ed together for bitmask decoding.
Example: To extract a 3 bit value from bit position 5,6 and 7, use ''%%BT_BITOFS5 | BT_BITMASK3%%''
=== Return value ===
Returns the decoded value
Note that the returned value is always a 32 bit cell (signed 32 bit integer or 32 bit float).
=== Example usage ===
new x;
new s{10};
if(ModbusRead(5, MB_HOLDING, 100, 2, s) == 4) { // Request and receive two registers (32 bits total)
x = BufDec(s, 0, BT_INT32); // Decode the received data as a 32 bit integer
// ..further processing
}