Tcl Source Code

View Ticket
Login
Ticket UUID: 219402
Title: read may block forever on serial ports - needs to be documen
Type: Bug Version: obsolete: 8.3
Submitter: nobody Created on: 2000-10-26 05:12:29
Subsystem: 24. Channel Commands Assigned To: dkf
Priority: 5 Medium Severity:
Status: Closed Last Modified: 2001-04-06 21:28:55
Resolution: Fixed Closed By: dkf
    Closed on: 2001-04-06 14:28:55
Description:
OriginalBugID: 6294 Bug
Version: 8.3
SubmitDate: '2000-09-21'
LastModified: '2000-10-25'
Severity: MED
Status: UnAssn
Submitter: techsupp
OS: Windows 95
FixedDate: '2000-10-25'
ClosedDate: '2000-10-25'


Name:
Schrödter

Comments:
Please check the man-syntax of the patch, because I do not have a 
    completely featured man-formatter on my Win95 system.

ReproducibleScript:
set chan [open com1: r+]
fconfigure $chan -mode 19200,n,8,1 -buffering none -blocking 1
read $chan     ;# blocks forever, because there is no end-of-file

ObservedBehavior:
This behaviour has been discussed in comp.lang.tcl with Jeffrey Hobbs.
The conclusion was that the documentation on reading serial ports 
should be improved.

Patch:
*** read.nTue May 04 18:19:42 1999
--- read.n.newThu Sep 21 09:48:58 2000
***************
*** 51,56 ****
--- 51,74 ----
  See the \fBfconfigure\fR manual entry for a discussion on ways in
  which \fBfconfigure\fR will alter input.

+ .SH "SERIAL COMMUNICATIONS"
+ For most applications a serial port should be configured as nonblocking:
+ \fBfconfigure \fIchannelId \fB\-blocking \fI0\fR. Then \fBread\fR behaves
+ much like described above.
+ .PP
+ Care must be taken when using \fBread\fR on blocking serial ports:
+ .TP
+ \fBread \fIchannelId numChars\fR
+ .
+ In this form \fBread\fR blocks until \fInumChars\fR are received from the 
+ serial port.
+ .TP
+ \fBread \fIchannelId\fR
+ .
+ In this form \fBread\fR blocks until the reception of the end-of-file 
+ character, see \fBfconfigure -eofchar\fR. If there is no end-of-file character 
+ specified, then \fBread\fR may block forever.
+ 
  .SH "SEE ALSO"
  eof(n), fblocked(n), fconfigure(n)

PatchFiles:
read.n
User Comments: dkf added on 2001-03-23 22:10:40:

File Added - 4560: read.patch

dkf added on 2001-03-23 22:10:39:
Logged In: YES 
user_id=79902

Gone through the wording for increased clarity, and
converted to a UniDiff.  Applies against version 1.5 of
doc/read.n

dkf added on 2001-02-05 04:02:10:
(Must convert to a patch, and check to see whether it applies cleanly to the current doc tree - this change looks good in principle to me.)

Attachments: