Quantex GmbH
您的地区:欧洲

PassThruStopPeriodicMsg v4.04 v5.0

删除周期性消息

最后修改:

说明

停止周期性消息的发送并释放与之关联的资源。调用后,标识符 MsgID 将失效。

long PassThruStopPeriodicMsg(unsigned long ChannelID, unsigned long MsgID)

参数

返回的错误代码

代码 说明 可能的原因及解决方法
STATUS_NOERROR 函数执行成功
ERR_INVALID_CHANNEL_ID 通道标识符无效
  • 通道未打开或已关闭
  • 解决方法:使用由 PassThruConnect 返回的 ChannelID
ERR_DEVICE_NOT_CONNECTED 与适配器无连接
  • 适配器已关闭或连接已丢失
  • 解决方法:检查适配器的供电及网络连接
ERR_INVALID_DEVICE_ID 设备标识符无效
  • DeviceID 未通过 PassThruOpen 获取,或设备已关闭
  • 解决方法:使用由 PassThruOpen 返回的 DeviceID
ERR_INVALID_MSG_ID 消息标识符无效
  • 不存在该 MsgID 的消息,或该消息已停止
  • 解决方法:使用由 PassThruStartPeriodicMsg 返回的 MsgID
ERR_FAILED 内部错误
  • DLL 或适配器固件出错
  • 解决方法:调用 PassThruGetLastError() 以获取详细信息

示例

C/C++ 示例

#include "j2534_lib.hpp"

unsigned long ChannelID; // 通道 ID
unsigned long MsgID;     // 从 PassThruStartPeriodicMsg 获取的消息 ID
long Ret;

Ret = PassThruStopPeriodicMsg(ChannelID, MsgID);
if (Ret != STATUS_NOERROR)
{
    // 错误处理
}

Kotlin (Android) 示例

// channelID 和 msgID 已在前面获取
val result = j2534.ptStopPeriodicMsg(channelID, msgID)
if (result.status == STATUS_NOERROR) {
    // 周期性消息已成功停止
    Log.i("J2534", "已停止周期性消息,MsgID: $msgID")
} else {
    // 错误处理
    Log.e("J2534", "停止周期性消息出错: ${result.status}")
}

Python 示例

import ctypes

# 加载库
j2534 = ctypes.CDLL("libj2534_v04_04.so")  # Linux
# j2534 = ctypes.WinDLL("j2534sd_v04_04_x64.dll")  # Windows

# channel_id 和 msg_id 已在前面获取
ret = j2534.PassThruStopPeriodicMsg(channel_id, msg_id)
if ret == 0:  # STATUS_NOERROR
    print(f"周期性消息已停止,MsgID: {msg_id}")

C# 示例

using System;
using System.Runtime.InteropServices;

// channelId 和 msgId 已在前面获取
int ret = J2534.PassThruStopPeriodicMsg(channelId, msgId);
if (ret == 0) // STATUS_NOERROR
{
    Console.WriteLine($"周期性消息已停止,MsgID: {msgId}");
}