本帖最后由 wangwenwei1986 于 2011-05-22 20:25:40 编辑

解决方案 »

  1.   

    你看看传输数据的数组数据类型是什么
    是不是char
    如果是的话改成BYTE
      

  2.   

    我是以线程的方式读去数据的,只有检测到串口输入缓冲区有新数据到来时我才会处理,现在的问题,当数据为0时,根本得不到这个消息事件,进入不了读数据函数,代码如下:
    if(!WaitCommEvent(pDlg->m_hCom,&dwMask,&os))
    {
    //AfxMessageBox("wait event");
    if(GetLastError()==ERROR_IO_PENDING)
    {
        //AfxMessageBox("begin wait a data in!");
        GetOverlappedResult(pDlg->m_hCom,&os,&dwTrans,TRUE);
        //AfxMessageBox("now,there is!");
    }
    else
    {
        CloseHandle(os.hEvent);
        return(UINT)-1;
    }
    //AfxMessageBox("wait end");
    }
      

  3.   

    每个二进制字节全部转换成ASCII字符,长度增加一倍,例如 0 转换成 '00',其它类似,避免跟控制字符搞混