public inbox for cygwin@cygwin.com
 help / color / mirror / Atom feed
From: Martin Farnik <martin.farnik@email.cz>
To: cygwin@cygwin.com
Subject: Re: tcflush hang problem
Date: Tue, 14 Oct 2003 08:02:00 -0000	[thread overview]
Message-ID: <20031014080744.32a20a34.martin.farnik@email.cz> (raw)
In-Reply-To: <Pine.GSO.4.56.0310131444410.791@eos>

Thank for answer.

I replace tcflush(fd,TCIFLUSH) by
do {
 err = read(fd,iobuffer,1000)
} while(err>0)

and it work OK on Win98.

I still have problem on Windows2000Sp2. 
It seem that it hangs  in functions:
tcsetattr(fd,TCSANOW,&newtio);
read(fd,iobuffer,1000);
write(fd,iobuffer,10);

Strange thing is, that it hangs from my point of view randomly.
Becase sometimes is operation successfully and other times it hangs (Windows:program is not responding).

thank for help
Marty


> Cygwin's current tcflush implimentation is rather crude.  Although, it may
> not be possible to do any better.  PTC.
> 
>   if (queue == TCIFLUSH || queue == TCIOFLUSH)
>     /* Input flushing by polling until nothing turns up
>        (we stop after 1000 chars anyway) */
>     for (int max = 1000; max > 0; max--)
>       {
>         COMSTAT st;
>         if (!PurgeComm (get_handle (), PURGE_RXABORT | PURGE_RXCLEAR))
>           break;
>         low_priority_sleep (100);
>         if (!ClearCommError (get_handle (), &ev, &st) || !st.cbInQue)
>           break;
>       }
> 
> So, your not really hung.  Just stuck for a long time.
> 
> As a work around, tell the device to shut up first, then flush.
> 
> On Mon, 13 Oct 2003, Martin Farnik wrote:
> 
> > Hi.
> > I use CYGWIN_98-4.10 mine 1.5.5(0.94/3/2) 2003-09-20 16:31 i686 uknown
> > unknown Cygwin
> >
> > First i try to describe a situation:
> > I have a device which is connected with computer thru serial line.
> > Device is still sending data.These data isn't for my program.I have
> > open com port and let them go into buffer . When a want to talk with
> > device i flush input buffer, send it a command paket and device stop
> > sending data and wait for my next command.
> > Problem is when I want to flush INPUT buffer before I send a command. In
> > this point it hangs, maybe for buffer full.
> > Here is piece of code:
> >
> > -----I open port when i start program -----
> >
> >  fd = open(PORT0, O_RDWR | O_NOCTTY );
> >  tcgetattr(fd,&oldtio); /* save current port settings */
> >
> >         bzero(&newtio, sizeof(newtio));
> >         newtio.c_cflag = CS8 | CLOCAL | CREAD | CSTOPB;
> >         newtio.c_iflag = 0;
> >         newtio.c_oflag &= ~OPOST;
> >         newtio.c_lflag = 0;
> >
> >         newtio.c_cc[VTIME]    = 1;
> >         newtio.c_cc[VMIN]     = 0;
> >
> > 	cfsetispeed(&newtio,B19200);
> > 	cfsetospeed(&newtio,B19200);
> >         tcflush(fd, TCIFLUSH);
> >         tcsetattr(fd,TCSANOW,&newtio);
> > -------------------------------------------------
> > --this code is execute when a want to talk with device----
> >
> >        tcflush(fd, TCIFLUSH);	    <--------- in this point where it hangs
> > 	err = write (fd,iobuffer,10);
> >
> 
> -- 
> Brian Ford
> Senior Realtime Software Engineer
> VITAL - Visual Simulation Systems
> FlightSafety International
> Phone: 314-551-8460
> Fax:   314-551-8444

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

  parent reply	other threads:[~2003-10-14  6:12 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-10-13  6:59 Martin Farnik
     [not found] ` <Pine.GSO.4.56.0310131444410.791@eos>
2003-10-14  8:02   ` Martin Farnik [this message]
2003-10-13  9:47 Martin Farnik
2003-10-13 20:10 Brian Ford
2003-11-03  9:59 H. Henning Schmidt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20031014080744.32a20a34.martin.farnik@email.cz \
    --to=martin.farnik@email.cz \
    --cc=cygwin@cygwin.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).