Profilo di Pietro Bruno Lancerotto

Nome Pietro Bruno Lancerotto
Indirizzo email bruno@lancerotto.it
AvatarAvatar utenti
Messaggi46
Firma forum
--
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.
  • Virus ???
    Forum >> Principianti
    Ciao a Tutti

    Portato a livello di funzionamento il progetto discusso nei post "Utilizzo Socket" grazie al notevole aiuto da parte di nuzzopippo mi trovo a fare i conti con chi utizzerà il terminale realizzato.

    Unica via creare un eseguibile ovviamente Windows perchè tutti i portatili sono così

    Per facilitare la vita faccio un file.bat con tutto scritto

    pyinstaller D:\......\pkt_gui_rcs.py --noconsole --onefile

    Tutto OK

    Sui miei PC nessun problema

    Carico il file su un altro portatile e parte una raffica di avvisi che il file è un trojan e si conclude con la cancellazione del file

    Metto la cartella preposta nelle eccezzioni e ricarico il file.... tutto OK

    Nei miei PC è installato ESET Endpoint Antivirus o Internet Security

    Negli altri NULLA o meglio è il sistema di sicurezza di windows a gestire la cosa


    Nessuno ha mai generato un eseguibile ??

    Devo comunque precisare che ho compilato anche il server scritto per le prove da nuzzopippo e non da nessun problema

    Mistero misterioso ???? :)



    --- Ultima modifica di Pietro Bruno Lancerotto in data 2024-02-25 19:44:12 ---
    --
    Bruno L.
  • Re: Utilizzo Socket
    Forum >> Principianti
    EDIT : No, lascia perdere, non funziona
    meglio la Tua soluzione di ignorare gli errori.

    Con la soluzione di ignorare gli errori sta andando da una decina di ore senza perdere un colpo; quasi 3000 righe di log.


    Io sto provando connesso agli APRS che mandano un casino di caratteri strani

    Mi domando come il SM faccia passare certi pacchetti.




    Quando sarà usato per lo scopo per cui è nato ci saranno solo caratteri corretti e comunque le postazioni sono qualche decina di Km dalla prima all'ultima

    Il segnale è sempre molto forte per cui non c'è pericolo di invii farlocchi.




    Adesso dovrò ridimensionare un po' perchè è troppo grande.Nella parte TX vengono inviate 2 3 righe alla volta per cui và accorciata




    Grazie al tuo supporto sono arrivato in fondo

    --
    Bruno L.
  • Re: Utilizzo Socket
    Forum >> Principianti
    Sto facendo qualche prova per togliere i caratteri da 128 a 255

    string = "AAAÇüé°BBB"
    characters = "Ç°üé"
    for x in range(len(characters)):
    string = string.replace(charactersx, "") # ma perchè toglie le parentesi quadre ai lati di x
    print(string)

    In ogni caso io ho byte :(


    vedo cosa succede




    Ho modificato così

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




    --- Ultima modifica di Pietro Bruno Lancerotto in data 2024-02-25 10:21:58 ---
    --
    Bruno L.
  • Re: Utilizzo Socket
    Forum >> Principianti
    Oggi ho messo sotto torchio il terminale

    Diciamo che nell'ambito di utilizzo suo proprio non dovrebbe accadere mai .... però
    L'ho lasciato in ascolto sul canale APRS dei radioamatori e li arriva un po' di tutto ed è arrivato questo

    `''yl!rr/r7a & ru12a sysop IR3BT*,WIDE2-1 <UI pid=F0 Len=26 >[16:45:18]

    `''yl!rr/r7a & ru12a sysop IR3BT*,IK3SVW-11*,WIDE2* <UI pid=F0 Len=26 >[16:45:20]




    Che finché il decode ha "tenuto" ha dato questo

    1:Fm IN3RIY To 4V0P20 Via IR3BT*,WIDE2-1 <UI pid=F0 Len=26 >[16:45:18]
    `''yl!rr/r7a & ru12a sysop
    1:Fm IN3RIY To 4V0P20 Via IR3BT*,IK3SVW-11*,WIDE2* <UI pid=F0 Len=26 >[16:45:20]
    `''yl!rr/r7a & ru12a sysop




    Poi alla ricezione successiva è andato in errore



    Exception in thread Thread-1 (listen):
    Traceback (most recent call last):
    File "C:\Program Files\Python312\Lib\threading.py", line 1073, in _bootstrap_inner
    self.run()
    File "C:\Program Files\Python312\Lib\threading.py", line 1010, in run
    self._target(*self._args, **self._kwargs)
    File "D:\DRIVE-BRUNO\PYTHON\PROVE\PKT_GUI_RCS\utility.py", line 86, in listen
    msg = ['RECEIVED', data[36:-3].decode()]
    ^^^^^^^^^^^^^^^^^^^^
    UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf8 in position 144: invalid start byte

    Argghhh vale 248 decimale / è °

    In un primo momento avevo pensavo alla lunghezza ma poi leggendo bene ...
    Un famigerato carattere oltre il 127
    Secondo il mio punto di vista bisognerebbe prima tagliare il data e poi vedere se nella parte estrapolata ci sia un carattere > di 127 e saltare la decodifica

    Trovare UN carattere è una cosa ma in questo caso bisogna "ciclare" tutti i caratteri e se uno è sballato saltare il decode
    Questa la mia teoria ma metterla in pratica .... ;(


    Mi è capitato di muovere il disco di una "bollinatrice" con 36 caratteri ( 1 ogni 10° ) posizionandola dopo aver interpretato il codice ASCII del testo, lettera per lettera.

    Ma in quel caso il linguaggio era un altro e non era Python ;( ;(

    Si puo' fare ??



    --- Ultima modifica di Pietro Bruno Lancerotto in data 2024-02-24 20:19:24 ---
    --
    Bruno L.
  • Re: Utilizzo Socket
    Forum >> Principianti
    beh ... Sembra che, finalmente la cosa comincia a "muoversi",
    Ho eliminato parti disattivate ed fatto qulache accorciamento sul tipo chr(0)*7 anziche una fila di ++++

    Ti chiedo se sia il caso di postare i file nella loro versione "quasi" definitiva a beneficio di quanti dovessero cimentarsi con un colloquio TCP/IP fra applicazioni




    E come già chiesto ti chiedo di orientarmi su cosa mettere al posto della Label nel riquadro ricezione

    Io poi faccio un po' di prove "fuori campo" e capito come deve essere, rifaccio la parte




    Ciao ed ancora grazie

    --
    Bruno L.