Tcl Source Code

Ticket Change Details
Login
Overview

Artifact ID: 4fea181e24e859144d53334703c640097536fce1
Ticket: 2413550fffffffffffffffffffffffffffffffff
Avoid double-open of serial ports on Windows
User & Date: oehhar 2014-01-30 11:04:54
Changes

  1. assignee changed to: "aku"
  2. closer changed to: "nobody"
  3. comment changed to:
    Currently, opening a serial port on Windows involves a double-open: (1) open generically (2) check the handle for serialness (3) reopen with OVERLAPPED flag if serial.
    
    This causes trouble in some setups where the open/close (and its timing) is not transparent to the underlying driver, like bluetooth RFCOMM profile. See 
    
    http://groups.google.fr/group/comp.lang.tcl/tree/browse_frm/thread/9f2f29db7b5864fd/fd6d04dbc15d8575?rnum=1&_done=%2Fgroup%2Fcomp.lang.tcl%2Fbrowse_frm%2Fthread%2F9f2f29db7b5864fd%2Fdd17ccbb0019ed90%3F#doc_fd6d04dbc15d8575
    
    for a concrete example.
    
    A simple and efficient solution is to use a "name hint" to detect COM ports by their filename instead of resorting to a syscall to detect serialness after the fact.
    
    Rolf Shroedter has suggested that at least the two following patterns should be detected:
    
          COM[0-9]:?
          \\.\COM[0-9]+:?
    
    It also turns out that the first one should be applied to the [file tail], since \foo\bar\COM4 is also a valid serial port reference in Windows.
    
    However, we believe that a good strategy should be to make only a reasonable effort in that direction, leaving tricky cases handled by the current behavior; this in order not to spoil the performance of [open] for non-serials.
    
    A patch will be uploaded shortly to support just the above two patterns.
    
  4. icomment: "Patch applied for tcl 8.5 in branch [84307fe13f]"
  5. login: "oehhar"
  6. mimetype: "text/x-fossil-wiki"
  7. severity changed to: "Minor"
  8. username: "oehhar"