Article View: es.comp.os.linux.programacion
Article #241Re: callback puerto serie
From: Pascal J. Bourguignon
Date: Thu, 25 Feb 2010 11:28
Date: Thu, 25 Feb 2010 11:28
22 lines
2318 bytes
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__
Technical Details
Message-ID:
<87bpfdeeq0.fsf@galatea.lan.informatimago.com>Path:
arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!news.glorb.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mailReferences:
<7un3mrF4rqU1@mid.individual.net>Show Full Headers
Complete Article Headers
X-Google-Thread: 646d03421f,abf06e14cd102923
X-Google-Attributes: gid646d03421f,public,usenet
X-Google-NewGroupId: yes
X-Google-Language: SPANISH,ASCII
Path: arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!news.glorb.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail
From: pjb@informatimago.com (Pascal J. Bourguignon)
Newsgroups: es.comp.os.linux.programacion
Subject: Re: callback puerto serie
Date: Thu, 25 Feb 2010 12:28:55 +0100
Organization: Informatimago
Lines: 22
Message-ID: <87bpfdeeq0.fsf@galatea.lan.informatimago.com>
References: <7un3mrF4rqU1@mid.individual.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
X-Trace: individual.net tUjWwR718sZri4abTwi6twaDcXbHDv3fVZhcZlGwnNdNVgvwws
Cancel-Lock: sha1:MjA5YmNlY2JhZTQxZDU5NDczOGNmNTg1ODBhNzFhZTQwYjJiYWI1Zg== sha1:6/NKEsdiAafH7GrEM0t3M0YljfY=
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1 (darwin)
Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAQMAAABtzGvEAAAABlBMVEUAAAD///+l2Z/dAAAA
oElEQVR4nK3OsRHCMAwF0O8YQufUNIQRGIAja9CxSA55AxZgFO4coMgYrEDDQZWPIlNAjwq9
033pbOBPtbXuB6PKNBn5gZkhGa86Z4x2wE67O+06WxGD/HCOGR0deY3f9Ijwwt7rNGNf6Oac
l/GuZTF1wFGKiYYHKSFAkjIo1b6sCYS1sVmFhhhahKQssRjRT90ITWUk6vvK3RsPGs+M1RuR
mV+hO/VvFAAAAABJRU5ErkJggg==
X-Accept-Language: fr, es, en
X-Disabled: X-No-Archive: no