🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: es.comp.os.linux.programacion
3 messages
3 total messages Started by Fernando Peral Thu, 25 Feb 2010 11:02
callback puerto serie
#240
Author: Fernando Peral
Date: Thu, 25 Feb 2010 11:02
8 lines
971 bytes
Hola.

Necesito "registrar" una función para que sea llamada cada vez que haya
un dato en el puerto serie. Veo formas de hacerlo en Windows .NET y en
linux con perl y java, pero no veo la forma de hacerlo en C o C++. ¿me
podeis ayudar?

graicas y un saludo
Re: callback puerto serie
#242
Author: Pascal J. Bourguignon
Date: Thu, 25 Feb 2010 11:25
22 lines
2318 bytes
Fernando Peral <fperal@NOSPAMpatagonmail.com> writes:
> Necesito "registrar" una funci�n para que sea llamada cada vez que haya
> un dato en el puerto serie. Veo formas de hacerlo en Windows .NET y en
> linux con perl y java, pero no veo la forma de hacerlo en C o C++. �me
> podeis ayudar?

Se puede hacer con aio.  Puedes llamar a aio_read, con una estructura
aiocb con un aio_sigevent, para que cuando datos llegan, un signal sea
enviado al proceso, lo que hara, si has instalado un gestionador de
signal, que este sea llamado.

Pero, como no se puede hacer nada (o quasi nada) en los gestionadores de
signal, no sirve mucho.


aio no se usa mucho.  Es un API bastante m�s complicado que read/write.
Cuando tu programa necesita leer/escribir con various descriptores
(puerto serie y stdin/stdout por ejemplo), lo que se hace es usar
select(2) o poll(2).  Otra soluci�n es usar un thread por descriptor.

-- 
__Pascal Bourguignon__
Re: callback puerto serie
#241
Author: Pascal J. Bourguignon
Date: Thu, 25 Feb 2010 11:28
22 lines
2318 bytes
Fernando Peral <fperal@NOSPAMpatagonmail.com> writes:
> Necesito "registrar" una funci�n para que sea llamada cada vez que haya
> un dato en el puerto serie. Veo formas de hacerlo en Windows .NET y en
> linux con perl y java, pero no veo la forma de hacerlo en C o C++. �me
> podeis ayudar?

Se puede hacer con aio.  Puedes llamar a aio_read, con una estructura
aiocb con un aio_sigevent, para que cuando datos llegan, un signal sea
enviado al proceso, lo que hara, si has instalado un gestionador de
signal, que este sea llamado.

Pero, como no se puede hacer nada (o quasi nada) en los gestionadores de
signal, no sirve mucho.


aio no se usa mucho.  Es un API bastante m�s complicado que read/write.
Cuando tu programa necesita leer/escribir con various descriptores
(puerto serie y stdin/stdout por ejemplo), lo que se hace es usar
select(2) o poll(2).  Otra soluci�n es usar un thread por descriptor.

-- 
__Pascal Bourguignon__
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads