Quantex GmbH
Twój region: Europa

PassThruClose v4.04 v5.0

Zakończenie komunikacji z adapterem

Ostatnia zmiana:

Opis

Funkcja kończy komunikację z adapterem i zwalnia wszystkie powiązane zasoby. Podczas wywołania automatycznie zamykane są wszystkie otwarte kanały (protokoły), dlatego nie ma potrzeby wywoływania PassThruDisconnect() dla każdego kanału z osobna.

long PassThruClose(unsigned long DeviceID)
Ważne: Zawsze wywołuj PassThruClose() przed zakończeniem programu. W przeciwnym razie przy następnym wywołaniu PassThruOpen() zostanie zwrócony błąd ERR_DEVICE_IN_USE.

Parametry

Zwracane kody błędów

Kod Opis Możliwe przyczyny i rozwiązania
STATUS_NOERROR Funkcja wykonana pomyślnie -
ERR_INVALID_DEVICE_ID Nieprawidłowy identyfikator urządzenia
  • DeviceID nie został uzyskany z PassThruOpen()
  • Urządzenie zostało już wcześniej zamknięte
  • Rozwiązanie: sprawdź, czy przekazujesz prawidłowy DeviceID
ERR_DEVICE_NOT_CONNECTED Utracono połączenie z adapterem
  • Adapter został wyłączony lub odłączony od sieci
  • Rozwiązanie: zasoby zostały zwolnione automatycznie, można zignorować
ERR_FAILED Błąd wewnętrzny
  • Błąd zwalniania zasobów
  • Rozwiązanie: użyj PassThruGetLastError(), aby uzyskać szczegóły

Przykłady

Przykład w C/C++

#include "j2534_dll.hpp"

unsigned long DeviceID; // ID uzyskany z PassThruOpen

// ... praca z urządzeniem ...

// Zamykamy połączenie
long ret = PassThruClose(DeviceID);
if (ret != STATUS_NOERROR)
{
    char error[256];
    PassThruGetLastError(error);
    printf("Błąd zamknięcia: %s\n", error);
}

Przykład w Kotlin (Android)

// deviceID uzyskany wcześniej z ptOpen
val result = j2534.ptClose(deviceID)

if (result.status == STATUS_NOERROR) {
    Log.i("J2534", "Połączenie z adapterem zamknięte")
} else {
    Log.e("J2534", "Błąd zamknięcia: ${result.status}")
}

Przykład w Python (ctypes)

from ctypes import *

# device_id uzyskany wcześniej z PassThruOpen

ret = j2534.PassThruClose(device_id)

if ret == 0:  # STATUS_NOERROR
    print("Połączenie zamknięte")
else:
    error = create_string_buffer(256)
    j2534.PassThruGetLastError(error)
    print(f"Błąd: {error.value.decode()}")

Przykład w C# (P/Invoke)

// deviceId uzyskany wcześniej z PassThruOpen

int ret = J2534.PassThruClose(deviceId);

if (ret == 0) // STATUS_NOERROR
{
    Console.WriteLine("Połączenie zamknięte");
}
else
{
    var error = new System.Text.StringBuilder(256);
    J2534.PassThruGetLastError(error);
    Console.WriteLine($"Błąd: {error}");
}