ReadFile()返回一个空白数据

时间:2011-12-14 22:01:04

标签: c++ file-io serial-port

我正在通过将COM端口RD和TD引脚连接在一起来测试串行端口通信。 在执行以下代码之前,COM端口已初始化。

CString cs_Send = "F: 5000000 Hz, SF: 1.0, Phase: 10, Position: 50, on sample 1";

BOOL bWriteRC = false;
BOOL bReadRC = false;
DWORD iBytesWritten = 0;
char readBuffer[256] = {"\0"};

DWORD read;

bWriteRC = WriteFile(hPort,cs_Send.GetBuffer(10),cs_Send.GetLength(),&iBytesWritten,NULL);
**Sleep(1000);// Thanks for the advice!!! this Sleep() will fix this error.**
bReadRC = ReadFile(hPort,readBuffer,sizeof(readBuffer),&read,NULL);

if(bWriteRC)
{
    if(bReadRC)
    {
        AfxMessageBox(readBuffer, MB_OK);
    }
}

bWriteRC和bReadRC总是返回true。但第一条消息完全是空白的。如果我运行这个超过两次,第一次之后的每条消息都与我发送的消息完全相同。我想知道为什么第一个总是空白的。

1 个答案:

答案 0 :(得分:2)

通常,WriteFileWriteFileEx函数将数据写入操作系统定期写入磁盘或通信管道的内部缓冲区。 FlushFileBuffers函数将指定文件的所有缓冲信息写入设备或管道。

致电FlushFileBuffers后致电WriteFile

有关详细信息,请参阅FlushFileBuffers