diff --git a/Pymodbus/decoder3.py b/Pymodbus/decoder3.py index 48aa0bf..bf871e7 100644 --- a/Pymodbus/decoder3.py +++ b/Pymodbus/decoder3.py @@ -31,12 +31,28 @@ def decode(pkt): miniL[1] = i[i.find("=")+2:] #print(addr) elif "coilStatus" in i or "registerVal=" in i or "outputsValue" in i: - miniL[2] = i[i.find("[")+1:i.rfind("]")] + value = i[i.find("[")+1:i.rfind("]")] + value = value.split(", ") + miniL[2] = value #print("value= ",value," addr= ",addr) elif "outputValue" in i or "quantityOutput" in i or "registerValue" in i: miniL[2] = i[i.find("=")+2:] if miniL.count(0)==0: - print(miniL) + if(type(miniL[2])==list): + if miniL[0]=="r": + for i in range(len(miniL[2])): + bigL.append([miniL[0],int(miniL[1],16)+i,miniL[2][i]]) + else: + for i in range(len(miniL[2])): + byte=8*[0] + convert=bin(int(miniL[2][i])) + for j in range(len(convert)-2): + byte[j]=convert[-(j+1)] + for j in range(8): + bigL.append([miniL[0],int(miniL[1],16)+i*8+j,byte[j]]) + else: + bigL.append(miniL) + print(bigL) miniL = [0,0,0] miniL = [0,0,0] scapy.sniff(iface="lo", prn=decode)