Il giorno gio 17 feb 2022 alle ore 17:32 Alessandro T.
ha scritto:
>
> reg = [21070, 12601, 12340, 12593, 12593, 13312]
>
> versione compatta:
> s = ''.join(c for r in reg for i in (1,0) if (c:=chr(r >> 8*i &
> 0xff)).isalnum())
oppure anche
```
>>> "".join(chr(n) for d in reg for n in divmod(d,
Scusa potresti spiegarmelo ho visto che hai usato le operazioni sui bit su
questo sono un po scarso o se puoi indicarmi una guida abbastanza semplice
per capire questo tipo di operazioni ho letto qualcosa ma mi risulta sempre
complicato
Grazie
Il Gio 17 Feb 2022, 17:32 Alessandro T. ha scritto:
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 i
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
RN19044
Il giorno gio 17 feb 2022 alle ore 00:27 Attilio Menegon <
attilio.mene...@tecnoemmesnc.it> ha scritto:
> Ciao
>
> Mi sembra di capire
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 16b
Da: Python Per conto di Vinny Mautone
Inviato: mercoledì 16 febbraio 2022 06:53
A: Discussioni generali sul linguaggio Python
Oggetto: [Python] Registri modbus
Ciao a tutti sto provando a leggere dei dati da un apparecchiatura con la quale
comunico tramite il protocollo modbus, sto usando