RS232--电子称--通讯问题

电子称RS232测试。参数:
波特率:2400

数据位:7

奇偶校验:Even

停止位:2
用串口助手打开串口,发送“W",可以正常收到重量消息,于是想自己用MFC写一个获取重量的程序。

函数:

void FunRs232()
{
      // 1. 创建文件
          HANDLE hFile = CreateFile(m_sCom, GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, 0);
      if(INVALID_HANDLE_VALUE == hFile)
        {
                        MessageBox("CreateFile");
                        CloseHandle(hFile);
                        return;
            }

            // 2. 设置串口
            DCB dcb;
          GetCommState(hFile, &dcb);
            dcb.BaudRate = CBR_2400 ;
            dcb.ByteSize = 7;
            dcb.Parity   = EVENPARITY;
            dcb.StopBits = TWOSTOPBITS;
            if(! SetCommState(m_hFile, &dcb))
          {
                    MessageBox("SetCommState", this);
                    CloseHandle(hFile);
                    return;
          }

            // 3.设置缓冲区
       if(! SetupComm(m_hFile, 512, 256))
       {
              MessageBox("设置缓冲区");
              return;
       }

       // 4.设置读写超时时间
        COMMTIMEOUTS  CommTimeouts;
        CommTimeouts.ReadIntervalTimeout = 1000;
        CommTimeouts.ReadTotalTimeoutMultiplier = 1000;
        CommTimeouts.ReadTotalTimeoutConstant = 1000;
        CommTimeouts.WriteTotalTimeoutMultiplier = 1000;
        CommTimeouts.WriteTotalTimeoutConstant = 1000;
        if(! SetCommTimeouts(m_hFile, &CommTimeouts))
        {
             MessageBox("设置读写超时时间");
             return;
        }

         // 5. 发送重量指令
        DWORD dwHadWrite = 0;
      CString sOrder = "W";
      BOOL bRes = WriteFile(hFile, (LPCVOID)sOrder, sOrder.GetLength(), &dwHadWrite, NULL);

        // 6.读取数据
        char buf[256] = {0};
        DWORD dwHadRead = 0; // 读到的字节量
        boRes = ReadFile(hFile, (LPVOID)buf, 2, &dwHadRead, NULL);
}
    问题是:读取不到重量数据. boRes一直为1,就是说ReadFile()是成功的,但是dwHadRead一直是0,buf也没任何内容,不知道哪里出了问题,求大神飘过.

https://wenku.baidu.com/view/897829351ed9ad51f01df2a7.html