I was using pthreads until I was having this issue, also in non blocking
mode, with the same behaviour, after a random number of seconds
returning '0' for ever, knowing that the GPS device was sending
strings... So I went with a more generic type code to keep it simple.
I'll have a squeeze in the /proc, thanks for the tip.
--
Rod
David Farrell wrote:
>
>
> > fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY | O_NONBLOCK);
> > if (fd <0) {perror(MODEMDEVICE); exit(-1); }
>
> You're using O_NONBLOCK so res will return 0 if no chars are present.
> You code doesn't test for this although the processing you do should
> not care.
>
> Check /proc (cat /proc/tty/driver/tty*) for the metrics, see if chars
> are coming in, are there errors etc.
>
> I use a 7400 with GPS as well, I've found using pthreads with a blocking
> read in one thread works best. Other threads do file saving, operator
> interfaces etc.
>
> > res = read(fd,buf,255);
> > buf[res]=0;
> > printf(":%s:%d\n", buf, res);
> > if (res==1) STOP=TRUE; /* stop loop if only a CR was
>
> David
>
>
------------------------------------
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/ts-7000/
<*> Your email settings:
Individual Email | Traditional
<*> To change settings online go to:
http://groups.yahoo.com/group/ts-7000/join
(Yahoo! ID required)
<*> To change settings via email:
<*> To unsubscribe from this group, send an email to:
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
|