lkml.org 
[lkml]   [2001]   [Jun]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: problem with select() - 2.4.5
On Fri, 22 Jun 2001, Thomas Speck wrote:

>
> Hi !
> I have a problem with reading from a serial port using select() under
> 2.4.5. What I am doing is basically the following:
>
> fd_set readfds;
> struct timeval timeout;
> int s;
>
> serialfd = open("/dev/ttyS0", O_RDWR );
>
> init_serial(B9600);
>
> timeout.tv_sec = 2; /* ! */
> timeout.tv_usec = 0;
> FD_ZERO(&readfds);
> FD_SET(serialfd,&readfds);
>
> s=select(serialfd+1, &readfds, NULL, NULL, &timeout);
> ...
>
> But s is always equal to 0 even when I am sure there are data to read.
> If I use
>
> s=select(serialfd+1, NULL, &writefds, NULL, &timeout);
>
> (with the corresponding initialisation of writefds) it returns s=1 and I
> can write to the serial port. I can see that since the lights of the modem
> are flashing.
> I noticed that behavior since I tried to send some "ATZ" with the
> write-function but I never got the "OK" back.
>
> However, the same programme works under 2.2.19.

Probably I should have given the init_serial() as well; So here it is:
(it is basically the one from the serial-programming-howto)

int init_serial(tcflag_t baud)
{
struct termios tio;
tcgetattr(serialfd,&tio);
tio.c_cflag = baud | CLOCAL;
tio.c_iflag = IGNPAR;
tio.c_oflag = 0;
tio.c_lflag = 0;
tio.c_cc[VTIME] = 0;
tio.c_cc[VMIN] = 1;
tcflush(serialfd, TCIFLUSH);
tcsetattr(serialfd,TCSANOW,&tio);
return 0;
}

Thank you for any help
--
Thomas

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 12:55    [W:0.096 / U:7.928 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site