Последовательная связь в Windows — ClearCommError не находит данных в буфере чтения

Я хочу отправить данные с ноутбука (windows 7, процессор 2.60 ГГц) на рабочий стол (windows xp, процессор 3.10 ГГц), используя последовательную связь (используя конвертер USB в RS232). Функция WriteFile может отправлять данные с ноутбука (NumberOfBytesWritten является правильным). Но на стороне рабочего стола ClearCommError не обнаруживает никаких данных в буфере чтения.

Это соответствующий код на моем рабочем столе:

while(1)
{
ClearCommError(hPort,&dwErrors,&commStatus);
if (commStatus.cbInQue != 0)
ReadFile(hPort,&data,1,&dwBytesRead,NULL);
}

Условие if никогда не выполняется.
Скорость передачи и другие параметры в структуре DCB одинаковы с обеих сторон.

Тот же код работает, когда я пишу и читаю в одной и той же системе, закорачивая контакты RX и TX в разъеме RS232.

2

Решение

Вы можете попробовать переработать этот цикл:

while (1)
{
ClearCommError(hPort,&dwErrors,&commStatus);
if (commStatus.cbInQue != 0) break;
Sleep(10);
}
ReadFile(hPort,&data,1,&dwBytesRead,NULL);

Спящий режим даст системе немного времени для ответа на большее количество данных — возможно, вы вращаетесь слишком быстро.

1

Другие решения

Извините за путаницу, ребята, с кодом проблем не было. Мои контакты RX и TX были заменены.

1

По вопросам рекламы [email protected]