Pular para o conteúdo

Porta Serial

Responder tópico
  • Denunciar
  • Indicar

1. Porta Serial

Enviado em 16/12/2008 - 10:00h

Bom dia,

Estou com uma dúvida em relação à leitura da porta serial no linux.
Uso a função read dentro de um while(1) para ler nBytes da porta serial, porém enquanto nenhum byte eh recebido, o programa fica estacionado na função read, gostaria de saber se tem alguma forma, de ler nBytes da porta serial somente quando nela conter algum buffer, ou seja, fazer alguma verificação de buffer antes da leitura.

Grato,

Aldreen Sansone

Responder tópico

2. Re: Porta Serial

Enviado em 16/12/2008 - 11:11h

read é uma função modo "block", o que significa que ela entra em modo de espera enquanto não houver algo para ler no descritor. então o que você precisa é marcar o descritor como "non block", e então read vai retornar imediatamente caso não haja algum dado a ser lido no momento. isso é muito comum ao se trabalhar com sockets, por exemplo.

como fazer isso?
dê uma olhada em:
man select
e
man fcntl

3. Re: Porta Serial

Enviado em 17/12/2008 - 13:56h

depois que voce conseguir abri a porta voce usa
fcntl(fd, F_SETFL, 0 /*FNDELAY*/);
nesta opcao o (0), deixa ele parado e o (FNDELAY) faz com que ele fique lendo
todo tempo a porta, não sei qua a sua necessidade, porem para mim foi melhor aguardar até chegar algo pega, e volta para aguardar novamente. Porque fiz assim, porque assim não corro o risco de perder informação em quanto alguem esta gravando na serial.


ate mais



4. Obrigado

Enviado em 21/12/2008 - 19:39h

Muito obrigado pela ajuda!

Agradeço a todos msm...

vou pesquisar sobre o que me falaram e qlq coisa pergunto aqui...

Grato

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder