Studiando un pò sono riuscito a scrivere questa funzione che fa il suo dovere, ma volevo capire se era la strada giusta o si potesse velocizzare un po, comunque questa è la funzione
def reg_to_string(reg): s = '' for ele in reg: if ele: b = format(ele, '016b') # converto il registro da decimale in binario ch = chr(int(b[:8], 2)) # prendo i primi 8 bit e li converto in char if ch.isalnum(): # controllo che sia un numero o una lettera s += ch # lo aggiungo alla stringa ch = chr(int(b[8:], 2)) # faccio la stessa cosa con gli altri 8 bit if ch.isalnum(): s += ch return s # ritorno la stringa Grazie per eventuali correzioni o miglioramenti Il giorno gio 17 feb 2022 alle ore 06:18 Vinny Mautone <vinny74...@gmail.com> ha scritto: > Ok scusate questa la lista che leggo dai 6 rgistri > [21070, 12601, 12340, 12593, 12593, 13312] > e indicano il serial number del dispositivo che è questo > RN190411114 > > Il giorno gio 17 feb 2022 alle ore 00:27 Attilio Menegon < > attilio.mene...@tecnoemmesnc.it> ha scritto: > >> Ciao >> >> Mi sembra di capire che acquisisci i n. 6 registri e ci fai l’esempio: >> >> ---------------------------------------- >> >> quando li vada a leggere il dato restituito è in questo modo >> >> >> >> [3785, 25684, 15478, 4568, 598, 12589] -> numeri di esempio >> >> >> >> ogni elemento della lista è un registro da 16bit questo in effetti è una >> stringa di 12 caratteri, quello che non riesco a fare è rendere questa >> lista la stringa equivalente. >> >> --------------------------------------- >> >> Se tu posti la lista che realmente acquisì e la stringa di 12 >> caratteristi che ti aspetti di ottenere dalla trasformazione, penso che >> qualcuno ti potrebbe aiutare nella comprensione e trasformazione…… >> >> Viceversa è un po’ dura capire cosa non riesci a decifrare. >> >> >> >> Attilio Menegon >> >> >> >> *Da:* Python <python-boun...@lists.python.it> *Per conto di *Vinny >> Mautone >> *Inviato:* mercoledì 16 febbraio 2022 17:33 >> *A:* Discussioni generali sul linguaggio Python <python@lists.python.it> >> *Oggetto:* Re: [Python] Registri modbus >> >> >> >> Il mio problema non è leggere i registri quelli li leggo tranquillamente, >> è che dopo non riesco a renderli comprensibili. >> >> Mi spiego meglio ho un dato che occupa 6 registri e quando li vado a >> leggere il dato restituito è in questo modo >> >> >> >> [3785, 25684, 15478, 4568, 598, 12589] -> numeri di esempio >> >> >> >> ogni elemento della lista è un registro da 16bit questo in effetti è una >> stringa di 12 caratteri, quello che non riesco a fare è rendere questa >> lista la stringa equivalente. >> >> >> >> Il giorno mer 16 feb 2022 alle ore 14:22 Pietro Convalle < >> pietroconva...@python.it> ha scritto: >> >> Ciao, non ho mai usato quel modulo ma qua vedo un esempio che sembra >> proprio quello che stai cercando di fare tu: >> https://pypi.org/project/pyModbusTCP/ (Read 2x 16 bits registers at >> modbus address 0) >> >> On Wed, 2022-02-16 at 06:53 +0100, Vinny Mautone wrote: >> > Ciao a tutti sto provando a leggere dei dati da un apparecchiatura >> > con la quale comunico tramite il protocollo modbus, sto usando il >> > modulo pymodbusTCP, ho alcuni dati come ad esempio la versione del >> > firmware che occupano sei registri da 16 bit, riesco a leggerli e con >> > la funzione di lettura del modulo ottengo una lista di 6 elementi da >> > 16bit, solo che non riesco a scomporre e a recuperare l'informazione >> > in modo leggibile, dal manuale leggo che il dato è formato da 11 byte >> > in caratteri ascii, quindo ho capito che devo scomporre ogni elemento >> > della lista nei due byte che lo compongono e poi riassemblare il >> > tutto. >> > >> > Il mio problema e che non riesco a capire come fare. >> > >> > Grazie >> > _______________________________________________ >> > Python mailing list >> > Python@lists.python.it >> > https://lists.python.it/mailman/listinfo/python >> >> _______________________________________________ >> Python mailing list >> Python@lists.python.it >> https://lists.python.it/mailman/listinfo/python >> >> _______________________________________________ >> Python mailing list >> Python@lists.python.it >> https://lists.python.it/mailman/listinfo/python >> >
_______________________________________________ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python