QualNet外部接口

本文档详细介绍了QualNet外部接口的注册、回调函数、自定义接口步骤以及实用函数的使用,包括接口注册函数EXTERNAL_RegisterExternalInterface和EXTERNAL_RegisterFunction,回调函数如Initialize、Receive和Finalize,以及各种实用函数如EXTERNAL_SetTimeManagementRealTime和EXTERNAL_ForwardData。通过这些接口,开发者可以实现QualNet与其他程序的通信,进行数据注入和交互操作。
摘要由CSDN通过智能技术生成

当需要QualNet与外部程序通信时,可以使用外部接口。QualNet自带的GUI接口用于可视化仿真,SOCKET接口用于传输数据,还提供了interfacetutorial接口演示接口的设计与实现。以下介绍外部接口的注册与使用,并提供自定义接口步骤供参考。

1 接口注册

1.1 注册函数

 ~/main/external.cpp中定义函数EXTERNAL_UserFunctionRegistration,由内核在仿真开始时调用。此函数用于注册外部接口(通过调用EXTERNAL_RegisterExternalInterface函数)和由接口实现的回调函数(通过调用EXTERNAL_RegisterFunction函数)。

(1)EXTERNAL_RegisterExternalInterface:此函数向QualNet注册一个新的外部接口,并创建必要的数据结构。此函数必须在需要外部接口作为参数的任何其他函数之前调用。

EXTERNAL_Interface* EXTERNAL_RegisterExternalInterface(
    EXTERNAL_InterfaceList *list,
    char *name,
    EXTERNAL_PerformanceParameters params,
    ExternalInterfaceType type);

参数:

list:外部接口列表,一般用&node->partitionData->interfaceList。

name:外部接口名称,随意起。

params:性能参数。当前不支持任何性能参数,因此传递EXTERNAL_NONE。

type:外部接口类型,在external.h中由enum ExternalInterfaceType列出

返回值:指向新注册外部接口的指针。

(2)EXTERNAL_RegisterFunction:该函数为外部接口注册回调函数。

void EXTERNAL_RegisterFunction(
    EXTERNAL_Interface *iface,
    EXTERNAL_FunctionType type,
    EXTERNAL_Function function);

参数:

type:函数类型,在external.h中由enum EXTERNAL_FunctionType列出。

function:调用函数的指针,注册时该参数前用(EXTERNAL_Function)强制类型转换。

一旦注册了接口及其回调函数,QualNet就开始使用该接口。QualNet根据需要调用已注册的回调函数。

1.2 回调函数

接口开发者通过提供执行某些任务的回调函数来确定外部接口的行为。接口开发者可以有八个回调函数(在external.h中由enum ExternalInterfaceType列出)可选。外部接口可能不需要所有八个回调函数,在这种情况下,接口只需要实现和注册它需要的函数。QualNet按需要调用注册的回调函数。

回调函数有:

(1)Initialize:这是在创建节点和协议之前调用的初始化函数。此函数用于设置数据结构,并初始化仿真所需的服务。

void InterfaceInitializeFunction(
    EXTERNAL_Interface *iface,
    NodeInput *nodeInput)

参数:

iface:接口结构。

nodeInput:节点输入数据结构,包含配置信息。

(2)InitializeNodes:这是在创建节点和协议之后调用的初始化函数。此函数将在仿真开始之前立即调用。这个函数用于建立独立的单个节点或协议,以便与外部接口交互操作。此外,接口可能初始化用于时间管理的数据(如在外部时间和仿真时间之间建立关联)。

void InterfaceInitializeNodesFunction(
     EXTERNAL_Interface *iface, 
     NodeInput *nodeInput)

(3)Time:调用此函数来查询外部接口的时间。

clocktype InterfaceTimeFunction(EXTERNAL_Interface *iface)

返回值:外部实体的当前时间(以纳秒为单位)。0对应于仿真的开始。

(4)SimulationHorizon:这个函数由内核调用,以查询外部接口的仿真视界。仿真视界的值控制着仿真时钟的前进。接口增加视界,表示仿真时钟可以向前移动。内核执行小于并朝向视界的事件。一旦仿真到达视界,执行一个循环,在该循环中它调用此函数和接收函数(下面解释),直到视界再次被推进以允许执行更多的事件。

void InterfaceSimul
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值