...
Максимальный размер фрейма составляет 255 байт, общий размер технической полей фрейма - 10 байт. Таким образом, максимально возможный размер полезных данных возможен до 245 байт.
Поле | ADDRESS | FN | LEN | PAYLOAD | ID | CRC |
Формат | BCD MSB | UINT8 | UINT8 | BLOB | UINT16 | UINT16 |
Размер | 4 | 1 | 1 | 0...245 | 2 | 2 |
Info |
---|
Для многобайтовых полей по умолчанию (если не указано явно) используется прямой порядок байт (LSB). Поля FLOAT32 и FLOAT64 являются числами IEEE.754 одинарной и двойной точности соответственно. |
...
Code Block | ||||
---|---|---|---|---|
| ||||
#include < stddef<stddef.h> #include <stdint.h> uint16_t crc(void const *data, size_t size) { uint8_t i; uint16_t result = 0xFFFF; uint8_t const *buf = (uint8_t const *)data; while (size--) { result ^= *buf++; for (i = 0; i < 8; i++) result = (result & 1) ? (result >> 1) ^ 0xA001 : result >> 1; } return result; } |
...