🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #242

Re: callback puerto serie

#242
From: 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__
Technical Details
Message-ID: <87d3zteevc.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-mail
References: <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:25:43 +0100
Organization: Informatimago
Lines: 22
Message-ID: <87d3zteevc.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 fvgHNe0QARAKCs013g8dgQ4v80cX9C09ppLqCpYbk/9RILCFIL
Cancel-Lock: sha1:OWNjNWYyMzUwYjc1NzZiY2Y3M2VmY2ZlY2VjM2ZkZGMwZWRmNWEzZg== sha1:6B46FZlx8S1EcttsGI5pxIqbLKI=
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
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1 (darwin)