|
From: <tcl...@tc...> - 2014-01-30 12:28:33
|
Repository: http://core.tcl.tk/tcl Change Notification For [Avoid double-open of serial ports on Windows] Ticket http://core.tcl.tk/tcl/tktview?name=2413550fffffffffffffffffffffffffffffffff Artifact http://core.tcl.tk/tcl/tinfo?name=4fea181e24e859144d53334703c640097536fce1 On 2014-01-30T11:04:54 By oehhar Changed Fields assignee: aku closer: nobody comment: 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/9f2f 29db7b5864fd/fd6d04dbc15d8575?rnum=1&_done=%2Fgroup%2Fcomp.lang.tcl%2Fb rowse_frm%2Fthread%2F9f2f29db7b5864fd%2Fdd17ccbb0019ed90%3F#doc_fd6d04d bc15d8575 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. icomment: Patch applied for tcl 8.5 in branch [84307fe13f] login: oehhar severity: Minor username: oehhar |