-
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