Я хочу отправить данные с ноутбука (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.
Вы можете попробовать переработать этот цикл:
while (1)
{
ClearCommError(hPort,&dwErrors,&commStatus);
if (commStatus.cbInQue != 0) break;
Sleep(10);
}
ReadFile(hPort,&data,1,&dwBytesRead,NULL);
Спящий режим даст системе немного времени для ответа на большее количество данных — возможно, вы вращаетесь слишком быстро.
Извините за путаницу, ребята, с кодом проблем не было. Мои контакты RX и TX были заменены.