Omnet++ 哪里是声明全局变量并定期检查的最佳位置?

Omnet++ 哪里是声明全局变量并定期检查的最佳位置?,omnet++,inet,Omnet++,Inet,我的模拟包括一个移动节点和三个接入点,我想根据每个接入点检测移动节点的方向, 我知道怎么计算,但是移动节点的位置会随着时间而改变 我想在1秒前保存移动节点的最后一个位置..或者每隔一秒定期检查一次,问题是在哪里放置保证每秒执行的代码的最佳位置。。。。 第二件事是哪个源代码文件更适合声明全局变量? 非常感谢您的帮助……假设您正在使用INET(您的问题中未提及): 存储/计算节点速度的最佳位置就在移动模块内部,移动模块已经有一个定期更新计时器,但是为什么您需要计算它呢?IMobility接口已经有了

我的模拟包括一个移动节点和三个接入点,我想根据每个接入点检测移动节点的方向, 我知道怎么计算,但是移动节点的位置会随着时间而改变

我想在1秒前保存移动节点的最后一个位置..或者每隔一秒定期检查一次,问题是在哪里放置保证每秒执行的代码的最佳位置。。。。 第二件事是哪个源代码文件更适合声明全局变量?
非常感谢您的帮助……

假设您正在使用INET(您的问题中未提及):


存储/计算节点速度的最佳位置就在移动模块内部,移动模块已经有一个定期更新计时器,但是为什么您需要计算它呢?
IMobility
接口已经有了
getCurrentAngularPosition()
getCurrentSpeed()
,因此您可以随时获得移动方向和节点速度的绝对值,就像您可以获得节点的位置一样。您应该检查您实际使用的移动模型是否实现了这些功能。如果没有,您应该在那里实现它们。

您可以利用每个节点调度到自身的定期消息调度。将其放入
initialize()
的最后阶段即可

您可以按照以下方式进行操作:

void initialize(int stage)
{
    if (stage == 3)
    {
        cMessage *pMsg = new cMessage("myPeriodicMessage");
        scheduleAt(simTime()+1.0, pMsg);
    }
}
然后在
handleMessage()
中:

void handleMessage(cMessage *msg)
{
    if (msg->isSelfMessage())
    {
       /* if you have different selfMessages, compare them like below, or use different message kinds and checks accordingly */
       if (strcmp("myPeriodicMessage", msg->getName())==0)
       {
            doPeriodicTaks();
            scheduleAt(simTime()+1.0, pMsg);
       }
    }
}

请注意,通过这种方式,您将分别获得每个节点所需的信息。如果你想以集中的方式发布,你应该遵循@Rudi的建议。

至于你的第二个问题:你应该分别发布不相关的问题。谢谢你的解释。。。你指出了我想要的一件很棒的事情,实际上,是的,我必须检查已经有周期计时器的移动模块,但我的问题是我不想要速度,我想随时根据每个接入点检测移动节点的方向移动,因此getCurrentAngularPosition()返回什么?我不知道返回的值是根据什么来的?!我试图在一段时间之前捕获节点的最后一个位置并获得当前位置,然后通过这两点和第三个点(AP),我可以根据该AP获得节点的方向。由于我在线,我将尝试回答您的问题@鲁迪,如果我有误导性的地方,请纠正我
getCurrentAngularPosition()
返回基于全局坐标系的节点移动角度,该坐标系假定放置在场景中的所有位置。如果只查找移动方向,则来自
getCurrentAngularPosition()
的信息就足够了。但同样,这取决于您的用例。例如,如果有两个节点在同一方向上平行移动,您可能无法区分这两个节点。正如您前面提到的(getCurrentAngularPosition()返回基于全局坐标系的节点移动角度,假设该坐标系在整个场景中都放置),因为我认为它对我没有用处,因为我有一个移动节点和三个接入点,所以我想分别根据每个AP知道MN的移动方向,例如,MN可能对AP1的直接性较低,但在移动时对AP2的直接性较高。。。因此,我认为如果有一种方法可以使用getCurrentAngularPosition()来实现这一点,那就很好了,否则我必须自己尝试。关于…你做了一件伟大的事情,伙计,通过你的示例代码,我完全理解了周期性消息是如何工作的,在我无法估计它们如何工作之前,顺便说一句,我必须检查鲁迪的建议,可能对我来说更容易,如果不是,我会按照你的方式,它可以解决我的问题。。再次感谢您的及时回复。。。