写了个串口通讯,打开成功,设置波特率也成功,可是读数据时超时了。
但很奇怪,只要用超级终端连接退出后,我的程序就能正常读写数据部超时了。

解决方案 »

  1.   

    你是使用fdb吗?是不是没有设置流控制设置()
      

  2.   

    推测,你的程序可能对串口的某个属性还没有设置,导致读超时。
    而你用super terminal打开了,刚好设置了。
      

  3.   

    我也认为是参数设置的问题,可是不知道要设置那个参数。
    我只设置了下面几个参数:
      dcb.fBinary=TRUE;
      dcb.BaudRate = 115200;       // set the baud rate
      dcb.ByteSize = 8;           // data size, xmit, and rcv
      dcb.Parity = 0;//EVENPARITY;//  Even  parity bit
      dcb.StopBits = ONESTOPBIT;  // one stop bit
      dcb.fAbortOnError=FALSE;请问还要设置那个参数啊?
      

  4.   

    //设置超时参数
    GetCommTimeouts(m_hComm, &CommTimeOuts);
    CommTimeOuts.ReadIntervalTimeout = 10; /* 接收字符间最大时间间隔 */
    CommTimeOuts.ReadTotalTimeoutMultiplier = 1;
    CommTimeOuts.ReadTotalTimeoutConstant = 10; /* 读数据总超时常量 */
    CommTimeOuts.WriteTotalTimeoutMultiplier = 0;
    CommTimeOuts.WriteTotalTimeoutConstant = 0;
      

  5.   

    // 硬件流控制设置
    dcb.fOutxCtsFlow = FALSE;
    dcb.fRtsControl = FALSE; // XON/XOFF流控制设置
    dcb.fInX=dcb.fOutX = TRUE;
    dcb.XonChar = XON;
    dcb.XoffChar = XOFF;
    dcb.XonLim = 50;
    dcb.XoffLim = 50;