Forum >> Principianti >> Utilizzo Socket

Pagina: Indietro 1 2 3 4 5 6 Avanti

Pietro Bruno Lancerotto said @ 2024-02-22 19:48:34:
Io provo a guardare ma non so se ci capiro qualcosa

If you are going to get anything from Soundmodem you must activate
this function sending the 'k'-frame for a "raw" data or type 'm'
for getting the 'I','S','U','T' monitor frames.
Io ho capito che dopo il connect bisogna inviare uno dei due frame


Enable Reception of Monitoring Frames (‘m’ frame)




o in alternativa

Activate reception of Frames in “raw” format (‘k’Frame)


dopo

terminale = Chatterbox(serverName, serverPort)
terminale.connect()

ci metto un

terminale.sendall(xxxxx)

dove xxxxx è la sequenza di byte indicata negli esempi ??
Dopo il connect deve esserci una qualche pausa ??

Grazie





--- Ultima modifica di Pietro Bruno Lancerotto in data 2024-02-23 11:01:44 ---

--- Ultima modifica di Pietro Bruno Lancerotto in data 2024-02-23 11:02:49 ---
--
Bruno L.
Ho dato una lettura, mi sembra di capire che per ottenere comunicazioni bisogna inviare una richiesta come indicato in "Enable Reception of Monitoring Frames (‘m’ frame)", ossia un messaggio con la stringa

b'0000m0000000000000000000000000000000'
ammesso abbia capito bene, prova a codificarla ed inviarla quale primo messaggio e vedi se ricevi qualcosa, poi magari prova ad inviare il Tuo messaggio e vedi che succede.




Ho scoperto che soundmodem esiste anche per linux, ho provato ad installarlo ma pare che non trova hardware necessario e non funzia, la diagnostica da esito negativo ... purtroppo, io qui mi pianto, non potendo sperimentare (oltre a non sapere dove vorrei andare a parare)




Ciao

Fatti non foste a viver come bruti...
ammesso abbia capito bene, prova a codificarla ed inviarla quale primo messaggio e vedi se ricevi qualcosa,
Posso mandarla automaticamente subito dopo il connect ??




Ho scoperto che soundmodem esiste anche per linux, ho provato ad installarlo ma pare che non trova hardware necessario e non funzia, la diagnostica da esito negativo

Deve trovare una scheda audio

Se non ho nulla collegato al PC metto microfono e altoparlanti del PC

Così si sentono i fischietti che codifica



--
Bruno L.
Pietro Bruno Lancerotto said @ 2024-02-23 11:47:33:
ammesso abbia capito bene, prova a codificarla ed inviarla quale primo messaggio e vedi se ricevi qualcosa,
Posso mandarla automaticamente subito dopo il connect ??
Si, provaci e vedi che succede,

certezze non ne ho perché la parte iniziale del documento parla di configurazioni di winsock che non ho presenti e non saprei dire quanto sono influenti.
Fatti non foste a viver come bruti...
Posso mandarla automaticamente subito dopo il connect ??

Si, provaci e vedi che succede,

Intanto era terminale.transmit :) :)

Adesso il SM rmanda indietro la stringa ma non vedo niente

Faccio un giro con il RAW ; k invece che m

Il SoundModem che uso io è la versione 1.14 che mi pare sia la più recente per windows
Il ricetrasmettitore che uso da casa ha una porta USB che viene vista dal PC come scheda audio ed il comando TX viene inviato tramite CAT ;( ;(
Quelli da campo invece hanno un apposito connettore da collegare ad una "scatoletta" che all'interno ha una scheda audio USB ed un convertitore RS232 perchè il comando TX ( il PTT Push To Talk ) viene dato attraverso uno dei segnali ausiliari della RS232

Il tutto, giusto per spiegare come gira la macchinetta



Adesso che sto facendo queste prove non ho ovviamente collegato e come già detto risultano impostati gli "strumenti" presenti sul PC




Almeno adesso manda indietro qualcosa
Speriamo anche di vederlo :)








--
Bruno L.
Allegati
Si verifica un errore nella decodifica dei dati ricevuti





D:\DRIVE-BRUNO\PYTHON\PROVE\PKT_GUI_RCS>python.exe D:\DRIVE-BRUNO\PYTHON\PROVE\PKT_GUI_RCS\pkt_gui_rcs_support.py
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 85, in listen
msg = ['RECEIVED', data.decode()]
^^^^^^^^^^^^^
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 28: invalid start byte





Penso che nel CAP del messaggio precedente si veda cosa torna indietro

metto un print prima della decodifica

--
Bruno L.
Ecco cosa arriva prima del decode




b'\x00\x00\x00\x00T\x00\x00\x00NOVEGN\x00\x00\x00\x00TUTTI\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00 1:Fm NOVEGN To TUTTI <UI pid=F0 Len=76 >[15:04:14]\rDa Postazione NOVEGNO 23-02-2024 15:04:14 MESSAGGIO INFORMATIVO: PROVA 1\r\r\x00'




Nella mia ignoranza penso che il guastafeste sia \x80 che sarebbe il 128 decimale e quindi fuori dal range decodificabile

Preciso che di tutto l'ambaradan a me interessa vedere da 1:Fm fino a tutto il testo senza i \r\r\x00' finali :dont-know:




Mi dai l'imput giusto per "segare" il pacco di byte ??




Grazie

--
Bruno L.
Pietro Bruno Lancerotto said @ 2024-02-23 15:16:35:
Mi dai l'imput giusto per "segare" il pacco di byte ??

Beh, lo header è di 36 bit, è detto chiaramente nel link di AGWPE da Te indicato, apparentemente soundmodem aggiunge al CR finale del messaggio un suo CR ed un carattere nullo, quindi basterebbe trattare i dati ricevuti come una lista di bit e farne lo slicing eliminando i primi 36 caratteri e gli ultimi tre, poi, volendo, si decodifica in utf-8 e si suddivide in base ai CR contenuti per avere le varie righe componenti il testo.
Esempio :
Python 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license()" for more information.
>>> data = b'\x00\x00\x00\x00T\x00\x00\x00NOVEGN\x00\x00\x00\x00TUTTI\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00 1:Fm NOVEGN To
 TUTTI <UI pid=F0 Len=76 >[15:04:14]\rDa Postazione NOVEGNO 23-02-2024 15:04:14 MESSAGGIO INFORMATIVO: PROVA 1\r\r\x00'
>>> data[36:-3]
b' 1:Fm NOVEGN To TUTTI <UI pid=F0 Len=76 >[15:04:14]\rDa Postazione NOVEGNO 23-02-2024 15:04:14 MESSAGGIO INFORMATIVO: PROVA 1'
>>> testo = data[36:-3].decode()
>>> testo
' 1:Fm NOVEGN To TUTTI <UI pid=F0 Len=76 >[15:04:14]\rDa Postazione NOVEGNO 23-02-2024 15:04:14 MESSAGGIO INFORMATIVO: PROVA 1'
>>> for r in testo.split('\r'):
...     print(r)
... 
...     
 1:Fm NOVEGN To TUTTI <UI pid=F0 Len=76 >[15:04:14]
Da Postazione NOVEGNO 23-02-2024 15:04:14 MESSAGGIO INFORMATIVO: PROVA 1
beh ... Sembra che, finalmente la cosa comincia a "muoversi",

Realizzato ciò che Ti serve, suggerirei di sperimentare un po' tutte le possibilità indicate in quel documento AGWPE e magari approfondire un po' con il protocollo AX.25 ... e magari sperimentare un po' le classi (non averne paura), chissà, potresti tirarne fuori qualcosa di carino ;)

Ciao
Edit: le stringhe lunghe nel codice causano un eccessivo allargamento della pagina, pro a spezzare la stringa dati


--- Ultima modifica di nuzzopippo in data 2024-02-23 16:45:36 ---
Fatti non foste a viver come bruti...
Eureka

Funziona tutto
Ho dovuto sostituire dei \n con \r perchè a video e nel file di log i ritorni a capo venissero come volevo io

Adesso dovrei cambiare la finestra superiore per metterci qualcosa di più "meglio" con una barra di scorrimento e farci girare un buffer di 200 righe suppergiù

Consigliami ......


Diciamo che è stata illuminante la risposta di Andrej dalla Ucraina

E non finirò mai di ringraziarti per il sostegno e per il tuo lavoro
Ma ti scriverò in privato perchè qui siamo vicini a Valli del Pasubio ed alle sue rinomate "Sopresse" ed è mia abitudine dimostrare gratitudine a chi aiuta

Per quanto riguarda le classi mi sono un po' illuminato quando ho aggiunto il pezzetto per avviare la risposta del SM

terminale.connect()

a4 = chr(0) * 4
am = chr(109)
a11 = chr(0) * 11
a16 = chr(0) *16
atot = a4 + am + a11 + a16 + a4
asend = atot.encode()
terminale.transmit(asend)

avevo scritto sendall ma poi ho capito come funzionava

Ancora grazie



--- Ultima modifica di Pietro Bruno Lancerotto in data 2024-02-23 18:35:13 ---
--
Bruno L.
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.


Pagina: Indietro 1 2 3 4 5 6 Avanti



Esegui il login per scrivere una risposta.