终止与适配器的通信
最后修改:
该函数终止与适配器的通信并释放所有相关资源。调用时会自动关闭所有已打开的通道(协议),因此无需对每个通道单独调用 PassThruDisconnect()。
long PassThruClose(unsigned long DeviceID)
PassThruClose()。否则,下次调用 PassThruOpen() 时将返回错误 ERR_DEVICE_IN_USE。
PassThruOpen() 函数返回。| 代码 | 说明 | 可能的原因及解决方法 |
|---|---|---|
| STATUS_NOERROR | 函数执行成功 | - |
| ERR_INVALID_DEVICE_ID | 设备标识符无效 |
|
| ERR_DEVICE_NOT_CONNECTED | 与适配器的连接已丢失 |
|
| ERR_FAILED | 内部错误 |
|
#include "j2534_dll.hpp"
unsigned long DeviceID; // 从 PassThruOpen 获取的 ID
// ... 设备操作 ...
// 关闭连接
long ret = PassThruClose(DeviceID);
if (ret != STATUS_NOERROR)
{
char error[256];
PassThruGetLastError(error);
printf("关闭失败: %s\n", error);
}
// deviceID 此前已从 ptOpen 获取
val result = j2534.ptClose(deviceID)
if (result.status == STATUS_NOERROR) {
Log.i("J2534", "与适配器的连接已关闭")
} else {
Log.e("J2534", "关闭失败: ${result.status}")
}
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()}")
// 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}");
}