Quantex GmbH
DE RU EN EL
Ваш регион: Европа

PassThru StartPeriodicMsg Запуск периодического сообщения

Последнее изменение:

Описание

Этой функцией можно установить сообщение, которое будет выдаваться с заданным интервалом.

long PassThruStartPeriodicMsg(unsigned long ChannelID, PASSTHRU_MSG* pMsg, unsigned long* MsgID, unsigned long TimeInterval)

Параметры

Возвращаемые коды ошибок

Определение Описание
STATUS_NOERROR Функция выполнена успешно
ERR_DEVICE_NOT_CONNECTED Нет соединения с адаптером. Возможные причины: Адаптер выключен, нет сети, или не правильно задан IP адрес.
ERR_INVALID_DEVICE_ID Задан не существующий идентификатор адаптера DeviceID
ERR_NOT_SUPPORTED Адаптер не поддерживает запрошенные параметры. Например время интервала повторения указано меньше 20мс.
ERR_INVALID_MSG Не правильная структура сообщения заданная в указателе pMsg
ERR_INVALID_CHANNEL_ID Задан не существующий идентификатор канала ChannelID
ERR_NULL_PARAMETER Не задан указатель pMsg
ERR_INVALID_TIME_INTERVAL Не правильно задан интервал выдачи сообщений
ERR_MSG_PROTOCOL_ID Протокол заданный в параметрах передаваемого сообщения не совпадает с протоколом заданным в ChannelID
ERR_EXCEEDED_LIMIT Превышено количество установленных периодических сообщений.
ERR_FAILED Внутренняя ошибка в dll или в микропрограммы адаптере. Такие как ошибка выделения памяти или сбой стека. Для получения поробностей нужно использовать функцию PassThruGetLastError()

Примеры

Пример на C/C++

#include "j2534_lib.hpp"

unsigned long ChannelID; // ID канала
unsigned long MsgID;     // ID для нового периодического сообщения
long Ret;
PASSTHRU_MSG Msg;

// Сообщение "Tester Present" для ISO15765
Msg.ProtocolID = ISO15765;
Msg.TxFlags = ISO15765_FRAME_PAD;
Msg.DataSize = 5;
Msg.Data[0] = 0x00;
Msg.Data[1] = 0x00;
Msg.Data[2] = 0x07;
Msg.Data[3] = 0xDF; // Адрес ЭБУ
Msg.Data[4] = 0x3E; // Команда Tester Present

// Запускаем отправку каждые 2000 мс
Ret = PassThruStartPeriodicMsg(ChannelID, &Msg, &MsgID, 2000);
if (Ret != STATUS_NOERROR)
{
    // Обработка ошибки
}

Пример на Kotlin (Android)

// channelID получен ранее
val timeInterval = 2000 // ms

// Сообщение "Tester Present" для ISO15765
val msg = PassThruMsg(
    protocolID = ISO15765,
    dataSize = 5,
    txFlags = ISO15765_FRAME_PAD,
    data = byteArrayOf(0x00, 0x00, 0x07, 0xDF.toByte(), 0x3E)
)

val result = j2534.ptStartPeriodicMsg(channelID, msg, timeInterval)
if (result.status == STATUS_NOERROR) {
    val msgID = result.msgId
    // Периодическое сообщение успешно запущено
    Log.i("J2534", "Запущено периодическое сообщение, MsgID: $msgID")
} else {
    // Обработка ошибки
    Log.e("J2534", "Ошибка запуска периодического сообщения: ${result.status}")
}