This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Blocking behaviour of serial ports


Hello,

I've attached a small program that exhibits the behaviour, running Cygwin 1.5.18-1.

I use the select() function call to determine if it is allowed to write() to a serial port. select() indicates it is allowed, and the next write blocks. The serial port has hardware handshake control enabled (RTS/CTS), and it is unblocked as soon as CTS moves to the correct state.

Is this a problem with how I've configured serial ports? I've spent a lot of time on the 'Net today and don't find anything related to this specific problem, tested it on Linux FC4 and I have the behaviour I would have expected.

To compile:
$ gcc -Wall wblock.c -owblock
$ ./wblock

Then to test I used a normal 9-pin serial cable (one that might be used to connect to a modem, or another CE device, NOT null-modem). I used a pair of scissors to just short pins 8-4 (drive CTS -ve so it writes) or 8-3 (or not at all is equivalent, drive CTS +ve so the TX line is inactive). I had an RS232 analyser (bunch of LEDs attached to the serial port) to see what was happening.

Thanks,
Jason.

Attachment: wblock.c
Description: Binary data

Attachment: cygcheck.out
Description: Binary data

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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]