1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
-
+
|
/*
* tclWinSerial.c --
*
* This file implements the Windows-specific serial port functions, and
* the "serial" channel driver.
*
* Copyright (c) 1999 by Scriptics Corp.
*
* See the file "license.terms" for information on usage and redistribution of
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
* Serial functionality implemented by Rolf.Schroedter@dlr.de
*
* RCS: @(#) $Id: tclWinSerial.c,v 1.26.2.6 2006/04/28 16:10:51 dgp Exp $
* RCS: @(#) $Id: tclWinSerial.c,v 1.26.2.7 2007/04/20 17:14:02 dgp Exp $
*/
#include "tclWinInt.h"
#include <fcntl.h>
#include <io.h>
#include <sys/stat.h>
|
| ︙ | | |
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
|
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
|
-
+
|
dcb.fRtsControl = RTS_CONTROL_HANDSHAKE;
} else if (strnicmp(value, "DTRDSR", vlen) == 0) {
dcb.fOutxDsrFlow = TRUE;
dcb.fDtrControl = DTR_CONTROL_HANDSHAKE;
} else {
if (interp != NULL) {
Tcl_AppendResult(interp, "bad value \"", value,
"\" for -handshake: must be one of xonxoff, rtscts, ",
"\" for -handshake: must be one of xonxoff, rtscts, "
"dtrdsr or none", NULL);
}
return TCL_ERROR;
}
if (!SetCommState(infoPtr->handle, &dcb)) {
if (interp != NULL) {
|
| ︙ | | |
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
|
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
|
-
+
|
if (Tcl_SplitList(interp, value, &argc, &argv) == TCL_ERROR) {
return TCL_ERROR;
}
if (argc != 2) {
badXchar:
if (interp != NULL) {
Tcl_AppendResult(interp, "bad value for -xchar: should be ",
Tcl_AppendResult(interp, "bad value for -xchar: should be "
"a list of two elements with each a single character",
NULL);
}
ckfree((char *) argv);
return TCL_ERROR;
}
|
| ︙ | | |
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
|
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
|
-
+
|
if (Tcl_SplitList(interp, value, &argc, &argv) == TCL_ERROR) {
return TCL_ERROR;
}
if ((argc % 2) == 1) {
if (interp != NULL) {
Tcl_AppendResult(interp, "bad value \"", value,
"\" for -ttycontrol: should be a list of ",
"\" for -ttycontrol: should be a list of "
"signal,value pairs", NULL);
}
ckfree((char *) argv);
return TCL_ERROR;
}
for (i = 0; i < argc - 1; i += 2) {
|
| ︙ | | |
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
|
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
|
-
+
|
outSize = atoi(argv[1]);
}
ckfree((char *) argv);
if ((argc < 1) || (argc > 2) || (inSize <= 0) || (outSize <= 0)) {
if (interp != NULL) {
Tcl_AppendResult(interp, "bad value \"", value,
"\" for -sysbuffer: should be a list of one or two ",
"\" for -sysbuffer: should be a list of one or two "
"integers > 0", NULL);
}
return TCL_ERROR;
}
if (!SetupComm(infoPtr->handle, inSize, outSize)) {
if (interp != NULL) {
|
| ︙ | | |