我在MFC中用CreateFile()  ——  WriteFile()向com口中写入数据,但是WriteFile()的返回值为0,可是CreateFile()的返回值是正确的。请问这是怎么回事?谢谢!

解决方案 »

  1.   

    unsigned char command[8]; UpdateData(TRUE);
    command[0] = 0x2;
    command[1] = 0x01;
    command[2] = 0x59;
    command[3] = 0x00;
    command[4] = 0x8C;
    command[5] = 0x00;
    command[6] = 0x00;
    command[7] = 0x3; m_pComm.WriteCommBlock ((LPSTR)command, 8);其中WriteCommBlock是一个自定义的函数,如下:
    BOOL CComm::WriteCommBlock( LPSTR lpByte , DWORD dwBytesToWrite)
    { BOOL        fWriteStat ;       //写函数参数返回
    DWORD       dwBytesWritten ;   //定义要写的数据
    fWriteStat = WriteFile( idComDev, lpByte, dwBytesToWrite,
                           &dwBytesWritten, &osWrite ) ;
    if (!fWriteStat) 
    {
    AfxMessageBox("写入不成功");
    }
    return ( TRUE ) ;} 
    看看怎么回事
      

  2.   

    你用了重叠操作。
    FILE_FLAG_OVERLAPPED
    你需要
    BOOL GetOverlappedResult(
      HANDLE hFile,                       // handle to file, pipe, or comm device
      LPOVERLAPPED lpOverlapped,          // pointer to overlapped structure
      LPDWORD lpNumberOfBytesTransferred, // pointer to actual bytes count
      BOOL bWait                          // wait flag
    );
      

  3.   

    CreateFile的时候是否加了可写入?