diff --git a/Pymodbus/decoder3bancal.py b/Pymodbus/decoder3bancal.py index 5287c86..571c681 100644 --- a/Pymodbus/decoder3bancal.py +++ b/Pymodbus/decoder3bancal.py @@ -35,13 +35,10 @@ def decode(pkt): elif "outputValue" in i or "registerValue" in i: miniL[2] = i[i.find("=")+2:] miniL[3]=1 - print("cest lui qui fait chier",miniL) elif "quantity" in i and miniL[0]=="c": miniL[3]=i[i.find("=")+2:] - print(miniL[3]) elif "quantityOutput" in i and miniL[0]=="cw": miniL[3]=i[i.find("=")+2:] - print(miniL[3]) elif "outputsValue" in i and miniL[0]=="cw": valInter=i[i.find("=")+2:] valInter2=valInter[1:-1] @@ -50,20 +47,23 @@ def decode(pkt): if(type(miniL[2])==list): if miniL[0]=="r": for i in range(len(miniL[2])): - if("0x" in miniL[2]): - miniL[2]=int(miniL[2],16) + if("0x" in miniL[2][i]): + miniL[2][i]=int(miniL[2][i],16) if("0x" in str(miniL[1])): miniL[1]=int(miniL[1],16) bigL.append([miniL[0],miniL[1]+i,miniL[2][i]]) if miniL[0]=="c": - 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): - print(miniL[1],j) - bigL.append(["c",int(str(miniL[1]),16)+i*8+j,byte[j]]) + nbOct=int(miniL[3],16)/8 + if nbOct*10%10!=0: + nbOct=int(nbOct)+1 + if nbOct==len(miniL[2]): + for i in range(int(nbOct)): + 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(["c",int(str(miniL[1]),16)+i*8+j,byte[j]]) else: if "0x" in str(miniL[1]): miniL[1]=int(miniL[1],16) @@ -71,8 +71,7 @@ def decode(pkt): miniL[2]=int(miniL[2],16) if "0x" in str(miniL[3]): miniL[3]=int(miniL[3],16) - if miniL[0]=="cw" and miniL[2]>1: - print("problem ?") + if miniL[0]=="cw" and (miniL[2]>=1 or miniL[3]>1): if miniL[3]>1: valeurs=bin(miniL[2])[::-1][:-2] while len(valeurs)=1 or miniL[3]>1): + if miniL[3]>1: + valeurs=bin(miniL[2])[::-1][:-2] + while len(valeurs)