Discussion:
callback puerto serie
(demasiado antiguo para responder)
Fernando Peral
2010-02-25 11:02:52 UTC
Permalink
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
Pascal J. Bourguignon
2010-02-25 11:28:55 UTC
Permalink
Post by Fernando Peral
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__
Pascal J. Bourguignon
2010-02-25 11:25:43 UTC
Permalink
Post by Fernando Peral
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__
Loading...