Gambas-it

Gambas3 => Programmazione => Topic aperto da: kicco - 05 Settembre 2012, 20:58:01

Titolo: Difficoltà nella lettura dati da una seriale
Inserito da: kicco - 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

Titolo: Re: Difficoltà nella lettura dati da una seriale
Inserito da: vuott - 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
Titolo: Re: Difficoltà nella lettura dati da una seriale
Inserito da: md9327 - 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.
Titolo: Re: Difficoltà nella lettura dati da una seriale
Inserito da: kicco - 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 :)
Titolo: Re: Difficoltà nella lettura dati da una seriale
Inserito da: vuott - 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  
Titolo: Re: Difficoltà nella lettura dati da una seriale
Inserito da: kicco - 06 Settembre 2012, 21:48:21
Sembra funzionare  :ok: :ok: :ok:

Non immaginate che felicità!!!