Article View: es.comp.os.linux.programacion
Article #10183Re: Cuestiones sobre programacion puerto serie
From: Adrian Rossiter
Date: Wed, 20 Mar 2002 11:28
Date: Wed, 20 Mar 2002 11:28
52 lines
2822 bytes
2822 bytes
On 19 Mar 2002 19:46:22 GMT, Jes�s �ngel wrote:
>In article <slrna9f4ag.7fp.adrianr@localhost.localdomain>,
>Adrian Rossiter wrote:
>> Con estas condiciones (MIN>0, TIME>0) el temp�rizador no empieza hasta
>> que el read reciba el primer byte.
>
>S�, pero el tema es que se reciben varios bytes, pero cuando se deja de
>recibir bytes en el puerto serie el temporizador no saltay read(2) sigue
>esperando nuevos bytes.
Lo que ocurre es que despu�s de que el read haya leido el �ltimo byte el
programa pasa otra vez por el bucle. Esta vez no hay m�s bytes y por eso
el temp�rizador no empieza y el programa cuelga en el read.
Si quer�as esperar el primer character y luego terminar cuando un
caracter no llegue dentro de .6 segundos quiz�s podr�as cambiar tu
programa algo como -
newtio.c_cc[VTIME] = 10; /* inter-character timer */
newtio.c_cc[VMIN] = 1; /* blocking read until 1 character arrives */
/* Configuramos el puerto */
tcflush (fd, TCIFLUSH);
tcsetattr (fd, TCSANOW, &newtio);
/* Esperar el primer caracter */
leidos = read (fd, buffer, sizeof (buffer));
newtio.c_cc[VMIN] = 0;
tcsetattr (fd, TCSANOW, &newtio);
do {
buffer[leidos] = 0;
if (isprint (buffer[0]))
printf ("%s\n", buffer);
else
printf ("*\n");
leidos = read (fd, buffer, sizeof (buffer));
} while (leidos != 0);
Parece funcionar aqu� (leo del rat�n y no s� que envia) pero no se si
es una buena o mala soluci�n. Debe ser otras soluciones con select,
se�ales etc.
Saludos
Adrian.
--
Adrian Rossiter
Email: adrian_r@teleline.es
Web Site: http://www.terra.es/personal/adrian_r
Technical Details
Message-ID:
<slrna9gsj0.in.adrianr@localhost.localdomain>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!supernews.com!62.24.128.9.MISMATCH!news-1.opaltelecom.net!newsfeed.icl.net!opentransit.net!fu-berlin.de!uni-berlin.de!193-152-248-119.uc.nombres.ttd.ES!not-for-mailReferences:
<slrna9efmg.1b5.jpozdom@sol.linux.bogus> <slrna9f4ag.7fp.adrianr@localhost.localdomain> <slrna9f6b1.17t.jpozdom@sol.linux.bogus>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: f86c8,ab207f181b45ad15 X-Google-Attributes: gidf86c8,public X-Google-ArrivalTime: 2002-03-20 03:49:37 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!supernews.com!62.24.128.9.MISMATCH!news-1.opaltelecom.net!newsfeed.icl.net!opentransit.net!fu-berlin.de!uni-berlin.de!193-152-248-119.uc.nombres.ttd.ES!not-for-mail From: adrianr@jazzfree.com (Adrian Rossiter) Newsgroups: es.comp.os.linux.programacion Subject: Re: Cuestiones sobre programacion puerto serie Date: Wed, 20 Mar 2002 11:28:32 +0000 Lines: 52 Message-ID: <slrna9gsj0.in.adrianr@localhost.localdomain> References: <slrna9efmg.1b5.jpozdom@sol.linux.bogus> <slrna9f4ag.7fp.adrianr@localhost.localdomain> <slrna9f6b1.17t.jpozdom@sol.linux.bogus> Reply-To: adrian_r@teleline.es NNTP-Posting-Host: 193-152-248-119.uc.nombres.ttd.es (193.152.248.119) Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Trace: fu-berlin.de 1016624974 20661879 193.152.248.119 (16 [70272]) X-Orig-Path: adrianr User-Agent: slrn/0.9.6.2 (Linux)