Последнее изменение:
Этой функцией можно установить сообщение, которое будет выдаваться с заданным интервалом.
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() |
#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)
{
// Обработка ошибки
}
// 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}")
}