You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CAPL脚本发送CAN消息:如何过滤TxRq仅保留Tx方向?

解决CAPL脚本过滤TxRq仅保留Tx消息的问题

核心原因

TxRq是发送请求(应用层触发但未被CAN控制器实际处理的消息),Tx是实际完成发送的消息。直接设置CANID.dir=1无效的原因是:这两类消息的dir属性都标记为发送方向,无法通过该属性区分二者。

正确过滤方法

方法1:通过消息type属性判断

CAPL中消息的type属性可区分消息类型:

  • mtTx:实际发送的Tx消息
  • mtTxRequest:TxRq发送请求消息

在消息处理逻辑中添加判断:

on message * {
  // 仅处理实际发送的Tx消息,过滤TxRq
  if(this.type == mtTx) {
    // 编写你的消息发送/处理逻辑
    output(this);
  }
}

方法2:使用isTxRequest()专用函数

CAPL内置函数可直接判断是否为发送请求:

on message * {
  if(!isTxRequest(this)) {
    // 仅保留非TxRq的实际Tx消息
    output(this);
  }
}

注意事项

  • 不要试图通过修改CANID.dir过滤,因为TxRq和Tx的方向属性均为发送,无法以此区分
  • 若从数据库或日志读取消息,需确保解析时正确识别消息类型,而非仅依赖方向标记

内容的提问来源于stack exchange,提问作者Prashant Thakre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 16:07:49