В архиве находится:
4 блока передачи
1. 4byte_to_UART
2. 8byte_to_UART
3. 4int_to_UART
4. 8int_to_UART
4 блока приема
1. UART_to_4byte
2. UART_to_8byte
3. UART_to_4int
4. UART_to_8int
4 блока конвертации битовых переменных
1. 8bit_to_byte — соединяет 8 бит в байт
2. byte_to_8bit — разбивает байт на 8 бит
3. 16bit_to_int — соединяет 16 бит в INT
4. int_to_16bit — разбивает INT на 16 бит
2 блока конвертации
1. 2byte_to_int — соединяет 2 байта в INT
2. int_to_2byte — разбивает INT на 2 байта
Блок пересчета температуры с аналогового датчика MCP9700
Блок триггера аварий со звуковой сигнализацией
ну и небольшой проект.
Отличия данных блоков UART от стандартных «Отправка переменной в UART» и «Прием переменной из UART»:
1. Контрольная сумма пакета. Просто необходима в условиях длинной линии RS485.
2. Минимальная длина пакета засчет передачи в формате BYTE, а не ASCII.
3. Пакет считается принятым, если в течении N миллисекунд нет данных (как в ModBus RTU).
Минусы:
Ограниченное количество отправляемых переменных (можно конечно расширить, но надо ковыряться в СИ).
Мне для проекта понадобилось принимать пакеты байт по UART с переменной длиной и чек суммой в конце, причём за один цикл программы..Штатные блоки не подошли, написал и отладил свой, в этом мне очень помог Anatoliy.
Кидаю блок сюда, в нём выбирается номер UART и массив для принимаемых байт, а также способ задания длины, статичный или динамический.
Вход E разрешает извлечение байт из буфера UART системы если он True,
вход N задаёт длину пакета,
выход Next поднимается в True по принятии пакета,
выход CSum выдаёт контрольную сумму (младший байт суммы всех байт в пакете кроме последнего)
выход L выдаёт длину пакета, и она же номер байта с контрольной суммой в архиве.
Максимальная длина пакета 256 байт.
Блок UART-Byte попроще, он принимает только один байт, в отличии от штатного имеет вход разрешения, это важно когда нужно принимать один байт только при определённых условиях а не всегда..
UART-Packet_(Code_-_Professional) UART-Byte_(Code_-_Professional)
Я также не понял как работает к примеру блок UART_to 8 int….
как на примере можно использовать блоки для передачи данных по ESP8266
В блоках 3. UART_to_4int, 4. UART_to_8int вероятно ошибки. Так как передающие блоки 3. 4int_to_UART, 4. 8int_to_UART передают в формате (String) , а принимающие блоки принимают в формате (byte).