有个RThreshold属性,设置MSCOMM的每次接受到的字符个数
你可能将他设置为8了
所以发送的长度>8时一次OnOnCommMscomm事件读到的len总是8.而且数据是两次读出的.发送的长度<8时可一次读完

解决方案 »

  1.   

    为什么不试着用File操作来读些呢。
    用文件操作,你想写多长都行。只要你在COMMTIMEOUTS里说明最长返回时间。
    例如:COMMTIMEOUTS Timeout={0,0,2000,0,2000};
    SetCommTimeouts(hCom,&Timeout);
    然后,设定串口事件。
    例如:SetCommMask(hCom,EV_RXCHAR);
    最后在接受线程里,等待事件。
    DWORD l=EV_RXCHAR;OVERLAPPED osRead;
    if(WaitCommEvent(hCom,&l,&osRead))
    {
    if(l&EV_RXCHAR)
    {
    ResetEvent(osRead.hEvent);
    ReadFile(hCom,MyRecive,strlen(MyStr),&index,&osRead);
    if(index<strlen(MyStr))
    {
    ResetEvent(osRead.hEvent);
                      ReadFile(hCom,&MyRecive[index],strlen(MyStr)-index,&index,&osRead);
    }
             } 
            //其他操作。。
    }
    else
    {
     ClearCommError(hCom,NULL,NULL);
    }
    呵呵,一点愚见。