delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2005/05/17/16:43:54

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
Date: Tue, 17 May 2005 16:43:34 -0400
From: Christopher Faylor <cgf-no-personal-reply-please AT cygwin DOT com>
To: cygwin AT cygwin DOT com
Subject: Re: Serial programming - Writing bytes in a blocking mode - Problem with tcdrain() ?
Message-ID: <20050517204334.GA7435@trixie.casa.cgf.cx>
Reply-To: cygwin AT cygwin DOT com
References: <OFAFBFF454 DOT 20BD9FD5-ONC1257003 DOT 00336351 AT cetenasa DOT es>
Mime-Version: 1.0
In-Reply-To: <OFAFBFF454.20BD9FD5-ONC1257003.00336351@cetenasa.es>
User-Agent: Mutt/1.5.8i

On Mon, May 16, 2005 at 10:22:00AM +0100, pbenito AT cemitec DOT com wrote:
>I'm trying to use the serial port with Cygwin, and here is my problem:
>
>I can successfully write on the line, but I need to switch the RTS and DTR
>lines just AFTER the last byte is written in the line. I put the bytes that
>I want in the line with the command Write and I wait for the last byte to
>be written with tcdrain() and then I switch the RTS and RTS lines. But when
>I see the signals in the oscilloscope I realized that the tcdrain call is
>not waiting till the output buffer is empty and I switch the RTS and DTR
>lines before I write all the bytes !! I attach my code, is it something
>wrong with it or is there a problem with the tcdrain call in cygwin? On a
>Linux box, tcdrain call seems to work fine...
>
> I'm running Cygwin v1.65 on a Windows XP SP2 machine.
>
>Thanks for your help

Corinna and I looked at the implementation of tcdrain in cygwin.  It's pretty
simple.  It just calls FlushFileBuffers and, according to Microsoft:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/devio/base/read_and_write_operations.asp

it should be doing the right thing.

I wonder if you're just seeing the effects of a buffer on the comm
device itself not draining even though Windows has flushed everything
from its own memory.
--
Christopher Faylor			spammer? ->	aaaspam AT sourceware DOT org
Cygwin Co-Project Leader				aaaspam AT duffek DOT com
TimeSys, Inc.

--
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/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019