我有一个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
答案 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