Porta Serial

1. Porta Serial

Aldreen Sansone
rideel

(usa Ubuntu)

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


  


2. Re: Porta Serial

Marcelo A. B. Slomp
mslomp

(usa Slackware)

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

Johnibat
johnibat

(usa Conectiva)

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

Aldreen Sansone
rideel

(usa Ubuntu)

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






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts