2

У меня есть приложение, которое отслеживает последовательный порт. Данные отправляются с другой стороны только тогда, когда порт открыт, но я обнаружил, что теряю некоторые данные при перезагрузке компьютера. Это почему?

Компьютер работает под управлением Windows XP.

3 ответа3

7

Это вызвано тем, что Windows открывает порт во время загрузки на очень короткое время (менее полсекунды). Во время этого процесса все последовательные порты открываются, чтобы обнаружить устройства ввода, такие как мышь.

Решение состоит в том, чтобы просто сказать Windows не делать этого, чтобы вы не потеряли свои данные, поскольку они не были получены. Мы можем сделать это, изменив boot.ini и убедившись, что мы используем /fastdetect . Тем не менее, это уже будет в большинстве случаев, так как он включен по умолчанию в настройке Windows. Я нашел решение здесь, статья также включает в себя информацию о NT и 9x (есть разные решения).

1

Я бы трижды проверил, что ваш CTS правильно настроен и обработан (в частности, что оба конца знают, что они должны использовать аппаратное управление потоком). Это удивительно редко, когда кто-то понимает это правильно, и еще реже, когда какой-то датчик имеет достаточно буфера для сохранения всех его результатов, пока машина перезагружается, поэтому даже если управление потоком работает правильно, вполне возможно, что датчик отбрасывание некоторых данных (как самых старых, так и самых новых, в зависимости от конструкции) из-за того, что вашей машине требуется слишком много времени для перезагрузки и повторной установки CTS.

0

Также имеется инструмент командной строки, позволяющий отключить сканирование на выбранных com-портах в реестре, если вы хотите избежать ручного редактирования файла boot.ini.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .