Функция вычитывает из очереди канала принятые сообщения. Адаптер может принять максимум 100 сообщений на одну очередь для одного канала и имеет 64 Кбайт свободной памяти для всех очередей. При заполнении очереди или всей свободной памяти, приём
сообщений приостанавливается. Приём сообщений по протоколам независим от передачи.
Для протоколов ISO 9141, ISO 14230, ISO 15765, на каждый принятый пакет генерируется сообщение-индикатор начала приёма пакета. Оно состоит только из заголовка
приёмного флага START_OF_MESSAGE и отметки времени начала приёма сообщения. За этим сообщением следует нормальное сообщение с отметкой времени конца приема последнего бита сообщения. Этот неэкономный приём предназначен для того, чтобы определить
время начала и конца прихода пакета.
long PassThruReadMsgs(unsigned long ChannelID, PASSTHRU_MSG* pMsg, unsigned long* pNumMsgs, unsigned long Timeout)
Определение | Описание |
---|---|
STATUS_NOERROR | Функция выполнена успешно |
ERR_DEVICE_NOT_CONNECTED | Нет соединения с адаптером. Возможные причины: Адаптер выключен, нет сети, или не правильно задан IP адрес. |
ERR_INVALID_DEVICE_ID | Задан не существующий идентификатор адаптера DeviceID |
ERR_INVALID_CHANNEL_ID | Задан не существующий идентификатор канала ChannelID. |
ERR_NULL_PARAMETER | Не задан указатель на буфер приёмных пакетов pMsg. |
ERR_TIMEOUT | За заданное время пришло меньше сообщений чем заказали. |
ERR_NOT_SUPPORTED | Адаптер не поддерживает запрошенные параметры. |
ERR_BUFFER_EMPTY | Приёмная очередь пустая. |
ERR_NO_FLOW_CONTROL | Для протокола ISO15765 не установлен фильтр для Flow Control. |
ERR_BUFFER_OVERFLOW | Показывает что приёмная очередь была переполнена и сообщения были потеряны. Реальное количество принятых сообщений будет находится в NumMsgs. |
ERR_FAILED | Определён стандартом J2534. В адаптере, для этой функции не используется. |
#include "j2534_lib.hpp"
unsigned long ChannelID;
long Ret;
PASSTHRU_MSG Msg[10];
unsigned long NumMsgs;
NumMsgs = 2;
Ret = PassThruReadMsgs(ChannelID, Msg, &NumMsgs, 100);
if (Ret != STATUS_NOERROR)
{ // Обработка ошибки
}