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: