关闭逻辑通信通道
最后更新:
该函数在指定的 pass-thru 设备上终止与车辆的逻辑连接。
执行成功时函数返回 STATUS_NOERROR,逻辑通信通道进入断开状态。
long PassThruLogicalDisconnect(unsigned long ChannelID)
断开后,逻辑通道处于以下状态:
输入参数。调用
PassThruLogicalConnect() 时获得的逻辑通信通道标识符。
| 代码 | 说明 |
|---|---|
| STATUS_NOERROR | 函数执行成功 |
| ERR_CONCURRENT_API_CALL | 在上一次调用完成之前调用了 J2534 API 函数 |
| ERR_DEVICE_NOT_OPEN | 未成功调用 PassThruOpen() |
| ERR_INVALID_CHANNEL_ID | ChannelID 取值无效 |
| ERR_DEVICE_NOT_CONNECTED | 与 pass-thru 设备通信出错。设备已断开连接。 |
| ERR_NOT_SUPPORTED | DLL 不支持此函数 |
| ERR_FAILED | 未定义的错误。使用 PassThruGetLastError() 获取详细说明。 |
#include "j2534_dll.hpp"
unsigned long logicalChannelID = ...; // 从 PassThruLogicalConnect 获取的 ID
// 关闭逻辑通道
long ret = PassThruLogicalDisconnect(logicalChannelID);
if (ret == STATUS_NOERROR) {
printf("逻辑通道已关闭\n");
} else {
char error[256];
PassThruGetLastError(error);
printf("错误: %s\n", error);
}
from ctypes import *
j2534 = cdll.LoadLibrary("libj2534_v05_00.dylib")
logical_channel_id = c_ulong(...) # 从 PassThruLogicalConnect 获取的 ID
# 关闭逻辑通道
ret = j2534.PassThruLogicalDisconnect(logical_channel_id)
if ret == 0: # STATUS_NOERROR
print("逻辑通道已关闭")
else:
error = create_string_buffer(256)
j2534.PassThruGetLastError(error)
print(f"错误: {error.value.decode()}")
PassThruLogicalConnect() - 创建逻辑通道PassThruDisconnect() - 关闭物理连接PassThruClose() - 关闭设备