Forum
>>
Principianti
>>
Utilizzo Socket
Pagina: Indietro 1 2 3 4 5 6 Avanti
Esegui il login per scrivere una risposta.
Pagina: Indietro 1 2 3 4 5 6 Avanti
Scritto da Pietro Bruno Lancerotto |
2024-02-28 16:22:52 - Re: Utilizzo Socket
|
Il nostre era riferito alla mia combriccola che utilizzerà il Terminale
msg = ['RECEIVED', data[86:-3].decode(encoding="UTF-8", errors="ignore")] Questo è quello che c'è scritto
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. |
|
Scritto da Pietro Bruno Lancerotto |
2024-03-04 16:26:19 - Re: Utilizzo Socket
|
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
Si si ricevuta Ti rispondo di là Grazie ancora --
Bruno L. |
|
Scritto da nuzzopippo |
2024-03-04 19:27:38 - Re: Utilizzo Socket
|
Le istruzioni
raise RuntimeError('Gruppo %s non registrato' % group)della classe utility.Delivery scatenano un errore di run-time, tale errore "dovrebbe" essere intercetato e gestito (ovviamente nella GUI) ma la faccenda richiederebbe tutta una serie di accorgimenti, comunque Ti suggerirei la lettura del capitolo 8 del tutorial, è un capitolo molto importante e significativo e "racconta" ciò che volevo indicare. Comunque, Ti suggerivo di sostituire tae genere di istruzione con un semplice "return" ... praticamente di non far nulla per quelle condizioni di errore. Riguardo al punto 2, per caso hai implementato "anche" quel "self.sok.settimeout(0.1)" che ho indicato come "soluzione di emergenza" per il daemon che rimarrebbe appeso? Nel caso Tu lo abbia fatto, testa bene il punto, può comportare perdita di dati, un decimo di secondo è decisamente ingeneroso, utilizzato per test, una soluzione coerente sarebbe mooolto più laboriosa. Ho sollevato l'argomento principalmente per indicarTi che c'erano altre problematiche da vedere, circa i socket, che non è agevole trattare in un post.
Se mi è riuscito di essere utile ne sono contento ... comunque, testatelo bene il Vostro terminale. Ciao Fatti non foste a viver come bruti... |
|
Scritto da Pietro Bruno Lancerotto |
2024-05-12 10:49:53 - Re: Utilizzo Socket
|
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. |
|
Scritto da nuzzopippo |
2024-05-12 11:46:18 - Re: Utilizzo Socket
|
Sinceramente, non ho ben capito cosa hai fatto, la natura del "problema" e "quando" il problema si presenta, leggere il traceback non sarebbe male.
Comunque, riepiloghiamo il certo : hai bisogno di cambiare il testo del controllo ptk_gui_rcs.PAGINA.RadiobuttonNP 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? Dubbio corollario, essendo il target un radiobutton, che senso ha cambiare il testo? è il "value" ciò che entrerebbe realmente in gioco Poi, c'è da considerare il contesto in cui avviene la modifica, è in ptk_gui_rcs o in ptk_gui_rcs_support? Chiarisci tali dettagli, poi vediamo che si fa. Ciao Fatti non foste a viver come bruti... |
|
Scritto da Pietro Bruno Lancerotto |
2024-05-12 14:13:29 - Re: Utilizzo Socket
|
Se tento di eseguirla da IDE si ferma indicando un errore che casomai posso copiare enpostare
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
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. |
|
Scritto da nuzzopippo |
2024-05-13 08:40:33 - Re: Utilizzo Socket
|
Evitiamo per il momento di affrontare l'intera strutturazione (3 file? prima erano 2)
Dal codice inserito su, vedo che nel momento in cui instanzi "_w1" le variabili globali che vorresti utilizzare nella costruzione della gui non sono neanche dichiarate ... purtroppo, la strutturazione del codice è MOLTO importante, credo sia questa l'origine del problema, prova a strutturare come lo stralcio sotto ... terminale = None root = None PST = '' textB1 = '' textB2 = '' mexB1 = '' mexB2 = '' #**************************************** def initialize(): 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() def main(*args): '''Main entry point for the application.''' initialize() global root root = tk.Tk() #root.protocol( 'WM_DELETE_WINDOW' , root.destroy) - sostituita in PAGINA # Creates a toplevel widget. global _top1, _w1 _top1 = root _w1 = pkt_gui_rcs.PAGINA(_top1) #global PST #PST = "GENERICI" global terminale serverName = "localhost" ...certezza non ho ma penso che il problema lamentato dovrebbe risolversi. Inoltre, data l'inizializzazione di PST la ridefinizione dello stesso in "main" dovrebbe essere ridondante, perciò la ho commentata. Fai sapere P.S. : impara ad utilizzare il tasto "code" (<>) nell'editor dei post, essere chiari è importantissimo. edit: corretto uno strafalcione Ciao --- Ultima modifica di nuzzopippo in data 2024-05-13 08:44:18 --- Fatti non foste a viver come bruti... |
|
Scritto da Pietro Bruno Lancerotto |
2024-05-13 13:28:32 - Re: Utilizzo Socket
|
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. |
|
Scritto da nuzzopippo |
2024-05-13 14:58:53 - Re: Utilizzo Socket
|
Già, avevo dimenticato utility ...
In ogni caso, il problema posto è stato superato? Fatti non foste a viver come bruti... |
|
Scritto da Pietro Bruno Lancerotto |
2024-05-13 15:07:41 - Re: Utilizzo Socket
|
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. |
Pagina: Indietro 1 2 3 4 5 6 Avanti
Esegui il login per scrivere una risposta.