代码之家  ›  专栏  ›  技术社区  ›  Lucas Aimaretto

使用Omnet++从同一源节点生成perodic消息

  •  0
  • Lucas Aimaretto  · 技术社区  · 7 年前

    void Txc13::initialize()
    {
        // Module 0 sends the first message
        if (getIndex() == 0) {
            // Boot the process scheduling the initial message as a self-message.
            TicTocMsg13 *msg = generateMessage();
            simtime_t delay = par("delayTime");
            scheduleAt(simTime()+delay, msg);
        }
    }
    
    void Txc13::handleMessage(cMessage *msg)
    {
        // we do some casting to access the fields inside the message
        TicTocMsg13 *ttmsg = check_and_cast<TicTocMsg13 *>(msg);
    
        if (ttmsg->getDestination() == getIndex()) {
            // Message arrived.
            bubble("ARRIVED!");
            delete ttmsg;
        }
        else {
            // We need to forward the message.
            forwardMessage(ttmsg);
        }
    }
    

    getIndex()==0 )到达预定目的地。

    现在我愿意触发几条留言 node0 过了一会儿 delay

    延迟呈指数分布 network.tic[*].delayTime = exponential(10s) .

    如何从同一节点触发多条消息?

    谢谢!

    1 回复  |  直到 7 年前
        1
  •  1
  •   Lucas Aimaretto    7 年前

    好的,我想我明白了。这是两种方法的代码。在 initialize event 我最初触发的消息 t=0 .

    void Txc13::initialize()
    {
        // Create the event object we'll use for timing -- just any ordinary message.
        event = new cMessage("event");
        // Module 0 sends the first message
        if (getIndex() == 0) {
            scheduleAt(0.0, event);
        }
    }
    

    handleMessage 方法I检查传入的消息是否为 事件 simtime_t delay = par("delayTime")

    getIndex() == 0 .

    void Txc13::handleMessage(cMessage *msg)
    {
        if (msg == event and getIndex() == 0){
            TicTocMsg13 *msg = generateMessage();
            simtime_t delay = par("delayTime");
            scheduleAt(simTime()+delay, event);
            forwardMessage(msg);
        }
        else {
            // we do some casting to access the fields inside the message
            TicTocMsg13 *ttmsg = check_and_cast<TicTocMsg13 *>(msg);
    
            if (ttmsg->getDestination() == getIndex()) {
                // Message arrived.
                //EV << "Message " << ttmsg << " arrived after " << ttmsg->getHopCount() << " hops.\n";
                bubble("ARRIVED!");
                delete ttmsg;
    
                // Generate another one.
                //EV << "Generating another message: ";
                //TicTocMsg13 *newmsg = generateMessage();
                //EV << newmsg << endl;
                //forwardMessage(newmsg);
            }
            else {
                // We need to forward the message.
                forwardMessage(ttmsg);
            }
        }
    }
    

    enter image description here