ReadFile()返回一个空白数据

ReadFile() returns a blank data

本文关键字:空白 数据 一个 返回 ReadFile      更新时间:2023-10-16

我正在通过连接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] = {""};
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。但是第一条信息是完全空白的。如果我运行它两次以上,第一条之后的每条消息都和我发送的完全一样。

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

呼叫WriteFile后再呼叫FlushFileBuffers

参见FlushFileBuffers获取更多详细信息。