2015-09-30 81 views
1

我想在Veins中實現UDPBASICBurst應用程序,但我遇到了問題。我做了如下,但我不知道我是否正確。任何人都可以談論這件事嗎?我想在基於Omnet的Veins中使用UDPBasicApp,但我無法實現

import inet.applications.udpapp.UDPBasicBurst; 
import org.car2x.veins.base.modules.*; 
import org.car2x.veins.modules.nic.Nic80211p; 

....

udpBasicBurst: UDPBasicBurst { 
     @display("p=130,56"); 
    }`enter code here` 
connections allowunconnected: 
    nic.upperLayerOut --> appl.lowerLayerIn; 
    nic.upperLayerIn <-- appl.lowerLayerOut; 
    nic.upperControlOut --> appl.lowerControlIn; 
    nic.upperControlIn <-- appl.lowerControlOut; 

    veinsradioIn --> nic.radioIn; 


    udpBasicBurst.udpOut --> nic.upperControlIn; 
    udpBasicBurst.udpIn <-- nic.upperControlOut; 
} 

import inet.applications.udpapp.UDPBasicBurst; 
import org.car2x.veins.base.modules.*; 
import org.car2x.veins.modules.nic.Nic80211p; 

module Car 
{ 
    parameters: 
     string applType; //type of the application layer 
     string nicType = default("Nic80211p"); // type of network interface card 
     string veinsmobilityType; //type of the mobility module 
    gates: 
    input veinsradioIn; // gate for sendDirect 
submodules: 
    appl: <applType> like org.car2x.veins.base.modules.IBaseApplLayer { 
     parameters: 
      @display("p=60,50"); 
    } 

    nic: <nicType> like org.car2x.veins.modules.nic.INic80211p { 
     parameters: 
      @display("p=60,166"); 
    } 

    veinsmobility: <veinsmobilityType> like org.car2x.veins.base.modules.IMobility { 
     parameters: 
      @display("p=130,172;i=block/cogwheel"); 
    } 

    udpBasicBurst: UDPBasicBurst { 
     @display("p=130,56"); 
    } 
connections allowunconnected: 
    nic.upperLayerOut --> appl.lowerLayerIn; 
    nic.upperLayerIn <-- appl.lowerLayerOut; 
    nic.upperControlOut --> appl.lowerControlIn; 
    nic.upperControlIn <-- appl.lowerControlOut; 

    veinsradioIn --> nic.radioIn; 


    udpBasicBurst.udpOut --> nic.upperControlIn; 
    udpBasicBurst.udpIn <-- nic.upperControlOut; 
} 

回答

0

您在同一模塊中導入這兩種inet.applications.udpapp.UDPBasicBurstorg.car2x.veins.modules.nic.Nic80211p。這可能不會按照您希望的方式工作:

簡而言之,inet.*名稱空間中的模塊只希望與此名稱空間中的其他模塊交換消息。直到幷包括靜脈4a2,org.car2x.veins.*名稱空間中的模塊也是如此 - 有一個值得注意的例外:靜脈4a2 TraCIScenarioManager將檢查實例化模塊是否使用inet 2.3.0 TraCIMobility模塊作爲其移動性子模塊。如果是這樣,它會相應地移動模塊。

這允許您在INET 2.3.0主機中使用靜脈4a2移動性。

+0

親愛的克里斯托夫;我使用各自版本的SUMO和Omnet4.6在INET 2.3.0主機上重新安裝了Veins 4a2 mobility。我現在在應用程序和nic模塊之間使用了UDP和網絡層模塊..:它運行了一段時間,但是當它嘗試發送UDP消息時,出現錯誤:模塊(UDP)EScenario.node [0]出錯。事件#369處的udp(id = 9),t = 35.704289728099:check_and_cast():無法強制轉換類型爲'UDPSendCommand *'的NULL指針。 如何解決此問題... – Zecar

相關問題