Autore Topic: Difficoltà nella lettura dati da una seriale  (Letto 741 volte)

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.700
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Difficoltà nella lettura dati da una seriale
« il: 05 Settembre 2012, 20:58:01 »
Ho delle serie difficoltà a leggere i dati che mi arrivano sulla seriale.
Premetto che utilizzando il programma Terminale Porta Seriale di ubuntu leggo correttamente i dati.
Quando utilizzo con Gambas3 il programma Serial Port, la stringa che mi viene spedita dal terminale collegato alla COM arriva invece in due o più differenti blocchi.

Public Sub SerialPort1_Read()                               'Legge dalla porta Seriale
    Dim s As String
     Read #SerialPort1, s, Lof(SerialPort1)
      TextArea1.Text = TextArea1.Text & s          'Scrive a video nella cartella
    End

Questo è la sub di lettura che è uguale a quella dell'esempio del programmino Serial Port.
E' come se la stringa si concludesse prima della reale fine dei byte di cui è composta.
Il carattere a cui si ferma (dopo 2byte) è uno spazio (carattere Ascii 0(zero)).
Ho paura che il carattere 0 venga interpretato come Lof!

Qualcuno ha delle idee o esperienza?
 :'( :'( :'(
grazie

Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.264
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Difficoltà nella lettura dati da una seriale
« Risposta #1 il: 05 Settembre 2012, 23:07:09 »
Forse provando così....  :-X
Codice: gambas [Seleziona]

Public Sub SerialPort1_Read()

  Dim s As String

  If Lof(SerialPort1) then
     Read #SerialPort1, s, Lof(SerialPort1)
     TextArea1.Text = TextArea1.Text & s
  Endif

End
« 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 md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Difficoltà nella lettura dati da una seriale
« Risposta #2 il: 06 Settembre 2012, 11:00:25 »
Il codice "0" non corrisponde allo space (ascii 32 o x20 hex).

Se invece di una String usi dei Byte (Byte[]) ?

L'uso dei Byte è meglio, se si prevede l'input di dati esclusivamente binari, come è appunto lo zero.

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.700
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re: Difficoltà nella lettura dati da una seriale
« Risposta #3 il: 06 Settembre 2012, 17:53:34 »
Vuott,
grazie, effettivamente così supero una parte del problema, ma purtroppo credo che i valori inferiori ad Ascii 32 non vengano considerati!
Quindi il consiglio di md9327 credo indichi la strada giusta.
Per la verità avevo tentato già di leggere i byte facendo un loop, tante volte quanto il mio pacchetto di dati (16byte) ma non ho valuto molto successo. Poi vado a vedere bene come avevo fatto.....
Vi aggiorno

Thanks :)
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.264
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Difficoltà nella lettura dati da una seriale
« Risposta #4 il: 06 Settembre 2012, 21:09:48 »
Vuott,
grazie, effettivamente così supero una parte del problema, ma purtroppo credo che i valori inferiori ad Ascii 32 non vengano considerati!
Quindi il consiglio di md9327 credo indichi la strada giusta.
Per la verità avevo tentato già di leggere i byte facendo un loop, tante volte quanto il mio pacchetto di dati (16byte) ma non ho valuto molto successo. Poi vado a vedere bene come avevo fatto.....

Hai provato così ?
Codice: gambas [Seleziona]

 Public Sub SerialPort1_Read()  
      
  Dim b As Byte
      
     While Not Eof(SerialPort1)     ' fin tanto che non si è giunti alla fine del file....
        Read #SerialPort1, b           '...legge dal file.
        TextArea1.Text = TextArea1.Text & CStr(b)
     Wend
      
 End  
« Ultima modifica: 06 Settembre 2012, 22:42:11 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.700
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re: Difficoltà nella lettura dati da una seriale
« Risposta #5 il: 06 Settembre 2012, 21:48:21 »
Sembra funzionare  :ok: :ok: :ok:

Non immaginate che felicità!!!

Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)