ZigBee协议栈架构详解与常量解读

需积分: 12 11 下载量 89 浏览量 更新于2024-08-09 收藏 2.43MB PDF 举报
本文档主要介绍了常量和NIB属性在ZigBee协议中的角色,结合ISO/IEC 1345-2015《信息安全事件与应急响应管理规范》的背景,特别关注于ZigBee网络通信中的关键参数和控制结构。ZigBee是一种低功耗、低速率的无线通信技术,适用于物联网(IoT)中的传感器和设备通信。 首先,协议中的“命令标识符子域”用于标识更新命令的类型,包括PAN标识符更新和网络更新,分别对应不同的字段,如16位PAN标识符或32位有效信道信息。这些常量反映了设备在网络中的行为和功能,如设备是否支持协调器角色(nwkcCoordinatorCapable),默认安全级别(nwkcDefaultSecurityLevel)等。 其次,“EPID域”用于存储64位的EPID,用于唯一标识网络,确保网络更新的准确性。更新信息域则根据不同类型的更新命令提供相应的具体信息,如新PAN标识符或者网络更新时使用的信道列表。 “NIB属性”或Network Information Base 属性,涉及网络层的配置参数,如最大深度、头部开销、版本号等,这些参数对网络性能和稳定性至关重要。例如,nwkcMaxDepth限制了设备间的逻辑距离,nwkcRouteDiscoveryTime规定了路由发现过程的持续时间,而nwkcSecurityLevel定义了数据传输的安全级别。 此外,文档还提到端点和簇的概念,ZigBee设备通过端点来实现应用对象之间的通信,簇是数据共享和特定应用服务的组织单元。端点0负责设备管理和配置,端点255用于广播,其他端点则根据模板定义提供特定功能。APS和NWK层的交互确保了数据的可靠传输、路由以及网络管理。 总结来说,这篇文档详细解读了ZigBee协议中的核心组成部分,特别是关于设备配置、通信策略和网络管理的常量和属性,对于理解和实施ZigBee网络的维护和优化具有重要的参考价值。

修改此代码,使其图片路径和保存路径改成LiTS2017数据集的路径为E:\LiTS2017。保存路径为E:\2D-LiTS2017,帮我创建保存图像与标签的文件夹,并且将转换好的数据保存到对应的文件夹。。import os import numpy as np import nibabel as nib import imageio import cv2 def read_niifile(niifilepath): # 读取niifile文件 img = nib.load(niifilepath) # 提取niifile文件 img_fdata = img.get_fdata(dtype='float32') return img_fdata def save_fig(niifilepath, savepath, num, name): # 保存为图片 name = name.split('-')[1] filepath_seg = niifilepath + "segmentation\\" + "segmentation-" + name filepath_vol = niifilepath + "volume\\" + "volume-" +name savepath_seg = savepath + "segmentation\\" savepath_vol = savepath + "volume\\" if not os.path.exists(savepath_seg): os.makedirs(savepath_seg) if not os.path.exists(savepath_vol): os.makedirs(savepath_vol) fdata_vol = read_niifile(filepath_vol) fdata_seg = read_niifile(filepath_seg) (x, y, z) = fdata_seg.shape total = x * y for k in range(z): silce_seg = fdata_seg[:, :, k] # 三个位置表示三个不同角度的切片 if silce_seg.max() == 0: continue else: silce_seg = (silce_seg-silce_seg.min())/(silce_seg.max() - silce_seg.min())*255 silce_seg = cv2.threshold(silce_seg, 1, 255, cv2.THRESH_BINARY)[1] if (np.sum(silce_seg == 255) / total) > 0.015: silce_vol = fdata_vol[:, :, k] silce_vol = (silce_vol - silce_vol.min()) / (silce_vol.max() - silce_vol.min()) * 255 imageio.imwrite(os.path.join(savepath_seg, '{}.png'.format(num)), silce_seg) imageio.imwrite(os.path.join(savepath_vol, '{}.png'.format(num)), silce_vol) num += 1 # 将切片信息保存为png格式 return num if __name__ == '__main__': path= 'E:\\dataset\\LiTS17\\' savepath = 'E:\\dataset\\LiTS17\\2d\\' filenames = os.listdir(path + "segmentation") num = 0 for filename in filenames: num = save_fig(path, savepath, num, filename)

2023-05-31 上传