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

PassThruClose v4.04 v5.0

Прекращение связи с адаптером

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

Описание

Функция завершает связь с адаптером и освобождает все связанные ресурсы. При вызове автоматически закрываются все открытые каналы (протоколы), поэтому нет необходимости вызывать PassThruDisconnect() для каждого канала отдельно.

long PassThruClose(unsigned long DeviceID)
Важно: Всегда вызывайте PassThruClose() перед завершением программы. Если этого не сделать, при следующем вызове PassThruOpen() будет возвращена ошибка ERR_DEVICE_IN_USE.

Параметры

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

Код Описание Возможные причины и решения
STATUS_NOERROR Функция выполнена успешно -
ERR_INVALID_DEVICE_ID Неверный идентификатор устройства
  • DeviceID не был получен от PassThruOpen()
  • Устройство уже было закрыто ранее
  • Решение: проверьте, что передаёте корректный DeviceID
ERR_DEVICE_NOT_CONNECTED Соединение с адаптером потеряно
  • Адаптер был выключен или отключён от сети
  • Решение: ресурсы освобождены автоматически, можно игнорировать
ERR_FAILED Внутренняя ошибка
  • Ошибка освобождения ресурсов
  • Решение: используйте PassThruGetLastError() для деталей

Примеры

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

#include "j2534_dll.hpp"

unsigned long DeviceID; // ID, полученный от PassThruOpen

// ... работа с устройством ...

// Закрываем соединение
long ret = PassThruClose(DeviceID);
if (ret != STATUS_NOERROR)
{
    char error[256];
    PassThruGetLastError(error);
    printf("Ошибка закрытия: %s\n", error);
}

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

// deviceID получен ранее от ptOpen
val result = j2534.ptClose(deviceID)

if (result.status == STATUS_NOERROR) {
    Log.i("J2534", "Соединение с адаптером закрыто")
} else {
    Log.e("J2534", "Ошибка закрытия: ${result.status}")
}

Пример на Python (ctypes)

from ctypes import *

# device_id получен ранее от PassThruOpen

ret = j2534.PassThruClose(device_id)

if ret == 0:  # STATUS_NOERROR
    print("Соединение закрыто")
else:
    error = create_string_buffer(256)
    j2534.PassThruGetLastError(error)
    print(f"Ошибка: {error.value.decode()}")

Пример на C# (P/Invoke)

// deviceId получен ранее от PassThruOpen

int ret = J2534.PassThruClose(deviceId);

if (ret == 0) // STATUS_NOERROR
{
    Console.WriteLine("Соединение закрыто");
}
else
{
    var error = new System.Text.StringBuilder(256);
    J2534.PassThruGetLastError(error);
    Console.WriteLine($"Ошибка: {error}");
}