[Qt-interest] Problem with FD_SET and select

Flavio Ceolin flavio.ceolin at gmail.com
Fri Sep 18 06:38:24 CEST 2009


On Sep 18, 2009, at 1:26 AM, Girish Ramakrishnan wrote:

> 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
>>
>>
>>
>

Thanks a lot girish,
I'm going to try use QSocketNotifier.
I don't have to use FD_SET?

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