Jump to content
RP_S40

Porta série Linux com Pthreads

Recommended Posts

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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites
HappyHippyHippo

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


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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.