设置编程电压
最后修改:
在指定的 J1962(OBD-II)接口引脚上设置编程电压。用于对那些在重新编程过程中需要向特定引脚施加较高电压的 ECU 进行编程。
long PassThruSetProgrammingVoltage(unsigned long DeviceID, unsigned long PinNumber, unsigned long Voltage)
| 代码 | 说明 | 可能的原因及解决方法 |
|---|---|---|
| STATUS_NOERROR | 函数执行成功 | — |
| ERR_DEVICE_NOT_CONNECTED | 未与适配器建立连接 |
|
| ERR_NOT_SUPPORTED | 不支持该函数 |
|
| ERR_INVALID_DEVICE_ID | 无效的设备标识符 |
|
| ERR_PIN_INVALID | 引脚编号无效 |
|
| ERR_FAILED | 未定义的错误 |
|
#include "j2534_dll.hpp"
unsigned long DeviceID; // 从 PassThruOpen 获取
long ret;
// 在引脚 15 上设置 12V
ret = PassThruSetProgrammingVoltage(DeviceID, 15, 12000);
if (ret == STATUS_NOERROR)
{
printf("编程电压已设置:引脚 15 上为 12V\n");
}
else if (ret == ERR_NOT_SUPPORTED)
{
printf("适配器不支持编程电压\n");
}
else
{
char error[256];
PassThruGetLastError(error);
printf("错误:%s\n", error);
}
// 关闭编程电压
ret = PassThruSetProgrammingVoltage(DeviceID, 15, VOLTAGE_OFF);
// deviceID 此前已从 ptOpen 获取
val result = j2534.ptSetProgrammingVoltage(deviceID, pin = 15, voltage = 12000u)
when (result.status) {
STATUS_NOERROR -> Log.i("J2534", "编程电压已设置")
ERR_NOT_SUPPORTED -> Log.w("J2534", "适配器不支持该函数")
else -> Log.e("J2534", "错误:${result.errorDescription}")
}
// 关闭电压
j2534.ptSetProgrammingVoltage(deviceID, pin = 15, voltage = VOLTAGE_OFF)
from ctypes import *
VOLTAGE_OFF = 0xFFFFFFFF
SHORT_TO_GROUND = 0xFFFFFFFE
# 在引脚 15 上设置 12V
ret = j2534.PassThruSetProgrammingVoltage(device_id, 15, 12000)
if ret == 0: # STATUS_NOERROR
print("编程电压已设置:12V")
elif ret == 0x01: # ERR_NOT_SUPPORTED
print("适配器不支持编程电压")
else:
error = create_string_buffer(256)
j2534.PassThruGetLastError(error)
print(f"错误:{error.value.decode()}")
# 关闭电压
j2534.PassThruSetProgrammingVoltage(device_id, 15, VOLTAGE_OFF)
const uint VOLTAGE_OFF = 0xFFFFFFFF;
const uint SHORT_TO_GROUND = 0xFFFFFFFE;
// 在引脚 15 上设置 12V
int ret = J2534.PassThruSetProgrammingVoltage(deviceId, 15, 12000);
if (ret == 0)
{
Console.WriteLine("编程电压已设置:12V");
}
else if (ret == 0x01) // ERR_NOT_SUPPORTED
{
Console.WriteLine("适配器不支持编程电压");
}
else
{
var error = new StringBuilder(256);
J2534.PassThruGetLastError(error);
Console.WriteLine($"错误:{error}");
}
// 关闭电压
J2534.PassThruSetProgrammingVoltage(deviceId, 15, VOLTAGE_OFF);