[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [Gnu-c] Escuchando el puerto serial



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)
raster@rastersoft.com              http://www.rastersoft.com



Reply to: