Я тестирую связь через последовательный порт, подключая COM-порт RD и TD-контакты вместе. COM-порт был инициализирован до выполнения кода ниже.ReadFile() возвращает пустые данные
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-го числа точно так же, как и то, что я отправил. Интересно, почему первый всегда пуст.
Он не работает с FlushFileBuffers (hPort) после WriteFile(). ** Первое сообщение все еще пусто. ** – user1098761
Каково значение переменной 'read' после вызова' ReadFile'? И как вы назвали 'CreateFile'? –
Я добавил 'char csize [256] = {" \ 0 "};' затем добавить 'itoa (read, csize, 10);' после ReadFile(). Первое значение всегда равно 0, а каждый следующий - 61. CreateFile() называется хорошо, и он всегда инициализировался перед тестированием. 1 Байт-мудрая передача прошла успешно, и я хотел завершить CString-wise test. – user1098761