[Qt-interest] Problem with FD_SET and select

Girish Ramakrishnan girish at forwardbias.in
Fri Sep 18 06:26:11 CEST 2009


Are you aware of QSocketNotifier? All you have to do is to pass the
serial handle to it and you a signal when you can read from it.

Girish

Flavio Ceolin wrote:
> Hi people,
> 
> I'm  trying to using serial port on an POSIX system (MACOSX) with qt.
> I have a a thread that read data from serial. The code is this:
> 
> void ThreadCommRead::run()
> {
>     fd_set fds;
>     int aux=0;
>     FD_ZERO(&fds);
>     FD_SET(m_handle,&fds);     
>     while(running){
>         aux = select(m_handle+1,&fds,NULL,NULL,&timer);
>         if(aux>0){
>             m_mutex->lock();
>             if((nbytes = read(m_handle,buffer,BUFFERSIZE))>0)
>             emit dataRead(buffer,nbytes);
>             m_mutex->unlock();
>         }
>     }
> }
> 
> The problem is that the behavior of function FD_SET is wrong and aux
> never is different of zero.
> I did a simple app for terminal and the same code using pthreads works
> fine.
> I think that mainloop of qt application is disturbing.
> Someone can help me?
> 
> 
> Flavio Ceolin
> skype: flavio.ceolin
> msn: flavio.ceolin at hotmail.com
> phone: +55 14 32276948
> mobile:  +55 13 97044877
> flavio.ceolin at gmail.com
> 
> 
> 



More information about the Qt-interest-old mailing list