Блоки приема и передачи по 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
    Дата добавления: 03.02.2018 09:57 Размер файла: 153 КБ Кол-во скачиваний: 2781

Автор публикации

не в сети 1 неделя

Сергей Глушенко

782
Комментарии: 15Публикации: 391Регистрация: 04-02-2018

3 комментария к “Блоки приема и передачи по 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. В блоках 3. UART_to_4int, 4. UART_to_8int вероятно ошибки. Так как передающие блоки 3. 4int_to_UART, 4. 8int_to_UART передают в формате (String) , а принимающие блоки принимают в формате (byte).

    0

Оставьте комментарий

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