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
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值