Gambas-it

Gambas3 => Programmazione => Topic aperto da: akrobaticone - 13 Marzo 2013, 12:42:36

Titolo: Evento read() nel componente Sport
Inserito da: akrobaticone - 13 Marzo 2013, 12:42:36
Non mi è molto chiaro l'esatto funzionamento dell'evento read() nel  componente serial port
avviene quando si riceve il primo carattere?
nel caso la stringa sia molto lunga dovrei mettere un ritardo prima di andare a leggere la porta per permettere l'arrivo di tutta la trasmissione?

Titolo: Re: Evento read() nel componente Sport
Inserito da: Picavbg - 13 Marzo 2013, 15:52:02
Non mi è molto chiaro l'esatto funzionamento dell'evento read() nel  componente serial port
avviene quando si riceve il primo carattere?
nel caso la stringa sia molto lunga dovrei mettere un ritardo prima di andare a leggere la porta per permettere l'arrivo di tutta la trasmissione?
Non ho esperienza su gb.net, però, dato che  la porta seriale fornisce i dati richesti da read un bit dietro l'altro, quindi molto lentamente rispetto alla velocità esecutiva del programma, giustamente, hai bisogno di ritardare l'esecuzione dell'istruzione successiva alla Read, perchè altrimenti il buffer di lettura/scrittura della porta non è ancora totalmente pronto.
L'istruzione che permette tale effetto è Wait (http://www.gambasdoc.org/help/lang/wait?it&v3)
Dovrai naturalmente capire bene il ritardo da imporre per permettere il riempimento del buffer.
 :ciao:
Titolo: Re: Evento read() nel componente Sport
Inserito da: akrobaticone - 13 Marzo 2013, 16:22:19
quindi all'interno della read() dovrei mettere wait(tempo) e poi leggere il buffer?
questo però va bene se la lunghezza della stringa che arriva è nota e posso calcolare il tempo che ci vuole affinchè arrivi tutta nel buffer

il componente gb.net da questo punto di vista è un po primitivo...


Titolo: Re: Evento read() nel componente Sport
Inserito da: vuott - 13 Marzo 2013, 16:49:17
...forse con un
 For Read Watch......    :-X
Titolo: Re: Evento read() nel componente Sport
Inserito da: akrobaticone - 13 Marzo 2013, 16:53:45
...forse con un
 For Read Watch......    :-X
???
Titolo: Re: Evento read() nel componente Sport
Inserito da: vuott - 13 Marzo 2013, 16:56:10
???

All'incirca tipo qui:
http://www.gambas-it.org/wiki/index.php/Accesso_alle_Porte_Seriali
Titolo: Re: Evento read() nel componente Sport
Inserito da: akrobaticone - 13 Marzo 2013, 17:02:37
ma li non c'è il
for read watch
Titolo: Re: Evento read() nel componente Sport
Inserito da: akrobaticone - 13 Marzo 2013, 17:05:18
correggo
c'è ma non lo vedevo

si tratta di leggere il file corrispondente alla porta seriale
In lInux (quasi) tutto è un file, giusto?
Titolo: Re: Evento read() nel componente Sport
Inserito da: vuott - 13 Marzo 2013, 17:08:29

si tratta di leggere il file corrispondente alla porta seriale
In lInux (quasi) tutto è un file, giusto?

Io con i "file" ci sguazzo !
      (http://th250.photobucket.com/albums/gg260/FarrahnsMom/Emoticons/Animated/th_swimqqq.gif)
Titolo: Re: Evento read() nel componente Sport
Inserito da: akrobaticone - 13 Marzo 2013, 17:11:45
ora si che posso mettere RISOLTO!
con la seriale mi sento un pesce fuor d'acqua....
Titolo: Re: Evento read() nel componente Sport
Inserito da: vuott - 13 Marzo 2013, 17:52:27
ora si che posso mettere RISOLTO!
con la seriale mi sento un pesce fuor d'acqua....
...però prima di nuotare fai la verifica con adeguate prove del codice.  :-\
Titolo: Re: Evento read() nel componente Sport
Inserito da: akrobaticone - 13 Marzo 2013, 18:08:25
era solo una battuta :P
questa sera provo
ho parecchi problemi con un dispositivo modbus che non vuole comunicare, mentre un'altra scheda funziona perfettamente
la stessa scheda con un altro programma sotto win funziona

Titolo: Re: Evento read() nel componente Sport
Inserito da: akrobaticone - 14 Marzo 2013, 09:51:06
per la cronaca
il problema era l'istruzione PRINT# Sport che agiunge in fondo alla stringa un LF (0A)
ho usato WRITE e tutto ha funzionato

in ogni caso ho capito meglio il funzionamento della seriale
Grazie per le info