Функция предаёт сообщения по диагностическому протоколу. Передающая очередь адаптера рассчитана на 50 сообщений на одну очередь для одного канала и имеет 64 Кбайт свободной памяти для всех очередей. При заполнении очереди или всей свободной памяти, приём сообщений в передающую очередь приостанавливается.
long PassThruWriteMsgs(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_INVALID_MSG | Не правильная структура сообщения заданная в указателе pMsg |
ERR_NULL_PARAMETER | Не задан указатель pMsg |
ERR_MSG_PROTOCOL_ID | Протокол заданный в параметрах передаваемого сообщения не совпадает с протоколом заданным в ChannelID |
ERR_NO_FLOW_CONTROL | Для протокола ISO15765 не установлен фильтр для Flow Control. |
ERR_BUFFER_FULL | Очередь передачи переполнена. |
ERR_FAILED | Определён стандартом J2534. В адаптере, для этой функции не используется. |
#include "j2534_lib.hpp"
unsigned long ChannelID;
unsigned long NumMsgs;
long Ret;
PASSTHRU_MSG Msg[10];
Msg[0].ProtocolID = ISO15765;
Msg[0].TxFlags = FL_ISO15765_FRAME_PAD;
Msg[0].Data[0] = 0x00;
Msg[0].Data[1] = 0x00;
Msg[0].Data[2] = 0x07;
Msg[0].Data[3] = 0xE0;
Msg[0].Data[4] = 0x3E;
Msg[0].DataSize = 5;
NumMsgs = 1;
Ret = PassThruWriteMsgs(ChannelID, Msg, &NumMsgs, 100);
if (Ret != STATUS_NOERROR)
{ // Обработка ошибки
}