zoukankan      html  css  js  c++  java
  • ns2的wirelessphy中添加定时器

    基本可以照搬里面的Sleep模式去写

    我要写的是充电模型

    1.定时器类重载

    在wireless-phy.h中添加

    class Charge_Timer : public TimerHandler {
    public:
        Charge_Timer(WirelessPhy *a) : TimerHandler() { a_ = a; }
    protected:
        virtual void expire(Event *e);
        WirelessPhy *a_;
    };

    2.定时器执行

    在wireless-phy.cc中添加

    void Charge_Timer::expire(Event *) {
        a_->UpdateChargeEnergy();
    }

    进而我的UpdateChargeEnergy()为:

    void WirelessPhy::UpdateChargeEnergy()
    {
        if(em() == NULL) {
            return;
        }
        em()->ChargeEnergy(0.5, 0.5);
        charge_timer_.resched(0.5);
    }
    其中的ChargeEnergy就是在energy-model中定义的,

    void EnergyModel::ChargeEnergy(double periodtime,double P_charge)
    {
        double dEng = periodtime * P_charge;
        if(energy_+dEng >= maxenergy_)
            energy_ = maxenergy_;
        else
            energy_ += dEng;
    }

    3.定时器声明:

    wireless-phy.h中class WirelessPhy : public Phy 中定义

    friend class Charge_Timer;

    Charge_Timer charge_timer_;

    4.定时器开启

    我在wireless-phy.cc里 WirelessPhy的构造函数中添加了

    charge_timer_.resched(0.5);

    最初的构造也要有WirelessPhy::WirelessPhy() : Phy(), sleep_timer_(this), charge_timer_(this),status_(IDLE)

    总之,一切都与sleep_timer相仿。

    OK ,定时器完成!

  • 相关阅读:
    设置div内的内容不能被选中
    js中!和!!的区别及用法
    echars自定义提示框位置
    数组排序
    查询一个表的不同数据,显示到一个表
    document.body
    设置fixed,横向滚动条失效
    scrollTop
    JS 数组
    JS 数学函数
  • 原文地址:https://www.cnblogs.com/noanswer/p/3086844.html
Copyright © 2011-2022 走看看