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们指教..

解决方案 »

  1.   

    0 IRP_MJ_CREATE Serial0 SUCCESS Options: Open 
    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
    第二次就开可以了.
    谁能说说在第二次前做了什么样的处理呀???
      

  2.   

    就是用EscapeCommFunction()操作时,调用函数无效.
      

  3.   

    Enables DTR handshaking. 表是硬件流控,就是系统自己控制,当然不是能使用EscapeCommFunction来改变串口中的针角电平控制,如果要用EscapeCommFunction来自己进行流量控制,把fDtrControl设置为
    DTR_CONTROL_ENABLE

    DTR_CONTROL_DISABLE
    看看MSDN吧,有说明的
      

  4.   

    流控制的问题
    在流控制方式为“无”和“软件控制”的情况下,基本上没有什么问题,但在“硬件控制”下,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。