[Gambas-user] Issue/Problem with Serial Port Component

nando nando_f at ...951...
Mon Jun 5 00:52:24 CEST 2006


There is no CR/LF
The data is ASCII text


---------- Original Message -----------
From: ron <ronstk at ...239...>
To: nando_f at ...951..., mailing list for gambas users
<gambas-user at lists.sourceforge.net>
Sent: Mon, 5 Jun 2006 00:44:05 +0200
Subject: Re: [Gambas-user] Issue/Problem with Serial Port Component

> On Sunday 04 June 2006 23:52, nando wrote:
> > I have tested this for hours...
> > 
> > PUBLIC SPortReceiveString AS STRING
> > 
> > SUB SPort_Read()
> > 
> >   DIM s AS STRING
> >   DIM ls AS INTEGER
> > 
> >   ls = LOF(SPort)
> >   'IF ls > 1 THEN DEC ls   '<---always read 1 less than what LOF offers
> > 
> >   READ # SPort, s, ls
> > 
> >   PRINT s  '<--help to debug
> > 
> >   SPortReceiveString = SPortReceiveString & s  'accumulate input
> > 
> >   'There is some testing of SPortReceiveString here
> > 
> > END
> > 
> > Comments:
> > Serial Port data received is in groups of about 120 bytes every 10 minutes.
> > Every READ event is a small bunch of characters received.
> > 
> > I have found out that it consistently happens that
> > the during the SPort_Read event of the second last bunch of chars,
> > there are more data being receive by the kernel or SPort control
> > but an event will not happen.
> > 
> > If I unREM the REMed line...
> >   
> >   IF ls > 1 THEN DEC ls   '<---always read 1 less than what LOF offers
> > 
> > then it works perfect every time.
> > An event will happen for the very past burst of serial data in.
> > 
> > -Fernando
> >
> 
> What is the real content of those 120 bytes and what program
> send the data?
> 
> I'm thinking on a CR/LF problem.
> *nix use normal only one of them and if both are used
> the are CR/LF (or LF/CR).
> Windows use always both but reverse to *nix.
> 
> One of them is the line terminator in gambas and when I'm right
> not returned in the string
> With  READ # SPort, s, ls you use a binairy transfer and this
> should include all bytes.
> 
> >From the doc for READ
>   If Variable is a string, you can specify a length that indicates the 
>   number of bytes to read. If the length is negative, then (- Length) 
>   bytes are read up to the end of stream.
> 
>   If no length is specified for a string, it is is read from the 
> stream.  The string then must have been written with the WRITE instruction.
> 
> Maybe it helps to PRINT ASC(LEFT(s)) and PRINT ASC(left(s,-1)) 
> after each READ.
> 
> Ron
> 
> _______________________________________________
> Gambas-user mailing list
> Gambas-user at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gambas-user
------- End of Original Message -------





More information about the User mailing list