从我们的太阳能系统解码寄存器数据

时间:2019-03-24 06:49:12

标签: python-2.7

我有一个Python程序正在访问我们太阳能系统上的设备之一。我可以读取应该符合SunSpec约定的寄存器。我已经能够解码大多数值,但是我仍然无法解码来自这两个寄存器的TCP_Address和网关:

TCP Address:
reg 22 value 49320 in HEX 0xc0a8
reg 23 value 64 in HEX 0x40
Gataway Address:
reg 24 value 49320 in HEX 0xc0a8
reg 25 value 1 in HEX 0x1

文档说这些值的格式是“ uint32”,我将其解释为无符号的32位整数。解码的结果应类似于192.168.0。?。

任何人都可以帮助您了解如何在Python中将以上内容转换为该格式吗?谢谢... RDK

2 个答案:

答案 0 :(得分:0)

我会说

0xc0 0xa8 (0x00) 0x01

是192.168.0.1,您的网关。似乎您只是错过了注意这两个寄存器都是16位,所以您忽略了高字节。

答案 1 :(得分:0)

这是我解决这个问题的方法:

def Decode_TCPIP(reg1,reg2):
#    print("Reg1 = "+ reg1 + " Reg2 = " + reg2)
    UpperMask = 0xff00
    LowerMask = 0x00ff
    First = (reg1 & UpperMask)/256
    Second = (reg1 & LowerMask)
    Third = (reg2 & UpperMask)/256
    Forth = (reg2 & LowerMask)

    return First, Second, Third, Forth

返回的值就是IP地址中的四位数。...RDK