Quantex GmbH
Ihre Region: Europa

PassThruSetProgrammingVoltage v4.04 v5.0

Einstellen der Programmierspannung

Letzte Änderung:

Beschreibung

Setzt die Programmierspannung an einem angegebenen Kontakt des J1962-Steckers (OBD-II). Wird zur Programmierung von Steuergeräten verwendet, die während der Umprogrammierung eine erhöhte Spannung an einem bestimmten Pin benötigen.

long PassThruSetProgrammingVoltage(unsigned long DeviceID, unsigned long PinNumber, unsigned long Voltage)
Wichtig: Die Funktion wird vom ScanDoc-Adapter nicht unterstützt. Der Aufruf liefert stets ERR_NOT_SUPPORTED zurück.

Parameter

Rückgabe-Fehlercodes

Code Beschreibung Mögliche Ursachen und Lösungen
STATUS_NOERROR Funktion erfolgreich ausgeführt
ERR_DEVICE_NOT_CONNECTED Keine Verbindung zum Adapter
  • Adapter ist ausgeschaltet oder außer Reichweite
  • Lösung: Prüfen Sie die Stromversorgung des Adapters sowie die Netzwerk-/BLE-Verbindung
ERR_NOT_SUPPORTED Funktion wird nicht unterstützt
  • Der ScanDoc-Adapter unterstützt keinen Programmierausgang
  • Lösung: Verwenden Sie einen Adapter mit Hardware-Unterstützung für die Programmierspannung
ERR_INVALID_DEVICE_ID Ungültige Gerätekennung
  • DeviceID wurde nicht über PassThruOpen bezogen oder das Gerät wurde geschlossen
  • Lösung: Stellen Sie sicher, dass PassThruOpen erfolgreich ausgeführt wurde und das Gerät nicht geschlossen ist
ERR_PIN_INVALID Unzulässige Pin-Nummer
  • Es wurde eine nicht unterstützte Kontaktnummer angegeben oder der Pin wird bereits verwendet
  • Lösung: Verwenden Sie zulässige Pin-Nummern (0, 6, 11-15)
ERR_FAILED Nicht näher bestimmter Fehler
  • Interner Fehler der Bibliothek oder des Adapters
  • Lösung: Rufen Sie PassThruGetLastError() für eine Beschreibung auf

Beispiele

C/C++

#include "j2534_dll.hpp"

unsigned long DeviceID;  // Von PassThruOpen erhalten
long ret;

// 12 V an Pin 15 setzen
ret = PassThruSetProgrammingVoltage(DeviceID, 15, 12000);
if (ret == STATUS_NOERROR)
{
    printf("Programmierspannung gesetzt: 12V an Pin 15\n");
}
else if (ret == ERR_NOT_SUPPORTED)
{
    printf("Adapter unterstützt keine Programmierspannung\n");
}
else
{
    char error[256];
    PassThruGetLastError(error);
    printf("Fehler: %s\n", error);
}

// Programmierspannung abschalten
ret = PassThruSetProgrammingVoltage(DeviceID, 15, VOLTAGE_OFF);

Kotlin (Android)

// deviceID wurde zuvor von ptOpen erhalten
val result = j2534.ptSetProgrammingVoltage(deviceID, pin = 15, voltage = 12000u)
when (result.status) {
    STATUS_NOERROR -> Log.i("J2534", "Programmierspannung gesetzt")
    ERR_NOT_SUPPORTED -> Log.w("J2534", "Funktion wird vom Adapter nicht unterstützt")
    else -> Log.e("J2534", "Fehler: ${result.errorDescription}")
}

// Spannung abschalten
j2534.ptSetProgrammingVoltage(deviceID, pin = 15, voltage = VOLTAGE_OFF)

Python

from ctypes import *

VOLTAGE_OFF = 0xFFFFFFFF
SHORT_TO_GROUND = 0xFFFFFFFE

# 12 V an Pin 15 setzen
ret = j2534.PassThruSetProgrammingVoltage(device_id, 15, 12000)
if ret == 0:  # STATUS_NOERROR
    print("Programmierspannung gesetzt: 12V")
elif ret == 0x01:  # ERR_NOT_SUPPORTED
    print("Adapter unterstützt keine Programmierspannung")
else:
    error = create_string_buffer(256)
    j2534.PassThruGetLastError(error)
    print(f"Fehler: {error.value.decode()}")

# Spannung abschalten
j2534.PassThruSetProgrammingVoltage(device_id, 15, VOLTAGE_OFF)

C#

const uint VOLTAGE_OFF = 0xFFFFFFFF;
const uint SHORT_TO_GROUND = 0xFFFFFFFE;

// 12 V an Pin 15 setzen
int ret = J2534.PassThruSetProgrammingVoltage(deviceId, 15, 12000);
if (ret == 0)
{
    Console.WriteLine("Programmierspannung gesetzt: 12V");
}
else if (ret == 0x01) // ERR_NOT_SUPPORTED
{
    Console.WriteLine("Adapter unterstützt keine Programmierspannung");
}
else
{
    var error = new StringBuilder(256);
    J2534.PassThruGetLastError(error);
    Console.WriteLine($"Fehler: {error}");
}

// Spannung abschalten
J2534.PassThruSetProgrammingVoltage(deviceId, 15, VOLTAGE_OFF);