Mise à jour de 'src/decoderPropre.py'

master
Eloan ANDRÉ 2 years ago
parent c7a8c0677a
commit 4ed4b61fbe

@ -12,74 +12,71 @@ def decode(pkt):
global miniL global miniL
modpkt = pkt["ModbusADU"] modpkt = pkt["ModbusADU"]
print(modpkt.payload.name) print(modpkt.payload.name)
for i in modpkt.payload.fields: typeCall = ""
typeCall = ""
print(i,modpkt.payload.getfieldval(i),type(modpkt.payload.get_field(i)))
if "Multiple" in modpkt.payload.name: if "Multiple" in modpkt.payload.name:
typeCall += "m" typeCall += "m"
else: else:
typeCall += "s" typeCall += "s"
if "Coil" in modpkt.payload.name: if "Coil" in modpkt.payload.name:
typeCall += "C" typeCall += "C"
else: else:
typeCall += "R" typeCall += "R"
miniL[0] = typeCall miniL[0] = typeCall
if "Read" in modpkt.payload.name: if "Read" in modpkt.payload.name:
typeCall += "r" typeCall += "r"
if "Response" in modpkt.payload.name: if "Response" in modpkt.payload.name:
byteCount = modpkt.payload.getfieldval("byteCount") byteCount = modpkt.payload.getfieldval("byteCount")
print(byteCount,"cc") print(byteCount,"cc")
cs = []
if "C" in typeCall:
Value = modpkt.payload.getfieldval("coilStatus")
for j in range(byteCount):
bi=str(bin(Value[j]))
bi=bi[2:]
bi=bi.rjust(8,'0')[::-1]
cs.extend(k for k in [*bi])
else:
cs = modpkt.payload.getfieldval("registerVal")
for j in range(len(cs)):
bigL.append([miniL[0],cs[j],miniL[2]+j])
miniL = [0,0,0]
print(bigL)
else:
startAddr = modpkt.payload.getfieldval("startAddr")
miniL[2] = startAddr
else:
typeCall += "w"
if "Response" in modpkt.payload.name:
pass
else:
if "m" in typeCall:
addr = modpkt.payload.getfieldval("startAddr")
#byteCount = modpkt.payload.getfieldval("quantityOutput")
outputValue = modpkt.payload.getfieldval("outputsValue")
cs = [] cs = []
if "C" in typeCall: if "C" in typeCall:
Value = modpkt.payload.getfieldval("coilStatus") for j in range(len(outputValue)):
for j in range(byteCount): bi=str(bin(outputValue[j]))
bi=str(bin(Value[j])) bi = bi[2:]
bi=bi[2:] bi = bi.rjust(8,'0')[::-1]
bi=bi.rjust(8,'0')[::-1]
cs.extend(k for k in [*bi]) cs.extend(k for k in [*bi])
else:
cs = modpkt.payload.getfieldval("registerVal")
for j in range(len(cs)): for j in range(len(cs)):
bigL.append([miniL[0],cs[j],miniL[2]+j]) bigL.append([miniL[0],cs[j],addr+j]) # changer 5 pour mettre l'adresse
miniL = [0,0,0]
print(bigL) print(bigL)
else: else:
startAddr = modpkt.payload.getfieldval("startAddr") if "C" in typeCall:
miniL[2] = startAddr addr = modpkt.payload.getfieldval("outputAddr")
else: outputValue = modpkt.payload.getfieldval("outputValue")
typeCall += "w"
if "Response" in modpkt.payload.name:
pass
else:
if "m" in typeCall:
addr = modpkt.payload.getfieldval("startAddr")
#byteCount = modpkt.payload.getfieldval("quantityOutput")
outputValue = modpkt.payload.getfieldval("outputsValue")
cs = []
if "C" in typeCall:
for j in range(len(outputValue)):
bi=str(bin(outputValue[j]))
bi = bi[2:]
bi = bi.rjust(8,'0')[::-1]
cs.extend(k for k in [*bi])
for j in range(len(cs)):
bigL.append([miniL[0],cs[j],addr+j]) # changer 5 pour mettre l'adresse
print(bigL)
else: else:
if "C" in typeCall: addr = modpkt.payload.getfieldval("registerAddr")
addr = modpkt.payload.getfieldval("outputAddr") outputValue = modpkt.payload.getfieldval("registerValue")
outputValue = modpkt.payload.getfieldval("outputValue") bigL.append([miniL[0],outputValue,addr])
else:
addr = modpkt.payload.getfieldval("registerAddr")
outputValue = modpkt.payload.getfieldval("registerValue")
bigL.append([miniL[0],outputValue,addr])
bigL.append(miniL)
#print(bigL) #print(bigL)
bigL = [] bigL = []
miniL = [0,0,0] miniL = [0,0,0]

Loading…
Cancel
Save