Autore Topic: [Risolto] Problemi di ricezione da seriale  (Letto 477 volte)

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.696
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
[Risolto] Problemi di ricezione da seriale
« il: 23 Maggio 2017, 13:40:17 »
 :ciao:
Dopo tanto tempo sto ristudiando un "mio" vecchio problema.
Quando ricevo dati dalla seriale, la cattura di un pacchetto di dati a 16byte risulta spezzata.
Sono giorni che sto cercando una soluzione e, anche se ho provato tutti gli esempi sulla piazza, il problema persiste.
Secondo me la chiave sta nel fatto che usando questa stringa per la lettura:
 
Codice: [Seleziona]
Read #SerialPort1, Rx, Lof(SerialPort1)
il valore Lof è sempre NULL. Durante la compilazione nel terminale appare infatti
Codice: [Seleziona]
(SerialPort:6907): Gtk-CRITICAL **: gtk_text_buffer_emit_insert: assertion 'g_utf8_validate (text, len, NULL)' failed
Dalla definizione di LoF:
"Se lo stream non è un file, ad esempio è un processo (Process) o una connessione (Socket), allora sarà restituito il numero di bytes che possono essere letti alla volta."
Mi immagino che sia il numero di byte memorizzati nel buffer (nel mio caso 16), quindi mi aspetterei un numero sicuramente diverso da 0.

Che cavolo sto sbagliando?
... e soprattutto che cosa vuol dire quel messaggio Gtk-CRITICAL... :rolleyes:
 :ciao: :ciao: :ciao:
« Ultima modifica: 23 Maggio 2017, 18:34:55 da kicco »
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.696
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:Problemi di ricezione da seriale
« Risposta #1 il: 23 Maggio 2017, 14:37:42 »
MI rispondo da solo:
L'errore Gtk-CRITICAL è dovuto a una scrittura errata in una textarea. Non c'entra niente la seriale.
 :mad:
 :ciao:
« Ultima modifica: 23 Maggio 2017, 14:38:20 da kicco »
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.178
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Problemi di ricezione da seriale
« Risposta #2 il: 23 Maggio 2017, 15:40:01 »
.. e se invece usi questa riga:
 
Codice: [Seleziona]
Read #SerialPort1, Rx, -256
cosa succede ?



Oltre a ciò, ricordi anche queste discussioni ?
http://www.gambas-it.org/smf/index.php?topic=2293
http://www.gambas-it.org/smf/index.php?topic=2311
« Ultima modifica: 23 Maggio 2017, 15:47:08 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.696
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:Problemi di ricezione da seriale
« Risposta #3 il: 23 Maggio 2017, 16:38:00 »
ciao Vuott
poi faccio la prova, ma credo d'aver capito il problema.
Ho risolto semplicemente aggiungendo uno
Codice: [Seleziona]
sleep 0.05
prima di leggere lo stream.
Probabilmente tra l'evento che scatena la subroutine di lettura della seriale
Codice: [Seleziona]
Public Sub Sport_Read()
(nel mio caso)
e il riempimento del buffer, passa troppo poco tempo e la lettura avviene, in alcuni casi a buffer incompleto.
Aggiungendo lo SLEEP si  da il tempo al buffer di riempirsi.
È un'idea che ho visto in un esempio prodotto congiuntamente da Minisini e da un componente del forum tedesco.
Adesso sto facendo letture reiterate per vedere se funziona...
Siamo a 8000!
Aspetto a gioire perchè già l'altro giorno pensavo d'aver risolto e invece... :'(
Poi provo comunque col tuo suggerimento..

Le discussioni le ricordo bene, le ho rilette tutte ed infatti applicavo un tuo suggerimento che però ogni tanto mi faceva perdere dei pacchetti di dati.

 :ciao: :ciao:
« Ultima modifica: 23 Maggio 2017, 18:36:46 da kicco »
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.696
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:[Risolto] Problemi di ricezione da seriale
« Risposta #4 il: 23 Maggio 2017, 21:06:11 »
Aggiungo che i migliori risultati li ho ottenuti con:
Codice: [Seleziona]
Sleep 0.020
:ciao:
« Ultima modifica: 23 Maggio 2017, 21:06:45 da kicco »
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.696
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:[Risolto] Problemi di ricezione da seriale
« Risposta #5 il: 24 Maggio 2017, 21:14:36 »
Citazione
.. e se invece usi questa riga:

Codice: [Seleziona]
Read #SerialPort1, Rx, -256
cosa succede ?
:(
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.178
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:[Risolto] Problemi di ricezione da seriale
« Risposta #6 il: 24 Maggio 2017, 23:24:09 »
...ossia ?   ???
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.696
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:[Risolto] Problemi di ricezione da seriale
« Risposta #7 il: 25 Maggio 2017, 09:10:50 »
 :ciao:
sì scusa sono stato troppo sintetico. Non funziona, non riesce a leggere correttamente il pacchetto di dati e poi si blocca, nel senso che non legge più alcun pacchetto di dati successivo. :-*
 :ciao:
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)