Zigbee组网过程中地址分配的计算python

import math

#网络最大深度L
L=3
#父节点拥有的孩子节点的最大数目C
C=7
#父亲节点拥有的孩子节点中路由器的最大数目R
R=4

#计算间隔值
def Cskip(d):
    skip = 0
    if R==1:
        skip = 1 + C * (L - d - 1)
    else:
        fenzi = 1 + C - R - C * (R**(L-d-1))
        fenmu = 1 - R
        skip = fenzi / fenmu
    skip = int(skip)
    print("skip is " + str(skip))
    return int(skip)

#计算非终端节点地址
def solve1(parentadress,d,num):
    s = (num-1) * Cskip(d)
    return  int(parentadress + 1 + s)

#计算终端节点地址
def solve2(parentadress,d,num):
    return int(parentadress + Cskip(d) * R + num - R)

#计算(父节点地址,父节点深度,父节点的第num个节点)
def solve(parentadress,d,num):
    s = 0
    if num > R:#是终端节点
        s = solve2(parentadress,d,num)
    else:
        s = solve1(parentadress,d,num)
    s = int(s)
    return hex(s)

#只需要调用solve函数即可

OK

原文地址:https://www.cnblogs.com/savennist/p/13741050.html