Re: Ansteuerung einer seriellen Schnittstelle

From: Harold Gutch <logix(at)foobar.franken.de>
Date: Sun, 24 Mar 2002 15:09:57 +0100

On Sun, Mar 24, 2002 at 02:22:21PM +0100, Bernd Walter wrote:
> On Sun, Mar 24, 2002 at 01:49:41PM +0100, Harold Gutch wrote:
> > auf moeglichst wenig Zeilen C zu reduzieren. Mache ich das ganze
> > uebrigens non-blocking, so liefert mir der read() einen EINVAL
> > zurueck.
>
> Aus der read(2) manpage:
> [EINVAL] The pointer associated with d was negative.
> Nun d ist der Filedescriptor - das hat eindeutig andere Gründe als
> non-blocking - fcntl verändert ja nicht den descriptor.
> Vermutlich hast du da einen neuen Fehler reingemacht.

GNA, ja, hab ich - und zwar beim Schreiben der Mail. Der
read()-Aufruf liefert EAGAIN zurueck, das Verhalten deckt sich
also fuer mein Verstaendnis genau mit dem im blocking-Fall.

> > On Sun, Mar 24, 2002 at 11:40:01AM +0100, Bernd Walter wrote:
> > > Gerade habe ich noch die Erklärung für dein Problem vergessen:
> > > Der write erzeugt ein echo, das abgeholt werden muss, ansonsten
> > > nimmt das Gerät ab einem bestimmten Punkt nicht mehr entgegen.
> > > In deinem Fall reicht das scheinbar nicht mal mehr für den einen
> > > Befehl.
> >
> > Ja, sowas haette ich auch zuerst vermutet, dann wuerde es aber
> > doch wohl auch mit dem fork() nicht klappen, oder? Dort holt ja
> > auch ein einziger read() mehr Zeichen ab als in dem Echo des
> > Befehls alleine stehen, also werden auch hier von dem Telefon
> > "auf einmal" mehr Zeichen geliefert, und eben nicht nur der
> > Beginn meines Befehls.
>
> Das ist im Hintergrund schon etwas komplexer.

Klar, sonst waere es ja so wie ich es mir einfach denken wuerde.
Naja, ich glaub ich nehm das jetzt mal einfach so hin und machs
dann eben mit 2 Prozessen, anscheinend ist das ja eben die
Standardmethode das ganze zu machen.

bye,
  Harold

To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Sun 24 Mar 2002 - 15:19:13 CET

search this site