Forum >> Principianti >> Modifiche a programma perfettamente funzionante

Pagina: 1

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.
Qui nuzzopippo, ciao Piero :caffè:




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.




Mi dai un po' di contesto, intanto? Cose tipo S.O., tipo di interfaccia, finalità etc., fammi fare un'idea prima di passare al codice.




Ciao



Fatti non foste a viver come bruti...
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.
Sto dando una guardata alla docs di Meshtastic, argomento interessante, in sostanza la libreria Ti occorre per collegarTi ad una rete di nodi di comunicazione a bassa velocità, giusto?

Vedo che il codice da Te indicato nel primo posto è il contenuto del file "autoresponder.py" nella pagina github degli esempi.

Dal codice originale vedo l'utilizzo della libreria pypubsub, tale libreria è qualcosa di analogo alla classe "Delivery" da me implementata a suo tempo per il codice che vuoi adattare, la qual cosa indica che:

1 - va espunta la logica applicata alla classe "Delivery" e sostituita con quella di pypubsub;

2 - la struttura della trasformazione non è banale, giusto per indicazione Ti invito a leggere questo mio appunto sull'uso di pypubsub, giusto per fartene una idea su una modalità d'uso della logica sottesa.




Trovo il discorso intrigante ma c'è "da studiare", partendo dalla situazione che hai attualmente, non è il caso di intasare il forum con files vari, credo, forse è opportuno che Tu mi trasmetta il file zip indicato nel precedente messaggio per posta elettronica (ovviamente fatto salvo eventuale interesse da parte di altri utenti del forum), non garantisco nulla ma mi studierò un poco la situazione.




Ciao
Fatti non foste a viver come bruti...
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.


Pagina: 1



Esegui il login per scrivere una risposta.