Enables DTR handshaking. If handshaking is enabled, it is an error for the application to adjust the line by using the EscapeCommFunction function. 不知道用lineClose()和LineGetID()能否解决EscapeCommFunction()这个难题? 请GGJJ们指教..
流控制的问题 在流控制方式为“无”和“软件控制”的情况下,基本上没有什么问题,但在“硬件控制”下,win32 手册中说明 RTS_CONTROL_HANDSHAKE 控制方式的含义是: Enables RTS handshaking. The driver raises the RTS line when the "type-ahead" (input) buffer is less than one-half full and lowers the RTS line when the buffer is more than three-quarters full. If handshaking is enabled, it is an error for the application to adjust the line by using the EscapeCommFunction function. 也就是说,当缓冲区快满的时候 RTS 会自动 OFF 通知对方暂停发送,当缓冲区重新空出来的时候, RTS 会自动 ON。
1 IOCTL_SERIAL_SET_WAIT_MASK Serial0 SUCCESS Mask: RXCHAR TXEMPTY CTS DSR RLSD BRK ERR RING
2 IOCTL_SERIAL_SET_QUEUE_SIZE Serial0 SUCCESS InSize: 5120 OutSize: 5120
3 IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR
4 IOCTL_SERIAL_SET_TIMEOUTS Serial0 SUCCESS RI:-1 RM:0 RC:0 WM:0 WC:5000
5 IOCTL_SERIAL_GET_BAUD_RATE Serial0 SUCCESS
6 IOCTL_SERIAL_GET_LINE_CONTROL Serial0 SUCCESS
7 IOCTL_SERIAL_SET_WAIT_MASK Serial0 SUCCESS Mask: RXCHAR TXEMPTY CTS DSR RLSD BRK ERR RING
8 IOCTL_SERIAL_GET_CHARS Serial0 SUCCESS
9 IOCTL_SERIAL_GET_HANDFLOW Serial0 SUCCESS
10 IOCTL_SERIAL_SET_WAIT_MASK Serial0 SUCCESS Mask: RXCHAR TXEMPTY CTS DSR RLSD BRK ERR RING
11 IOCTL_SERIAL_GET_BAUD_RATE Serial0 SUCCESS
12 IOCTL_SERIAL_WAIT_ON_MASK Serial0
13 IOCTL_SERIAL_GET_LINE_CONTROL Serial0 SUCCESS
14 IOCTL_SERIAL_GET_CHARS Serial0 SUCCESS
15 IOCTL_SERIAL_GET_HANDFLOW Serial0 SUCCESS
16 IOCTL_SERIAL_SET_BAUD_RATE Serial0 SUCCESS Rate: 115200
17 IOCTL_SERIAL_SET_RTS Serial0 INVALID PARAMETER 第一次....
18 IOCTL_SERIAL_SET_DTR Serial0 SUCCESS
19 IOCTL_SERIAL_SET_LINE_CONTROL Serial0 SUCCESS StopBits: 1 Parity: NONE WordLength: 8
20 IOCTL_SERIAL_SET_CHAR Serial0 SUCCESS EOF:1a ERR:0 BRK:0 EVT:0 XON:11 XOFF:13
21 IOCTL_SERIAL_SET_HANDFLOW Serial0 SUCCESS Shake:1 Replace:40 XonLimit:1280 XoffLimit:1280
22 IOCTL_SERIAL_GET_MODEMSTATUS Serial0 SUCCESS
23 IOCTL_SERIAL_GET_MODEMSTATUS Serial0 SUCCESS
24 IOCTL_SERIAL_GET_MODEMSTATUS Serial0 SUCCESS
25 IOCTL_SERIAL_GET_MODEMSTATUS Serial0 SUCCESS
26 IOCTL_SERIAL_GET_MODEMSTATUS Serial0 SUCCESS
27 IOCTL_SERIAL_GET_MODEMSTATUS Serial0 SUCCESS
28 IOCTL_SERIAL_GET_BAUD_RATE Serial0 SUCCESS
29 IOCTL_SERIAL_GET_LINE_CONTROL Serial0 SUCCESS
30 IOCTL_SERIAL_GET_CHARS Serial0 SUCCESS
31 IOCTL_SERIAL_GET_HANDFLOW Serial0 SUCCESS
32 IOCTL_SERIAL_GET_BAUD_RATE Serial0 SUCCESS
33 IOCTL_SERIAL_GET_LINE_CONTROL Serial0 SUCCESS
34 IOCTL_SERIAL_GET_CHARS Serial0 SUCCESS
35 IOCTL_SERIAL_GET_HANDFLOW Serial0 SUCCESS
36 IOCTL_SERIAL_SET_BAUD_RATE Serial0 SUCCESS Rate: 115200
37 IOCTL_SERIAL_CLR_RTS Serial0 SUCCESS
38 IOCTL_SERIAL_SET_DTR Serial0 SUCCESS
39 IOCTL_SERIAL_SET_LINE_CONTROL Serial0 SUCCESS StopBits: 1 Parity: NONE WordLength: 8
40 IOCTL_SERIAL_SET_CHAR Serial0 SUCCESS EOF:1a ERR:0 BRK:0 EVT:0 XON:11 XOFF:13
41 IOCTL_SERIAL_SET_HANDFLOW Serial0 SUCCESS Shake:1 Replace:0 XonLimit:1280 XoffLimit:1280
42 IOCTL_SERIAL_CLR_RTS Serial0 SUCCESS 第二次
这是我监视另一个程序得来.它在第一次打开时是 INVALID PARAMETER
第二次就开可以了.
谁能说说在第二次前做了什么样的处理呀???
DTR_CONTROL_ENABLE
或
DTR_CONTROL_DISABLE
看看MSDN吧,有说明的
在流控制方式为“无”和“软件控制”的情况下,基本上没有什么问题,但在“硬件控制”下,win32 手册中说明 RTS_CONTROL_HANDSHAKE 控制方式的含义是:
Enables RTS handshaking. The driver raises the RTS line when the "type-ahead" (input) buffer is less than one-half full and lowers the RTS line when the buffer is more than three-quarters full. If handshaking is enabled, it is an error for the application to adjust the line by using the EscapeCommFunction function.
也就是说,当缓冲区快满的时候 RTS 会自动 OFF 通知对方暂停发送,当缓冲区重新空出来的时候, RTS 会自动 ON。