diff --git a/src/decoderPropre.py b/src/decoderPropre.py index 7efeb5a..a76cdae 100644 --- a/src/decoderPropre.py +++ b/src/decoderPropre.py @@ -12,74 +12,71 @@ def decode(pkt): global miniL modpkt = pkt["ModbusADU"] print(modpkt.payload.name) - for i in modpkt.payload.fields: - typeCall = "" - print(i,modpkt.payload.getfieldval(i),type(modpkt.payload.get_field(i))) + typeCall = "" - if "Multiple" in modpkt.payload.name: - typeCall += "m" - else: - typeCall += "s" + if "Multiple" in modpkt.payload.name: + typeCall += "m" + else: + typeCall += "s" - if "Coil" in modpkt.payload.name: - typeCall += "C" - else: - typeCall += "R" - miniL[0] = typeCall + if "Coil" in modpkt.payload.name: + typeCall += "C" + else: + typeCall += "R" + miniL[0] = typeCall - if "Read" in modpkt.payload.name: - typeCall += "r" - if "Response" in modpkt.payload.name: - byteCount = modpkt.payload.getfieldval("byteCount") - print(byteCount,"cc") + if "Read" in modpkt.payload.name: + typeCall += "r" + if "Response" in modpkt.payload.name: + byteCount = modpkt.payload.getfieldval("byteCount") + 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 = [] 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] + 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]) - 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] + bigL.append([miniL[0],cs[j],addr+j]) # changer 5 pour mettre l'adresse 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 = [] - 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) + if "C" in typeCall: + addr = modpkt.payload.getfieldval("outputAddr") + outputValue = modpkt.payload.getfieldval("outputValue") else: - if "C" in typeCall: - addr = modpkt.payload.getfieldval("outputAddr") - outputValue = modpkt.payload.getfieldval("outputValue") - else: - addr = modpkt.payload.getfieldval("registerAddr") - outputValue = modpkt.payload.getfieldval("registerValue") - bigL.append([miniL[0],outputValue,addr]) + addr = modpkt.payload.getfieldval("registerAddr") + outputValue = modpkt.payload.getfieldval("registerValue") + bigL.append([miniL[0],outputValue,addr]) - bigL.append(miniL) #print(bigL) bigL = [] miniL = [0,0,0]