Hector Miuler Malpica Gallegos wrote:

Hola Hector!

Amigos, quisiera saber cual es la mejor forma de hacer un programa tipo
servidor el cual este muy atento a la entrada del puerto serial, por lo
que e visto siempre es preferible dejar el trabajo pesado al kernel
(loop), ya que el es el que controla toda la pc y sabe cuando pasa algo.

Efectivamente, hacer una operaci�n que se limite a ver todo el rato si
hay algun dato disponible es bastante ineficiente.

La mejor forma de hacerlo es:

        -Si s�lo tienes que estar atento a si llega un caracter, y s�lo
entonces hacer una serie de operaciones y luego volver a dormir hasta
que llegue otro, la manera m�s simple es hacer un
fid=open("/dev/ttySn",O_READ) y luego leer con
read(fid,&buffer,tamano_buffer). La llamada a read se quedar� congelada
hasta que llegue un caracter (o hasta que se reciba una se�al cualquiera).

        -Si tienes que hacer otras cosas en paralelo, como leer de varios
puertos serie, o de otros dispositivos, puedes abrir cada uno con un
open() y usar select() para dormir al programa hasta que alguno de los
dispositivos tenga datos para entregar, o est� listo para enviar m�s datos.

Como de costumbre, "man 2 open", "man select", "man 2 write" y "man 2
read" son de gran ayuda.

Espero que esto te haya servido de ayuda.

--
Nos leemos
                         RASTER    (Linux user #228804)
[EMAIL PROTECTED]              http://www.rastersoft.com

Responder a