Последнее изменение:
Функция устанавливает связь с адаптером. Не с автомобилем. Одна Dll может работать одновременно с несколькими адаптерами. Адаптеры должны отличаться разными IP адресами.
long PassThruOpen(void* pName, unsigned long* pDeviceID)
PassThruConnect() , PassThruClose()
| Определение | Описание |
|---|---|
| STATUS_NOERROR | Функция выполнена успешно |
| ERR_DEVICE_NOT_CONNECTED | Нет соединения с адаптером. Возможные причины: Адаптер выключен, нет сети, или не правильно задан IP адрес. |
| ERR_DEVICE_IN_USE | Прибор уже используется программой. Возможные причины: Не была выполнена функция
PassThruClose в
предыдущей сессии.
|
| ERR_NULL_PARAMETER | Не задан указатель pDeviceID |
| ERR_FAILED | Внутренняя ошибка в dll или в микропрограммы адаптре. Такие как ошибка выделения памяти или сбой
стека. Для получения поробностей нужно использовать функциюPassThruGetLastError()
|
#include "j2534_lib.hpp"
unsigned long DeviceID;
long Ret;
Ret = PassThruOpen("192.168.1.3", &DeviceID);
if (Ret != STATUS_NOERROR)
{
// Обработка ошибки
}
В данном примере используется JNI-обертка J2534JNI
для вызова нативных функций J2534 из Kotlin.
// J2534JNI - это класс-обертка для JNI
val j2534 = J2534JNI(context)
// Строка подключения может быть IP-адресом или именем устройства
val connectionString = "192.168.1.3"
val deviceResult = j2534.ptOpen(connectionString)
if (deviceResult.status == STATUS_NOERROR) {
val deviceID = deviceResult.devId
// Соединение с адаптером успешно установлено.
// deviceID используется в последующих вызовах.
Log.i("J2534", "Адаптер открыт, DeviceID: $deviceID")
} else {
// Обработка ошибки
Log.e("J2534", "Ошибка открытия адаптера: ${deviceResult.status}")
}