<div dir="ltr"><div dir="ltr">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<div><br></div><div><div>def reg_to_string(reg):</div><div><span style="white-space:pre">        </span>s = ''</div><div><span style="white-space:pre">        </span>for ele in reg:</div><div><span style="white-space:pre">               </span>if ele:</div><div><span style="white-space:pre">                       </span>b = format(ele, '016b')  # converto il registro da decimale in binario</div><div><span style="white-space:pre">                       </span>ch = chr(int(b[:8], 2))  # prendo i primi 8 bit e li converto in char</div><div><span style="white-space:pre">                        </span>if ch.isalnum():  # controllo che sia un numero o una lettera</div><div><span style="white-space:pre">                                </span>s += ch  # lo aggiungo alla stringa</div><div><span style="white-space:pre">                  </span>ch = chr(int(b[8:], 2))  # faccio la stessa cosa con gli altri 8 bit</div><div><span style="white-space:pre">                 </span>if ch.isalnum():</div><div><span style="white-space:pre">                              </span>s += ch</div><div><span style="white-space:pre">       </span>return s  # ritorno la stringa</div></div><div><br></div><div>Grazie per eventuali correzioni o miglioramenti</div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Il giorno gio 17 feb 2022 alle ore 06:18 Vinny Mautone <<a href="mailto:vinny74man@gmail.com">vinny74man@gmail.com</a>> ha scritto:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr">Ok scusate questa la lista che leggo dai 6 rgistri<div>[21070, 12601, 12340, 12593, 12593, 13312]<br></div><div>e indicano il serial number del dispositivo che è questo</div><div>RN190411114<br></div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Il giorno gio 17 feb 2022 alle ore 00:27 Attilio Menegon <<a href="mailto:attilio.menegon@tecnoemmesnc.it" target="_blank">attilio.menegon@tecnoemmesnc.it</a>> ha scritto:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div lang="IT"><div><p class="MsoNormal">Ciao <u></u><u></u></p><p class="MsoNormal">Mi sembra di capire  che acquisisci i n. 6 registri  e ci fai l’esempio: <u></u><u></u></p><p class="MsoNormal">----------------------------------------<u></u><u></u></p><p class="MsoNormal">quando li vada a leggere il dato restituito è in questo modo<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">[3785, 25684, 15478, 4568, 598, 12589] -> numeri di esempio<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">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.<u></u><u></u></p><p class="MsoNormal"><span>---------------------------------------<u></u><u></u></span></p><p class="MsoNormal"><span>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……<u></u><u></u></span></p><p class="MsoNormal"><span>Viceversa è un po’ dura capire cosa non riesci a decifrare.  <u></u><u></u></span></p><p class="MsoNormal"><span><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10pt;font-family:Arial,sans-serif">Attilio Menegon<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10pt;font-family:Arial,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p><div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(225,225,225);padding:3pt 0cm 0cm"><p class="MsoNormal"><b>Da:</b> Python <<a href="mailto:python-bounces@lists.python.it" target="_blank">python-bounces@lists.python.it</a>> <b>Per conto di </b>Vinny Mautone<br><b>Inviato:</b> mercoledì 16 febbraio 2022 17:33<br><b>A:</b> Discussioni generali sul linguaggio Python <<a href="mailto:python@lists.python.it" target="_blank">python@lists.python.it</a>><br><b>Oggetto:</b> Re: [Python] Registri modbus<u></u><u></u></p></div><p class="MsoNormal"><u></u> <u></u></p><div><p class="MsoNormal">Il mio problema non è leggere i registri quelli li leggo tranquillamente, è che dopo non riesco a renderli comprensibili.<u></u><u></u></p><div><p class="MsoNormal">Mi spiego meglio ho un dato che occupa 6 registri e quando li vado a leggere il dato restituito è in questo modo<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">[3785, 25684, 15478, 4568, 598, 12589] -> numeri di esempio<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">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.<u></u><u></u></p></div></div><p class="MsoNormal"><u></u> <u></u></p><div><div><p class="MsoNormal">Il giorno mer 16 feb 2022 alle ore 14:22 Pietro Convalle <<a href="mailto:pietroconvalle@python.it" target="_blank">pietroconvalle@python.it</a>> ha scritto:<u></u><u></u></p></div><blockquote style="border-top:none;border-right:none;border-bottom:none;border-left:1pt solid rgb(204,204,204);padding:0cm 0cm 0cm 6pt;margin-left:4.8pt;margin-right:0cm"><p class="MsoNormal">Ciao, non ho mai usato quel modulo ma qua vedo un esempio che sembra<br>proprio quello che stai cercando di fare tu:<br><a href="https://pypi.org/project/pyModbusTCP/" target="_blank">https://pypi.org/project/pyModbusTCP/</a> (Read 2x 16 bits registers at<br>modbus address 0)<br><br>On Wed, 2022-02-16 at 06:53 +0100, Vinny Mautone wrote:<br>> Ciao a tutti sto provando a leggere dei dati da un apparecchiatura<br>> con la quale comunico tramite il protocollo modbus, sto usando il<br>> modulo pymodbusTCP, ho alcuni dati come ad esempio la versione del<br>> firmware che occupano sei registri da 16 bit, riesco a leggerli e con<br>> la funzione di lettura del modulo ottengo una lista di 6 elementi da<br>> 16bit, solo che non riesco a scomporre e a recuperare l'informazione<br>> in modo leggibile, dal manuale leggo che il dato è formato da 11 byte<br>> in caratteri ascii, quindo ho capito che devo scomporre ogni elemento<br>> della lista nei due byte che lo compongono e poi riassemblare il<br>> tutto.<br>> <br>> Il mio problema e che non riesco a capire come fare.<br>> <br>> Grazie<br>> _______________________________________________<br>> Python mailing list<br>> <a href="mailto:Python@lists.python.it" target="_blank">Python@lists.python.it</a><br>> <a href="https://lists.python.it/mailman/listinfo/python" target="_blank">https://lists.python.it/mailman/listinfo/python</a><br><br>_______________________________________________<br>Python mailing list<br><a href="mailto:Python@lists.python.it" target="_blank">Python@lists.python.it</a><br><a href="https://lists.python.it/mailman/listinfo/python" target="_blank">https://lists.python.it/mailman/listinfo/python</a><u></u><u></u></p></blockquote></div></div></div>_______________________________________________<br>
Python mailing list<br>
<a href="mailto:Python@lists.python.it" target="_blank">Python@lists.python.it</a><br>
<a href="https://lists.python.it/mailman/listinfo/python" rel="noreferrer" target="_blank">https://lists.python.it/mailman/listinfo/python</a><br>
</blockquote></div>
</blockquote></div>