已经调用SetCommStat()设置dcb, 但用GetCommStat()获取dcb后发现dcb并不是我指定的参数,如何解决?送100分

解决方案 »

  1.   

    DCB dcb ={0};
    dcb.DCBlength = sizeof( DCB ) ;
    GetCommState( m_hFile, &dcb ) ;
    dcb.BaudRate = dwBaudRate;
    dcb.ByteSize = cByteSize;
    dcb.fParity = fParity;
    dcb.StopBits = cStopBits;
    if(!SetCommState(m_h232Port , &dcb ))
      

  2.   


    GetCommState(hComm, &dcb); // 取DCBdcb.BaudRate = nBaudRate;
    dcb.ByteSize = nByteSize;
    dcb.Parity = nParity;
    dcb.StopBits = nStopBits;SetCommState(hComm, &dcb); // 设置DCB
      

  3.   

    出错过程:
    先用了GetCommState(),得到DCB,然后设定DCB各变量的值,SetCommState(),返回是true的,我再调用一次GetCommState()得到的DCB和我设置的不一样了。
    背景是这样的,我用串口读取外部设备,需要Xon/Xoff控制,如果使用超级终端打开串口并设置成Xon/Xoff,关闭后,则我的程序里Get的DCB也是Xon/Xoff的,但如果上一次超级终端使用hardware控制打开串口,串口关掉后,我的程序无论怎么设置,都不能设置成Xon/Xoff。也就是说我程序里的DCB和超级中端最后一次打开的设置一样,无法更改。