gpt4 book ai didi

c++ - windows ReadFile() 在读取 sizeToRead 值之前不会返回

转载 作者:太空宇宙 更新时间:2023-11-04 08:34:21 25 4
gpt4 key购买 nike

在串行通信中,ReadFile 直到读取了与sizeToRead 参数一样多才返回。

这太奇怪了,因为实际上直到昨天,它都可以使用相同的代码、相同的笔记本电脑正常工作,尽管它没有收到与 sizeToRead 一样多的字节数,但返回任何字节。

但是今天我的代码出现了这样的奇怪症状。

serialHandle = CreateFile(L"\\\\.\\COM1",
GENERIC_READ | GENERIC_WRITE,
0,
0,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);

DCB serialInfo = {0};

GetCommState(serialHandle, &serialInfo)

serialInfo.DCBlength = sizeof(DCB);
serialInfo.BaudRate = CBR_19200;
serialInfo.fBinary = TRUE;
serialInfo.fParity = TRUE;
serialInfo.fErrorChar = TRUE;
serialInfo.fNull = TRUE;
serialInfo.fAbortOnError = FALSE; //TODO
serialInfo.ByteSize = 8;
serialInfo.Parity = SPACEPARITY;
serialInfo.StopBits = ONESTOPBIT;
serialInfo.ErrorChar = 0xFF;

SetCommState(serialHandle, &serialInfo

ReadFile(serialHandle, buffer, numberOfBytesToRead, &numOfBytesRead, NULL)

numberOfBytesToRead 为256,所以ReadFile 得到256 字节后返回

最佳答案

ReadFile 可以根据超时在读取 numOfBytesRead 之前返回,请参阅 SetCommTimeouts。如果您尚未初始化超时设置,那么您将继承其他程序设置的任何内容。因此,为了保持一致的行为 1,您应该在打开 COM 端口时调用此 API。

关于c++ - windows ReadFile() 在读取 sizeToRead 值之前不会返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26947356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com