Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

RP_S40

Porta série Linux com Pthreads

Mensagens Recomendadas

RP_S40

Boas,

Estou a tentar escrever um simples programa para enviar e receber dados via porta série para Linux.

Neste momento consigo fazer tudo, (abrir porta/enviar/receber/fechar porta) contudo, preciso qua a comunicação seja assíncrona e full-duplex, o que não consigo!

Deram-me a sugestão de fazer com Ptrheads em que para ler criava uma, e enviar poderia ser na mesma no main!

Mas...não sei fazer! Alguém tem ideia, ou um exemplo que me possa ajudar? Na Net não há nenhum exemplo de como implementar...algo já tão antigo, parece impossível!

Também pesquisei na Net com o signalHandler, contudo não obtenho o resultado esperado para escrever para a porta, falhando por vezes!

Qualquer ajuda, ideia, exemplo, é bem vinda!

Obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

o que pretendes é demasiado específico para se encontrar um exemplo na net.

é por isso que é necessário saber como funciona o paralelismo e os seus elementos de sincronização de uma forma geral para poder aplicar em situações como esta.

este site é mais do que suficiente para perceber como a coisa funciona : http://www.yolinux.com/TUTORIALS/LinuxTutorialPosixThreads.html

agora, sem mais detalhes sobre o que tens de fazer, não poderei dizer o que necessitas e como o poderás obter, porque neste campo, é como no ditado : "todas as estradas vão dar a Roma" só que umas mais directamente do que outras


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
RP_S40

o que pretendes é demasiado específico para se encontrar um exemplo na net.

é por isso que é necessário saber como funciona o paralelismo e os seus elementos de sincronização de uma forma geral para poder aplicar em situações como esta.

este site é mais do que suficiente para perceber como a coisa funciona : http://www.yolinux.com/TUTORIALS/LinuxTutorialPosixThreads.html

agora, sem mais detalhes sobre o que tens de fazer, não poderei dizer o que necessitas e como o poderás obter, porque neste campo, é como no ditado : "todas as estradas vão dar a Roma" só que umas mais directamente do que outras

Boa tarde,

Antes de mais, obrigado pela rápida resposta!

No meu caso, a comunicação série está a utilizada entre dois módulos XBee em modo AT, contudo, e desta forma que estão configurados, a ligação é completamente transparente! Nesta fase só tenho que garantir que recebo tudo o que me enviam, e que recebem tudo o que eu envio, nem que seja escrito ao mesmo tempo que recebo (paralelismo que enuncia).

Outra duvida se me souber elucidar; conseguindo a aplicabilidade com Pthreads, tenho que configurar uma termios para leitura dentro da Thread de leitura? Como o código neste momento está todo junto no main e a termios está configurada para leitura/escrita, fico com essa duvida também!

Não tem nenhum exemplo que me possa elucidar/ajudar?!

Obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
RP_S40

threads não são processos. não existe "separação" no endereçamento após a criação do thread.

Boa tarde,

Honestamente não entendo o que quer dizer!

Eu tenho ciclo todo formado de leitura e escrita, termios configurada, tudo...só necessitava de um exemplo de como crio/inicializo a thread concretamente e se por exemplo quando crio com;

int iret = pthread_create(&thread, NULL, funcao, NULL), se posso deixar estes dois argumentos a NULL, e como garanto que está sempre á escuta (polling)...

Estou tão farto de erros com algo aparentemente tão simples...

Obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

sim podes teres esses dois campos a nulo.

no entanto, garantir que está sempre à escuta depende do código de leitura da porta e não do código de gestão de threads ...


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.