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

求可识别DOIP模块TCP FIN/RST报文的CAPL脚本

CANoe CAPL脚本实现TCP FIN/RST报文识别与来源区分

功能说明

实现在CANoe Trace窗口中识别DOIP模块相关的TCP FIN/RST报文,并通过IP或MAC地址判断报文来自测试仪还是指定ECU。

完整CAPL脚本

/* 定义指定ECU的IP和MAC地址,请根据实际场景修改 */
const char ECU_IP[] = "192.168.0.100";
const char ECU_MAC[] = "00:11:22:33:44:55";

on ethernetPacket *
{
    // 仅处理包含TCP层的以太网报文
    if(this.tcp.IsAvailable())
    {
        char srcIP[16];
        char srcMAC[18];
        int tcpFlags = this.tcp.Flags();
        
        // 获取报文的源IP地址
        this.ipv4.SourceAddress(srcIP, elCount(srcIP));
        // 获取报文的源MAC地址
        this.ethernet.SourceAddress(srcMAC, elCount(srcMAC));
        
        // 判断是否为FIN或RST标志位触发的报文
        if((tcpFlags & TCP_FLAG_FIN) != 0 || (tcpFlags & TCP_FLAG_RST) != 0)
        {
            char packetType[10];
            // 区分报文类型
            if((tcpFlags & TCP_FLAG_FIN) != 0)
                strncpy(packetType, "FIN", elCount(packetType));
            else
                strncpy(packetType, "RST", elCount(packetType));
            
            // 根据源地址判断报文来源
            if(strcmp(srcIP, ECU_IP) == 0 || strcmp(srcMAC, ECU_MAC) == 0)
            {
                write("来自指定ECU的TCP %s报文 | 源IP: %s | 源MAC: %s", packetType, srcIP, srcMAC);
            }
            else
            {
                write("来自测试仪的TCP %s报文 | 源IP: %s | 源MAC: %s", packetType, srcIP, srcMAC);
            }
            
            // 在Trace窗口中标记报文并设置区分颜色
            if(strcmp(srcIP, ECU_IP) == 0)
                this.SetColor(RED); // ECU报文标记为红色
            else
                this.SetColor(BLUE); // 测试仪报文标记为蓝色
            this.Mark();
        }
    }
}

脚本关键说明

  • 地址配置:开头的ECU_IP和ECU_MAC需替换为实际待测ECU的对应地址
  • 报文识别:通过tcp.Flags()获取TCP标志位,匹配TCP_FLAG_FIN或TCP_FLAG_RST识别目标报文
  • 来源区分:对比报文的源IP/MAC与预设的ECU地址,直接区分测试仪和ECU发出的报文
  • Trace可视化:用SetColor()和Mark()在Trace窗口中直观标记不同来源的报文,便于快速定位
  • 性能优化:移除原代码中遍历输出60字节的冗余操作,仅在识别到目标报文时输出关键信息

原代码问题修正

原代码仅实现了TCP报文字节的遍历输出,未完成FIN/RST报文识别和来源区分逻辑。新脚本直接在CANoe内部处理以太网报文,无需依赖外部抓包工具,解决了Wireshark无法捕获CANoe Trace内报文的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 06:43:18