• Shteibezandt_VA released this 2026-07-08 15:37:01 +03:00 | 0 commits to CAN_Protocol since this release

    Описание релиза

    В данном релизе реализованы две ключевые новинки, значительно повышающие удобство и гибкость работы с CAN-сообщениями:

    1. Реализована функция отправки сообщений по CAN

    Обновлена функция PROTOCAN_SEND, которая позволяет отправлять сообщения различных типов, оптимизируя процесс формирования и передачи данных.

    PROTOCAN_StatusTypeDef PROTOCAN_SEND(ProtoCanId_t id, ProtoCanData_t data);

    Аргументы:

    • id — структура типа ProtoCanId_t, должна быть предварительно заполнена пользователем. В обязательном порядке необходимо задать:

    MsgType — тип сообщения из ProtoCanMsgType.
    Route — обязательно установить в PROTOCAN_ROUTE_FROM_DEVICE.
    DeviceType и DeviceID — заполнить согласно текущим определениям CURRENT_TYPE_DEVICE и CURRENT_ID_DEVICE.

    • data — структура типа ProtoCanData_t, должна содержать актуальные данные в зависимости от типа сообщения.

    Структура ProtoCanId_t:

    Имеет поля: MsgBody, MsgType, DeviceID, DeviceType, Route, Priority.
    Используется для формирования идентификатора сообщения.

    Структура ProtoCanData_t:

    В зависимости от MsgType, заполняется одна из вложенных структур:

    CoreData — для типов BROADCAST, DISCRETE, ANALOG.
    GeneralAddressSpaceData — для типа GENERAL_ADDRESS_SPACE.
    ModbusData — для типов Modbus (COIL, DISCRETE, HOLDING, INPUT).
    ErrorData — для типа ERROR.

    2. Расширены возможности приёма CAN сообщений

    Добавлены три варианта приёма сообщений:

    • void PROTOCAN_LoopProcessRxMsgs(void); — бесконечный цикл обработки входящих сообщений. Позволяет непрерывно получать и обрабатывать сообщения, вызывая внутренние функции обработки по типу.
    • PROTOCAN_StatusTypeDef PROTOCAN_ProcessAllRxMsgs(void); — обработка всех доступных сообщений за один вызов. Подходит для обработки очереди сообщений, пока есть новые.
    • PROTOCAN_StatusTypeDef PROTOCAN_ProcessSingleRxMsg(void); — обработка одного доступного сообщения. Удобна в ситуациях, когда необходимо поэлементное или пошаговое получение данных.
    Downloads