我正在使用 INET 和 MQTT-SN 实现在 OMNeT++ 中开发一个项目,我在 .ned 文件中遇到了意外的语法错误,但我似乎无法解决该错误。
在 WifiNetwork.ned 文件中,我定义了一个网络,其中多个发布者和订阅者连接到一个接入点,并且所有内容在语法上似乎都是正确的:
package mqttsn.simulations;
import inet.node.wireless.AccessPoint;
import inet.physicallayer.wireless.ieee80211.packetlevel.Ieee80211RadioMedium;
import inet.networklayer.configurator.ipv4.Ipv4NetworkConfigurator;
import inet.node.inet.WirelessHost;
network WifiNetwork
{
@display("bgb=713,388");
submodules:
accessPoint: AccessPoint {
@display("p=415,35");
}
radioMedium: Ieee80211RadioMedium {
@display("p=60,42");
}
configurator: Ipv4NetworkConfigurator {
@display("p=60,110");
}
//Define 10 publishers
publisher[10]: WirelessHost {
@display("p=207,140");
}
//Define 10 subscribers
subscriber[10]: WirelessHost {
@display("p=633,90");
}
//Define the server (MQTT or CoAP broker)
server: WirelessHost {
@display("p=415,190");
}
connections:
//Connect publishers and subscribers to the access point
for i=0..9 {
publisher[i].wlan[0].upperLayerOut <--> accessPoint.radioIn[0];
subscriber[i].wlan[0].upperLayerOut <--> accessPoint.radioIn[0];
}
//Connect access point to the server (the MQTT broker)
accessPoint.radioIn[0] <--> server.wlan[0].upperLayerIn;
}
但是,OMNeT++ 在第 52 行报告以下错误:
syntax error, unexpected '.', expecting RIGHTARROW or LEFTARROW or DBLARROW
publisher[i].wlan[0].upperLayerOut <--> accessPoint.radioIn[0];
我尝试过的:
附加信息—— OMNeT++ 版本:6.0 & INET 版本:4.5
是否有其他人遇到过这样的问题:尽管进行了干净的构建,但错误标记仍然存在?是否与 IDE 或某些错误配置有关?
如有任何帮助或建议,我们将不胜感激!
我的猜测是
upperLayerOut
是一个 output
门,而 radioIn
是一个 input
你不能用 two way 连接来连接输入和输出门。这意味着输入门也可以向输出门发送消息。这显然是错误的。
用途:
publisher[i].wlan[0].upperLayerOut --> accessPoint.radioIn[0];