omnet++:用到的方法和語句


1、方法

方法 說明
msg->getName() 獲取發送的消息名
uniform(a,b) 生成[a,b]間的隨機實數
intuniform(a,b) 生成[a,b]間的隨機整數
exponential(n) 指數分布的隨機數
truncnormal(a,b) [a,b]間的離散正態分布隨機數 
scheduleAt(simTime()+timeout,event) 經過時間timeout之后,發送self-message event
cancelEvent(event) 與scheduleAt相反,是取消自發送的消息event
bubble("xxx") 以彈窗的形式彈出消息xxx 
cancelAndDelete(timeoutEvent) 釋放指針指向的空間
(cMessage *)msg->dup() 獲取消息msg的副本
gateSize("out") out端口的數量
getIndex() 獲取當前module在module vector中的索引
getVectorSize() 獲取當前module所在module vector的Size

send(msg,"out")

send(msg,"out",k)

從out端口發送消息msg;

從k號out端口發送消息msg

2、語句

1)創建不同名字的新消息

char msgname[20];
sprintf(msgname,"tic-%d-to-%d",src,dest);
xxxMsg * msg = new xxxMsg(msgname);

2)轉發時消息跳數+1

msg->setHopCount(msg->getHopCount()+1);

3)選擇端口進行轉發

int n = gateSize("gate");
int k = intuniform(0,n-1);
EV << "Forwarding message " << msg << " on gate[" << k << "]\n";
send(msg,"gate$o",k);

 4)在每個節點上顯示收發包的數量

void Txc14 :: refreashDisplay() const
{
    char buf[40];
    sprintf(buf,"rcvd: %ld sent: %ld",numReceived,numSent);
    getDisplayString().setTagArg("t",0,buf);
}

//在類中聲明該函數為
virtual void refreshDisplay() const override;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM