Profilo di Pietro Bruno Lancerotto

Nome Pietro Bruno Lancerotto
Indirizzo email bruno@lancerotto.it
AvatarAvatar utenti
Messaggi51
Firma forum
--
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.
  • Re: Utilizzo Socket
    Forum >> Principianti
    Evitiamo per il momento di affrontare l'intera strutturazione (3 file? prima erano 2)

    Il terzo è utility.py che hai realizzato Tu :)

    C'è poi il quarto, e cioè Terminale.ini

    Credo sia opportuno aggiornare il tutto allo status attuale per cui allego lo zip con tutto il malloppo

    Nel file pkt_gui_rcs.py ho aggiunto questo per far funzionare il tutto


    code <
    textB1 = "Bottone 1"
    textB2 = "Bottone 2" >


    Se commentati si verifica errore perchè non "traslati" da ... support.py




    Ho spostato la lettura del Terminale.ini s initialize come suggerito ma ho dovuto inserirci anche alcune parti che nel frattempo avevo aggiunto

    per esempio :

    code <



    global serverName

    global serverPort

    >

    Anche se non è presente il suondmodem il terminale si apre comunque riportando una serie di errori relativi al mancato collegamento




    Ci leggiamo








    --
    Bruno L.
  • Re: Utilizzo Socket
    Forum >> Principianti
    Sinceramente, non ho ben capito cosa hai fatto, la natura del "problema" e "quando" il problema si presenta, leggere il traceback non sarebbe male.
    Se tento di eseguirla da IDE si ferma indicando un errore che casomai posso copiare enpostare




    Comunque, riepiloghiamo il certo : hai bisogno di cambiare il testo del controllo ptk_gui_rcs.PAGINA.RadiobuttonNP
    Dubbio corollario, essendo il target un radiobutton, che senso ha
    cambiare il testo? è il "value" ciò che entrerebbe realmente in gioco

    Esattamente per la riga sopra

    Il motivo sulla domanda 2 è che se viene usato il terminale nella gara Maratona vanno bene i testi così come sono

    Se usiamo il sistema in un altro tipo di gara ( SoapBox mi pare si chiamino; carretti lanciati in discesa ) i due testi andrebbero sostituiti con parole Partenza e Transito

    Per poter cambiare il testo di un controllo, l'istanza alla classe PAGINA deve già essere inizializzata, così come devono già essere già caricate in memoria le variabili contenenti il testo, indipendentemente da dove siano collocate, domanda : la variazione del testo deve avvenire a oggetti già completamente inizializzati od in fase di caricamento?

    Poi, c'è da considerare il contesto in cui avviene la modifica, è in ptk_gui_rcs o in ptk_gui_rcs_support?


    Comincio dalla fine : i due testi da cambiare in ptk_gui_rcs, dove sono elencati tutti gli elementi dell'interfaccia

    Le variabili sono inizializzate in fase si "boot" quando viene letto il file .ini




    #**************************************

    import tkinter as tk
    import tkinter.ttk as ttk
    from tkinter.constants import *
    import os.path

    import pkt_gui_rcs

    from datetime import datetime
    #import binascii

    from utility import Chatterbox

    terminale = None

    def main(*args):
    '''Main entry point for the application.'''
    global root
    root = tk.Tk()
    # Creates a toplevel widget.
    global _top1, _w1
    _top1 = root
    _w1 = pkt_gui_rcs.PAGINA(_top1)

    global PST
    global textB1
    global textB2
    global mexB1
    global mexB2


    f = open("Terminale.ini", "r")
    serverName = (f.readline()).strip("\n")
    serverPort = int(f.readline())
    PST = (f.readline()).strip("\n")
    textB1 = (f.readline()).strip("\n")
    textB2 = (f.readline()).strip("\n")
    mexB1 = (f.readline()).strip("\n")
    mexB2 = (f.readline()).strip("\n")
    f.close()

    serverName = serverName.replace(" ", "")
    PST = PST.replace(" ", "")
    _w1.PostName.set(PST)

    global oggi
    Calendario()
    Apertura = ("Avvio applicazione il " + oggi + "\n")
    Salvataggio(Apertura)
    _w1.TESTO_RX.add_text(Apertura)

    global terminale
    # create TCP socket
    terminale = Chatterbox(serverName, serverPort)
    # connect socket to remote server at (serverName, serverPort)

    terminale.connect()




    #*****************************

    E qui termina la parte iniziale




    Se pensi sia più semplice allego i 3 file + il file.ini




    Grazie


    --
    Bruno L.
  • Re: Utilizzo Socket
    Forum >> Principianti
    Se mi è riuscito di essere utile ne sono contento ... comunque, testatelo bene il Vostro terminale.

    Ciao :)

    Eccomi ancora qui

    In fase di test è emersa una richiesta circa la possibilità di modificare il messaggio dei Radiobutton con una variabile

    Come scritto in precedenza ho aggiunto un file di configurazione che viene letto nella parte iniziale di pkt_gui_rcs_support

    Ho aggiunto 4 righe che servivano ed ovviamente i testi utilizzati in pkt_gui_rcs_support funzionano

    Le variabili sono global

    Come previsto i 2 testi col nome dei bottoni in pkt_gui_rcs non funzionano

    Il compilatore da errore e siferma




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

    self.RadiobuttonNP.configure(text='NON Partiti')




    La prima riga è come "dovrebbe" essere nel mio immaginario

    La seconda è quella originale




    Ovviamente sono a chiederTi in che modo traslare le due variabili textB1 e textB2 da un modulo all'altro




    I ringraziamenti sono scontati :) :)


    --
    Bruno L.
  • Re: Utilizzo Socket
    Forum >> Principianti
    Veniamo ora ai punti di cui Ti volevo avvertire :

    1 - in utility.Delivery vi sono diverse istruzioni "raise RuntimeError ...." esse stanno li perché dovrebbero essere intercettate e gestite, altrimenti emetteranno un traceback in una eventuale shell di avvio, ovviamente quando lo ho manipolato non ho "gonfiato" il codice con la gestione degli errori, pensaci ... al minimo trasforma i "raise" in "return"
    Torno a farmi vivo; sono stato un po' occupato ( visite, esami, i 75 si fanno sentire :()

    La parte 2 ho sistemato tutto come suggerito

    Per quanto riguarda la parte 1 che riporto nel quoting, sono andato a leggere un po'.

    In primis ho cercato una traduzione del vocabolo; trovato una mezza enciclopedia sui suoi possibili significati in lingua italiana. :)

    Decidero se tenere aperta la console; sicuramente lo farò in fase iniziale giusto per vedere se ogni tanto appare qualcosa.





    Ho fatto alcune aggiunte.

    f = open("Terminale.ini", "r")
    serverName = (f.readline()).strip("\n")
    serverPort = int(f.readline())
    f.close()
    Ho aggiunto un file minimalista per poter cambiare IP; mi serve provare da remoto perchè non sempre ho qualcuno che mi faccia da sponda e quindi metto in funzione il tutto sull'IP settato nel router come da mie messaggi precedenti.




    Ho poi intercettato i caratteri "strani" che inceppavano il sistema.

    # Sostituzione caratteri accentati
    TDT = TDT.replace("ò", "o'")
    TDT = TDT.replace("à", "a'")
    TDT = TDT.replace("ù", "u'")
    TDT = TDT.replace("ì", "i'")
    characters = "éè"
    for x in range(2):
    TDT = TDT.replace(charactersx, "e'")
    characters = "£ç°§"
    for x in range(4):
    TDT = TDT.replace(charactersx, "_")





    Perché l'abitudine è di scrivere in una certa maniera ed anche se ti dicono di evitare poi scappa lo stesso




    Il sistema funziona; abbiamo provato per un paio d'ore in condizioni reali e la "banda bassotti" si è dichiarata più che contenta ed invia i ringraziamenti per il fondamentale aiuto




    Comunque, thread e socket sono bestioline complicate ed approfondite, così come la strutturazione del codice ... hai ricevuto la mia email di risposta? Se ritieni posso inviarti una maccheronica traduzione (fatta da me e non pubblicabile) di un tutorial sui thread che ho trovato "buono" come spunto per approfondire l'argomento.


    Si si ricevuta

    Ti rispondo di là




    Grazie ancora




    --
    Bruno L.
  • Re: Utilizzo Socket
    Forum >> Principianti
    L'intestazione con il FROM TO LEN a livello pratico delle nostre necessità non riveste alcuna importanza
    ... C'è quel "nostre" che mi preoccupa un po' ...
    Il nostre era riferito alla mia combriccola che utilizzerà il Terminale ;) :)

    La finestra rispetterà i ritorni a capo solo (e soltanto) se riceverà una stringa codificata quale utf-8, i singoli caratteri"\" e "n", passati come tali non verranno interpretati come new-line ... in pratica, dovresti decodificare l'insieme di bytes da passare alla finestra come 'utf-8'

    msg = ['RECEIVED', data[86:-3].decode(encoding="UTF-8", errors="ignore")]

    Questo è quello che c'è scritto

    Veniamo ora ai punti di cui Ti volevo avvertire :

    Dammi il tempo di leggere e tentare di capire

    Comunque lo ho fatto "girare" per più di 10 ore continuative in ricezione sull'APRS

    E lì viene giù di tutto in quanto a stramberie di caratteri; è lì che mi sono accorto di qualche problema ed ho aggiunto l'ignore di cui sopra



    Ciao e grazie




    PS : :) :) :) IO ho problema dei ritorni a capo; l'editor di questo Forum ne aggiunge a manetta







    --- Ultima modifica di Pietro Bruno Lancerotto in data 2024-02-28 16:25:15 ---
    --
    Bruno L.
  • Re: Utilizzo Socket
    Forum >> Principianti
    Ho cercato di spiegarne il funzionamento in questo post, su di un sito di cui sono l'howner, c'è anche il codice di una finestra di test e potrebbe mostrarTi altri tipi di approccio.
    Se mi dirai che ne pensi sarà gradito.
    Cosa pensare ??

    Eccezzionale !!!

    Ho fatto qualche adattamento

    Abbassato il bordo superiore perché la finestra andava sotto la Label "RICEZIONE"

    Poi leggendo l'ottimo post di cui sopra, ho messo il wrap = word

    Di conseguenza ho commentato le tre righe della scrolbar orizzontale

    Almeno quello che arriva si vede per intero senza doversi spostare in orizzontale

    E poi messo 100 nel numero di righe





    Poi, cosa che non c'entra nulla con Python, ho eliminato molti più caratteri

    L'intestazione con il FROM TO LEN a livello pratico delle nostre necessità non riveste alcuna importanza

    Poi
    leggendo le API consigliate dall'amico Andrej ho modificato il FROM con
    il Testo + chr(0) *10 e "tagliando" poi tutto a 10 caratteri

    In
    realtà il FROM ha i caratteri del nominativo ma potrebbe avere un -1 o
    altro in aggiunta per indicare se sei fisso, in movimento o altro

    Se
    il nominativo fosse 5 caratteri verrebbero aggiunti NUL nei "buchi"
    vuoti. Non sono 6 + 4 NULL ma bensi 10 con i NULL nelle posizioni
    mancanti


    Teniamo presente che il COSO è per i radioamatori




    Tornando a noi volevo chiederTi qualcosa sui ritorni a capo

    Ne file di LOG che io salvo ci sono per cui in quel text nel obs ci sono


    self.TESTO_RX.add_text(txt + '\n')

    in coda ho aggiunto


    pkt_gui_rcs_support.Salvataggio(txt + "\n")





    E' possibile che quella finestra Rispetti i ritorni a capo ??

    Ovviamente sarà come scrivi nell'articolo che le righe impostate a 100 saranno in realtà di più




    Mi defisci collega, troppo onore. Mi reputo uno smanettone ignorante.



    Ciao e grazie ancora
    --
    Bruno L.
  • Re: Utilizzo Socket
    Forum >> Principianti
    Ho cercato di spiegarne il funzionamento in questo post, su di un sito di cui sono l'howner, c'è anche il codice di una finestra di test e potrebbe mostrarTi altri tipi di approccio.
    Se mi dirai che ne pensi sarà gradito.
    Cosa pensare ??

    Eccezzionale !!!




    Ho fatto qualche adattamento

    Abbassato il bordo superiore perché la finestra andava sotto la Label "RICEZIONE"

    Poi leggendo l'ottimo post di cui sopra, ho messo il wrap = word

    Di conseguenza ho commentato le tre righe della scrolbar orizzontale

    Almeno quello che arriva si vede per intero senza doversi spostare in orizzontale

    E poi messo 100 nel numero di righe





    Poi, cosa che non c'entra nulla con Python, ho eliminato molti più caratteri

    L'intestazione con il FROM TO LEN a livello pratico delle nostre necessità non riveste alcuna importanza

    Poi
    leggendo le API consigliate dall'amico Andrej ho modificato il FROM con
    il Testo + chr(0) *10 e "tagliando" poi tutto a 10 caratteri

    In
    realtà il FROM ha i caratteri del nominativo ma potrebbe avere un -1 o
    altro in aggiunta per indicare se sei fisso, in movimento o altro

    Se
    il nominativo fosse 5 caratteri verrebbero aggiunti NUL nei "buchi"
    vuoti. Non sono 6 + 4 NULL ma bensi 10 con i NULL nelle posizioni
    mancanti


    Teniamo presente che il COSO è per i radioamatori




    Tornando a noi volevo chiederTi qualcosa sui ritorni a capo

    Ne file di LOG che io salvo ci sono per cui in quel text nel obs ci sono


    self.TESTO_RX.add_text(txt + '\n')

    in coda ho aggiunto


    pkt_gui_rcs_support.Salvataggio(txt + "\n")





    E' possibile che quella finestra Rispetti i ritorni a capo ??

    Ovviamente sarà come scrivi nell'articolo che le righe impostate a 100 saranno in realtà di più




    Mi defisci collega, troppo onore. Mi reputo uno smanettone ignorante.



    Ciao e grazie ancora
    --
    Bruno L.
  • Re: Utilizzo Socket
    Forum >> Principianti
    Ho cercato di spiegarne il funzionamento in questo post, su di un sito di cui sono l'howner, c'è anche il codice di una finestra di test e potrebbe mostrarTi altri tipi di approccio.
    Se mi dirai che ne pensi sarà gradito.
    Cosa pensare ??

    Eccezzionale !!!




    Ho fatto qualche adattamento

    Abbassato il bordo superiore perché la finestra andava sotto la Label "RICEZIONE"

    Poi leggendo l'ottimo post di cui sopra, ho messo il wrap = word

    Di conseguenza ho commentato le tre righe della scrolbar orizzontale

    Almeno quello che arriva si vede per intero senza doversi spostare in orizzontale

    E poi messo 100 nel numero di righe





    Poi, cosa che non c'entra nulla con Python, ho eliminato molti più caratteri

    L'intestazione con il FROM TO LEN a livello pratico delle nostre necessità non riveste alcuna importanza

    Poi leggendo le API consigliate dall'amico Andrej ho modificato il FROM con il Testo + chr(0) *10 e "tagliando" poi tutto a 10 caratteri

    In realtà il FROM ha i caratteri del nominativo ma potrebbe avere un -1 o altro in aggiunta per indicare se sei fisso, in movimento o altro

    Se il nominativo fosse 5 caratteri verrebbero aggiunti NUL nei "buchi" vuoti. Non sono 6 + 4 NULL ma bensi 10 con i NULL nelle posizioni mancanti


    Teniamo presente che il COSO è per i radioamatori




    Tornando a noi volevo chiederTi qualcosa sui ritorni a capo

    Ne file di LOG che io salvo ci sono per cui in quel text nel obs ci sono




    self.TESTO_RX.add_text(txt + '\n')

    in coda ho aggiunto



    pkt_gui_rcs_support.Salvataggio(txt + "\n")





    E' possibile che quella finestra Rispetti i ritorni a capo ??

    Ovviamente sarà come scrivi nell'articolo che le righe impostate a 100 saranno in realtà di più




    Mi defisci collega, troppo onore. Mi reputo uno smanettone ignorante.




    Ciao e grazie ancora







    --
    Bruno L.