Quantex GmbH
Su región: Europa

PassThruClose v4.04 v5.0

Finalización de la comunicación con el adaptador

Última modificación:

Descripción

La función finaliza la comunicación con el adaptador y libera todos los recursos asociados. Al llamarla se cierran automáticamente todos los canales abiertos (protocolos), por lo que no es necesario llamar a PassThruDisconnect() para cada canal por separado.

long PassThruClose(unsigned long DeviceID)
Importante: Llame siempre a PassThruClose() antes de finalizar el programa. De lo contrario, en la siguiente llamada a PassThruOpen() se devolverá el error ERR_DEVICE_IN_USE.

Parámetros

Códigos de error devueltos

Código Descripción Posibles causas y soluciones
STATUS_NOERROR La función se ejecutó correctamente -
ERR_INVALID_DEVICE_ID Identificador de dispositivo no válido
  • DeviceID no se obtuvo de PassThruOpen()
  • El dispositivo ya se había cerrado anteriormente
  • Solución: compruebe que está pasando un DeviceID correcto
ERR_DEVICE_NOT_CONNECTED Se perdió la conexión con el adaptador
  • El adaptador se apagó o se desconectó de la red
  • Solución: los recursos se liberaron automáticamente, se puede ignorar
ERR_FAILED Error interno
  • Error al liberar los recursos
  • Solución: use PassThruGetLastError() para obtener detalles

Ejemplos

Ejemplo en C/C++

#include "j2534_dll.hpp"

unsigned long DeviceID; // ID obtenido de PassThruOpen

// ... trabajo con el dispositivo ...

// Cerramos la conexión
long ret = PassThruClose(DeviceID);
if (ret != STATUS_NOERROR)
{
    char error[256];
    PassThruGetLastError(error);
    printf("Error al cerrar: %s\n", error);
}

Ejemplo en Kotlin (Android)

// deviceID obtenido previamente de ptOpen
val result = j2534.ptClose(deviceID)

if (result.status == STATUS_NOERROR) {
    Log.i("J2534", "Conexión con el adaptador cerrada")
} else {
    Log.e("J2534", "Error al cerrar: ${result.status}")
}

Ejemplo en Python (ctypes)

from ctypes import *

# device_id obtenido previamente de PassThruOpen

ret = j2534.PassThruClose(device_id)

if ret == 0:  # STATUS_NOERROR
    print("Conexión cerrada")
else:
    error = create_string_buffer(256)
    j2534.PassThruGetLastError(error)
    print(f"Error: {error.value.decode()}")

Ejemplo en C# (P/Invoke)

// deviceId obtenido previamente de PassThruOpen

int ret = J2534.PassThruClose(deviceId);

if (ret == 0) // STATUS_NOERROR
{
    Console.WriteLine("Conexión cerrada");
}
else
{
    var error = new System.Text.StringBuilder(256);
    J2534.PassThruGetLastError(error);
    Console.WriteLine($"Error: {error}");
}