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

CAPL脚本中如何在for循环内输出动态变化的报文?

问题解决方法

你遇到的核心问题是output()函数需要接收cMessage类型的对象指针,而非报文名称的字符串——直接传字符串类型肯定会触发类型不兼容的报错。

修改后的代码

on timer F{
    for (i = 1; i <= floodingInput; i++)
    {     
        snprintf(msgIterationString, elcount(msgIterationString), "TEST_MSG_%d", i);
        write("%s", msgIterationString);
        // 根据名称查找已定义的报文对象
        cMessage *targetMsg = getSimulation()->findObject(msgIterationString);
        if (targetMsg != nullptr) {
            output(targetMsg);
        } else {
            write("Error: 未找到报文 %s", msgIterationString);
        }
    }
}

关键说明

  • getSimulation()->findObject()方法可以根据字符串名称,在整个仿真环境中查找对应的cMessage实例,找到后再传入output()就能正常执行。
  • 必须确保TEST_MSG_1、TEST_MSG_2等是已经在仿真中创建完成的cMessage对象,且名称与字符串完全匹配(包含大小写、数字后缀)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 00:34:59