Блоки приема и передачи по UART с контрольной суммой

В архиве находится:

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).
Минусы:
Ограниченное количество отправляемых переменных (можно конечно расширить, но надо ковыряться в СИ).


1

Вложения

  • zip RxTx_UART_8int
    Date added: 03.02.2018 09:57 File size: 153 KB Downloads: 2666

Publication author

758
Comments: 15Publics: 389Registration: 04-02-2018

3 thoughts on “Блоки приема и передачи по UART с контрольной суммой”

  1. Мне для проекта понадобилось принимать пакеты байт по UART с переменной длиной и чек суммой в конце, причём за один цикл программы..Штатные блоки не подошли, написал и отладил свой, в этом мне очень помог Anatoliy.
    Кидаю блок сюда, в нём выбирается номер UART и массив для принимаемых байт, а также способ задания длины, статичный или динамический.
    Вход E разрешает извлечение байт из буфера UART системы если он True,
    вход N задаёт длину пакета,
    выход Next поднимается в True по принятии пакета,
    выход CSum выдаёт контрольную сумму (младший байт суммы всех байт в пакете кроме последнего)
    выход L выдаёт длину пакета, и она же номер байта с контрольной суммой в архиве.
    Максимальная длина пакета 256 байт.

    Блок UART-Byte попроще, он принимает только один байт, в отличии от штатного имеет вход разрешения, это важно когда нужно принимать один байт только при определённых условиях а не всегда..

    UART-Packet_(Code_-_Professional) UART-Byte_(Code_-_Professional)

    0
  2. Я также не понял как работает к примеру блок UART_to 8 int….

    как на примере можно использовать блоки для передачи данных по ESP8266

    0
  3. В блоках 3. UART_to_4int, 4. UART_to_8int вероятно ошибки. Так как передающие блоки 3. 4int_to_UART, 4. 8int_to_UART передают в формате (String) , а принимающие блоки принимают в формате (byte).

    0

Leave a Comment

Войти с помощью: