各位大虾:
   我搞了串口通信程序,已经串口的2,3脚短接用于本地环回测试,其他脚悬空。可是用程序打开串口的时候不知道DCB结构如何写呢?用GetLastError()得到参数不正确的提示,以下是我的配置DCB结构的代码:
DCB commParam;
        ...
commParam.BaudRate = baud;//baud是形参,下同
commParam.fBinary = TRUE;
commParam.fParity = TRUE;
commParam.ByteSize = databits;
commParam.Parity = 0;
commParam.StopBits = stopbits; commParam.fOutxCtsFlow = FALSE;
commParam.fOutxDsrFlow = FALSE;
commParam.fDtrControl = DTR_CONTROL_DISABLE; commParam.fDsrSensitivity = FALSE;
commParam.fTXContinueOnXoff = FALSE;
commParam.fOutX = FALSE;
commParam.fInX = FALSE;
commParam.fErrorChar = FALSE;
commParam.fNull = FALSE;
commParam.fRtsControl = RTS_CONTROL_DISABLE; commParam.fAbortOnError = FALSE;

解决方案 »

  1.   

    要确保形参的值是对的,而且形参的值要在commParam对象被赋值之前先确定.这样串口才能被设置好!
      

  2.   

    commParam.DCBlength = sizeof(DCB) 有这句没
      

  3.   

    参数肯定正确;
    commParam.DCBlength = sizeof(DCB) ;填上后没有效果,还是参数错误~
      

  4.   

    GetCommState( g____hComm, &dcb );
    dcb.BaudRate = g____Comm_Config.dcb.BaudRate;
    dcb.ByteSize = g____Comm_Config.dcb.ByteSize;
    dcb.fBinary = TRUE;
    dcb.fParity = g____Comm_Config.dcb.fParity; if( !SetCommState( g____hComm, &dcb ) )
    {
      

  5.   

    发送和接收部分的DCB填成一样的。