Profilo di Pietro Bruno Lancerotto

Nome Pietro Bruno Lancerotto
Indirizzo email bruno@lancerotto.it
AvatarAvatar utenti
Messaggi59
Firma forum
--
Bruno L.
  • Re: Modifiche a programma perfettamente funzionante
    Forum >> Principianti
    Trovo il discorso intrigante ma c'è "da studiare",
    Il fatto che trovi intrigante la cosa :) :) mi da da ben sperare

    Ti trasmetto quanto ho attualmente via mail

    Se qualcuno è interessato basta dirlo

    Alla fine ho modificato "l'opera iniziale" per produrre 3 log in base al tipo di messaggio

    E' chiaro che tutta la sfilza di caratteri per inizializzare la risposta non serve più ma intendo sostituirla con l'invio di un banale messaggio tipo " Nodo XYZ attivato" dove XYZ sarà il nome della postazione

    Anche in fase di ricezione ho fatto un accrocchio abbastanza complesso per ridurre e compattare il messaggio in arrivo

    Anche il controllo dei caratteri eccedenti il 127 non sarà necessario; qui passano anche i caratteri accentati ;)




    Alla prossima
    --
    Bruno L.
  • Re: Modifiche a programma perfettamente funzionante
    Forum >> Principianti
    Guarda che ne forum passano parecchi che ne sanno più di me ... p.e. sulle interfacce seriali (argomento che non ho mai trattato)
    ... comunque, per quel che posso, dispostissimo a dare una mano, certo, dovrò farmi idea della libreria che utilizzi e delle finalità che Vuoi raggiungere )quali sono?) e non è detto che riesca ad esserTi di aiuto
    Voglio recuperare completamente l'interfaccia realizzata nel 2024 per colloquiare con il programma SuondModem

    La differenza fondamentale è che qui si usa un "semplice" collegamento seriale che comunque avviene via USB

    Si deve aggiungere la libreria Meshtastic a Python

    Ovviamente la libreria consente di fare un sacco di cose che a me non interessano, in primis la configurazione del nodo ( si chiamano così )

    Se è connesso alla porta USB un solo nodo, alla connessione verrà automaticamente riconosciuto senza specificare il numero di COM che all'inserimento del cavo viene creata

    Giusto per informazione ci si può collegare via B.T. e via TCP/IP ( molto bene da APP su telefono, male da PC usando MeshTastic Web )




    A me interessa esclusivamente la seriale per motivi di prticità e certezza del collegamento fra PC e nodo

    Ecco quindi che dei tantissimi comandi presenti in libreria a me interessano solo

    sendText

    pub.subscribe(onReceive, 'meshtastic.receive')



    Il programmino nel mio primo messaggio funziona perfettamente

    Ecco che ho cercato di "isolare" ( # import socket ) il socket nella speranza di capirci qualcosa dagli errori che si sarebbero generati

    Chiaramente se sono qua vuol dire che ci ho capito poco o niente ;( :(

    Se richiesto posto lo ZIP con tutta la cartella dei sorgenti ed il link a libreria e docs

    Intanto grazie di avere risposto


    --- Ultima modifica di Pietro Bruno Lancerotto in data 2026-01-04 17:17:23 ---
    --
    Bruno L.
  • Modifiche a programma perfettamente funzionante
    Forum >> Principianti
    Ovviamente mi rivolgo a nuzzopippo

    La discussione originale è questa http://www.python.it/forum/thread/6944/utilizzo-socket/?page=6#post-7078




    Dovrei " estirpare" tutta la parte socket per passare ad una comunicazione seriale che alla fine è questa




    ============

    import meshtastic.serial_interface
    from pubsub import pub

    interface = meshtastic.serial_interface.SerialInterface()

    def onReceive(packet, interface):
    if 'channel' in packet:
    # print(f" Channel: {packet['channel']}")
    k = packet['channel']
    if k == 1: # Si estrae il messaggio solo se il Canale usato è il n.1
    try:
    if 'decoded' in packet and packet['decoded']['portnum'] == 'TEXT_MESSAGE_APP':
    message_bytes = packet['decoded']['payload']
    message_string = message_bytes.decode('utf-8')
    print(f"{message_string} \n> ", end="", flush=True)
    except KeyError as e:
    print(f"Error processing packet: {e}")

    pub.subscribe(onReceive, 'meshtastic.receive')

    def send_message(message):
    interface.sendText(message,channelIndex=1) #Il messaggio viene inviato sul Canale n.1

    while True:
    text = input("> ")
    send_message(text)




    =================




    Mentre con il sistema che colloquiava col suondmodem serviva formattare le stringhe ed inizializzare la comunicazione per poter ricevere delle risposte, qui la cosa è più "banale" :( ;(

    Sto provando ad isolare la parte socket ma non ci capisco una mazza

    Casomai posto uno ZIP di quanto esistente


    Ringrazio anticipatamente se nuzzo pippo vorra darmi una mano




    PS: Stamattina non riuscivo più ad entrare nel forum :confused:


    --- Ultima modifica di Pietro Bruno Lancerotto in data 2026-01-04 12:04:45 ---
    --
    Bruno L.
  • Re: Variazione sintassi da vers. 3.4 a 3.12
    Forum >> Principianti
    msg = ['OUTCOME', ' Connessione con {0} stabilita'.format(self.svr)]
    
    Funziona ;)

    Devo dire che questo lo posso capire

    I := per risparmare una riga e qualche carattere proprio no

    Rende meno immediata la comprensione del codice

    Poi uno lo sa e va bene così




    Ti ringrazio per il supporto


    --
    Bruno L.
  • Re: Variazione sintassi da vers. 3.4 a 3.12
    Forum >> Principianti
    Pensando di aver capito che il tutto era dovuto ad una fantasiosa invenzione per risparmiare qualche carattere ho modificato così

    #if (instance := getattr(cls, inst_field, None)) is None:
    instance = getattr(cls, inst_field, None)
    if instance is None:




    Naturalmente oltrepassa il punto ma si ferma qui

    msg = ['OUTCOME', f' Connessione con {self.svr} stabilita']

    con questa indicazione

    msg = ['OUTCOME', f' Connessione con {self.svr} stabilita']
    ^
    SyntaxError: invalid syntax




    Il cappelletto è in corrispondenza dell'apice a fine parola " stabilita "

    Se avete qualche idea perchè non credo di riuscire ad arrivarci goooglando




    --
    Bruno L.
  • Re: Variazione sintassi da vers. 3.4 a 3.12
    Forum >> Principianti
    Hai valutato se non ti convenga avviare il pc con un dongle linux lite aggiornato?

    No, e neanche ci penso

    Se funziona così bene altrimenti non è di vitale importanza

    --
    Bruno L.
  • Re: Variazione sintassi da vers. 3.4 a 3.12
    Forum >> Principianti
    Pietro Bruno Lancerotto said @ 2024-08-30 15:36:58:
    Quel := che funziona su 3.12 non funziona su 3.4

    Walrus Operator.

    Trovato qui : https://www.programmareinpython.it/blog/python-38-le-novita-piu-importanti/




    Quindi io dovrei rappezzare a ritroso questo pezzo

    if (instance := getattr(cls, inst_field, None)) is None:
                instance = orig_new(cls)
                if hasattr(cls, "__init__"):
                    cls.__init__(instance, *args, **kwargs)
                    delattr(cls, "__init__")
                setattr(cls, inst_field, instance)
            return instance





    Poi speriamo che sia l'unico inghippo

    [NdCM: modificata formattazione]


    --- Ultima modifica di ㎝ in data 2024-08-30 17:13:23 ---
    --
    Bruno L.
  • Variazione sintassi da vers. 3.4 a 3.12
    Forum >> Principianti
    Dopo il lungo lavoro di cui a : http://www.python.it/forum/thread/6944/utilizzo-socket/?page=6#post-7078

    perfettamente funzionante grazie all'aiuto ricevuto mi ritrovo con un problema di portatilità.




    Per comodità di distribuzione il programma è stato "compilato" ed installato su vari PC

    Il programma è un terminale da usare in abbinamento ad una RiceTrasmittente e quindi si usano i portatili in avanzo visto le situazioni abbastanza precarie dei servizi.

    Sui vari 64 bit nessun problema.

    Poi su un vecchio W7 32 bit ho optato per l'installazione di PYTHON ed utilizzo dei sorgenti direttamente; anche qui tutto OK

    Ma siccome l'appetito vien mangiando ho riesumato un PC W-XP e vi ho installato PYTHON 3.4 che dalle mie ricerche sembra essere l'ultima versione utilizzabile su tale S.O.




    Problema che appare mandando in esecuzione il tutto tramite un file Batch


    ==================

    C:\PACKET\TERM_RCS\SOURCES>python.exe C:\PACKET\TERM_RCS\SOURCES\pkt_gui_rcs_support.py
    Traceback (most recent call last):
    File "C:\PACKET\TERM_RCS\SOURCES\pkt_gui_rcs_support.py", line 14, in <module> import pkt_gui_rcs
    File "C:\PACKET\TERM_RCS\SOURCES\pkt_gui_rcs.py", line 14, in <module>from utility import Delivery
    File "C:\PACKET\TERM_RCS\SOURCES\utility.py", line 14

    if (instance := getattr(cls, inst_field, None)) is None:
    ^
    SyntaxError: invalid syntax

    ============================

    Quel := che funziona su 3.12 non funziona su 3.4

    Nelle mie ricerche mi pare di aver capito che la sintassi sia camabiata dalla 3.8

    Non ho però trovato una tabellina comparativa per poter fare almeno una prova




    Grazie anticipato per ogni tipo di aiuto

    --
    Bruno L.
  • Re: Utilizzo Socket
    Forum >> Principianti
    Funziona :) ;(


        def update_controls(self):
            self.POSTAZIONE.configure(text=pkt_gui_rcs_support.PST)


    La riga che riporto l'ho tolta perchè si riferisce al TITOLO della finestrella

    Quello presente nel file ini riguarda questo


    self.TEntryPostazione.configure(textvariable=self.PostName)

    il PST contiene il nome della postazione

    Avevo accrocchiato qualcosa inizialmente perchè al boot risultava vuoto e quindi dava errore nella generazione iniziale del file di log
    Successivamente lo ho inserito nel file .ini cosi almeno un nome c'è.
    Poi, anche se non c'è motivo, può essere modificato.

    Funziona così come è per cui rimane così come è.

    Quello che viene inserito in quella casella oltre ad apparire in tutti i messaggi è anche il nome del file di LOG

    Anche stavolta ti "pago" con un grazie :) ;)











    --- Ultima modifica di Pietro Bruno Lancerotto in data 2024-05-13 17:56:12 ---
    --
    Bruno L.
  • Re: Utilizzo Socket
    Forum >> Principianti
    In ogni caso, il problema posto è stato superato?

    No

    Nel file pkt_gui_rcs.py ci sono queste 2 righe
    textB1 = "Bottone 1"
    textB2 = "Bottone 2"

    Se le commento, alla riga

    self.RadiobuttonNP.configure(text=textB1) #Radio Button n.1

    anziche mostrare il testo letto dal file ini da errore







    --- Ultima modifica di Pietro Bruno Lancerotto in data 2024-05-13 15:08:06 ---
    --
    Bruno L.