opnet 基本核心函数 ---4 包函数集 2

3)目的

该核心函数提供了对包中字段赋值的机制。该函数只能对格式化包的字段赋值,否则将出错。对于格式化包,只需指定字段的值,而字段的类型和大小可从包格式中自动获取。

4)错误

Program Abort:分段错误(由无效包指针或fd_name参数引起)。

Program Abort:包指针为空。

Program Abort:包指针指向已销毁包。

Program Abort:包指针指向未知包。

Recoverable Error:包中无此字段。

5)相关函数

采用该核心函数的衍生函数来给包的informationstructure字段赋值。

采用op_pk_fd_set()根据数字索引为字段赋值。

采用op_pk_nfd_get()获取包中某字段的值。

采用op_pk_nfd_strip()删除某字段,并相应减小包的总大小。

 

8. op_pk_nfd_get (pkptr, fd_name, value_ptr)

此核心函数的作用是获取给定包中某字段值,将字段类型状态改为“unset”,根据名称来确定字段,其参数说明如表2-33所示。

2-32  op_pk_nfd_get()函数的参数说明

参数

类型

  

pkptr

Packet*

指向给定包的指针

fd_name

const char*

字段名

value_ptr

Vartype

指向存放指定字段地址的指针

1)返回值

Compcode­——确认操作是否成功的代码。如果发生错误,则返回OPC_COMPCODE_FAILURE

2)详解

该核心函数参数支持五种字段类型:intdoublepacketinformation structure。对于简单的字段类型,如intdouble,直接将它们的值赋给参数,并不受该函数影响。

对于packetstructure字段类型,同样将它们的值赋给参数。然而,当访问这些值时,就将其从包中删除,其状态更改为“unset”,且不可通过函数op_pk_nfd_get()来进行访问,同时包的总大小也随之减小。这种机制更严格了对被封装字段内容的所有权控制。

访问未定义的的information字段是非法的,为了避免产生错误,应将字符串“unspecified”复制到被传递值的指针中。

此外,该核心函数的安全级别MT-safe

3)目的

该核心函数提供了获取包字段值的机制,常用于将包作为用于进程间通信的数据容器。通常在包到达处理器或队列输入流时调用该函数,且必须对该包进行处理、存储并需要一个应答信息。

4)错误

Program Abort:分段错误(由无效包指针或fd_name参数引起)。

Program Abort:包指针为空。

Program Abort:包指针指向已销毁包。

Program Abort:包指针指向未知包。

5)相关函数

采用op_pk_fd_set()为包字段赋值。

采用op_pk_nfd_get_db1()通过数字索引获取包中double类型字段值。

采用op_pk_nfd_get_­int32()通过数字索引获取包中32位整型字段值。

采用op_pk_nfd_get_­int64()通过数字索引获取包中64位整型字段值。

采用op_pk_nfd_get_objid()­通过数字索引获取包中对象ID字段值。

采用op_pk_nfd_get_­pkid()通过数字索引获取包中包ID字段值。

采用op_pk_nfd_get_­pkt()通过数字索引获取包中包字段值。

采用op_pk_nfd_get_­ptr()通过数字索引获取包中指针字段值。

采用op_pk_fd_get()­通过数字索引获取格式化包或非格式化包中某字段值。

采用op_pk_nfd_type()­确定包字段的类型。

采用op_pk_nfd_size()确定包字段的大小。

采用op_pk_nfd_is_set()­确定包字段是否已设置。

 

9. op_pk_creation_time_get (pkptr)

此核心函数的作用是获取包创建时的仿真时间,其参数说明如表2-34所示。

2-34  op_pk_creation_time_get()函数的参数说明

参数

类型

  

pkptr

Packet*

指向相关包的指针

1)返回值

double——给定包创建时的仿真时间。

2)详解

新包通常通过以下三种方法进入循环:

由函数op_pk_create()op_pk_create_fmt()显式创建;

通过函数op_pk_copy()复制已存在的包;

通过核心函数自动复制在总线或无线链路上向多个目的地传输的包。

通过上述前两种方法创建的包将被赋予新的创建模块ID和创建时间。若外部进程的上下文调用第二种方法,此时的创建模块ID将设为常量OPC_OBJID_INVALID。通过第三种方法复制的包将被赋予最初传送的包的创建信息。

对包的许多操作大多都不会影响包的创建信息。正如前面提到的,在总线和无线链路上传输将创建多个包的复本,但但复本都将保留初始的创建信息。通过函数op_pk_copy()生成的复本包将产生新的创建信息。

此外,该核心函数可用于格式化包和非格式化包,其安全级别MT-safe

3)目的

该核心函数提供了确定包创建时的仿真时间的机制,主要用于计算端到端传输和处理延时。与函数op_pk_creation_mod_get()结合,op_pk_create_time_get()函数可用于比较不同源位置的端到端延时。

4)错误

Program Abort:分段错误(由无效包指针或fd_name参数引起)。

Program Abort:包指针为空。

Program Abort:包指针指向已销毁包。

Program Abort:包指针指向未知包。

5)相关函数

采用op_pk_creation_mod_get()获取包创建处的模块ID

采用op_pk_stamp()标记包的当前模块和仿真时间。

采用op_pk_stamp_mod_get()op_pk_stamp_time_get()通过包戳获取模块ID和仿真时间。

 

10. op_pk_total_size_get (pkptr)

此核心函数的作用是获取包的总大小,其参数说明如表2-35所示。

2-35  op_pk_total_size_get()函数的参数说明

参数

类型

  

pkptr

Packet*

指向相关包的指针

1)返回值

OpT­_Packet_Size——给定包的总大小(bit位数)。

2)详解

包的总大小为数据和各个附加字段大小的总和。修改数据大小、设置/复位包字段、修改包字段大小都可影响包总的大小。

此外,该核心函数可用于格式化包和非格式化包,其安全级别MT-safe

3)目的

该核心函数提供了一种确定包总的大小的机制,主要用于统计量收集、资源分配、根据大小对包进行分类。

4)错误

Program Abort:分段错误(由无效包指针或fd_name参数引起)。

Program Abort:包指针为空。

Program Abort:包指针指向已销毁包。

Program Abort:包指针指向未知包。

5)相关函数

采用op_pk_total_size_set()分配包的总大小。

采用op_pk_bulk_size_set()设置包的bulk数据大小。

采用op_pk_bulk_size_get()获取包的bulk数据大小。

采用op_pk_fd_size()修改非格式包中的字段大小。

采用op_pk_fd_strip()op_pk_nfd­_strip()删除某字段从而减小包总的大小。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值