vc 6的程序,用的OVERLAPPED方式.
一台pc控制多个串口设备.
pc和设备之间只接TX,RX,GND三根线
DCB初始化时置了
dcb.fRtsControl=RTS_CONTROL_DISABLE;
dcb.fDtrControl=DTR_CONTROL_DISABLE;但是其中一个串口在WriteFile之前如果不进行
EscapeCommFunction(m_hcom,SETRTS|SETDTR);
就不能正常通讯,其它串口却正常,
请帮忙解释下原因,和硬件有什么关系吗?

解决方案 »

  1.   

    一般情况下,可以不用接线,RXD和TXD交互接线就可以
      

  2.   

    只接那一个串口也不行,现在就是不明白没有接控制线,为什么还要给DTR,RTS置位
      

  3.   

    //还是把你的DCB设置贴出来看一下吧。
      

  4.   

    判断与下位机无关,因为每台设备都是相同的,换接到这个串口上就是不能通讯.
    以下是DCB初始化:
    dcb.DCBlength=sizeof(DCB);
    dcb.BaudRate=57600;
    dcb.ByteSize=8;
    dcb.StopBits=0;
    dcb.Parity=0;
    dcb.fBinary = TRUE;
    dcb.fParity = TRUE;
    dcb.fNull = FALSE;
    dcb.fAbortOnError = FALSE;
    dcb.fRtsControl=RTS_CONTROL_DISABLE;
    dcb.fDtrControl=DTR_CONTROL_DISABLE;
    dcb.fDsrSensitivity=FALSE;
    dcb.fOutxCtsFlow = FALSE;
    dcb.fOutxDsrFlow = FALSE;
    dcb.fOutX = FALSE;
    dcb.fInX = FALSE;
         dcb.XonChar=0x11;
       dcb.XoffChar=0x13;
    dcb.XonLim=50;
         dcb.XoffLim=50;