Я работал над программой, которая обменивается данными через SerialPort, и у меня возникла проблема с ней. Его коммуникация ниже 50% или меньше. Если нет, то в большинстве случаев время ожидания истекает.
Изучив эту проблему, я выяснил, что разрешение глобального или системного таймера по умолчанию составляет минимум 10 мс или больше.
Последовательная связь (RTS) и Windows 7
Итак, если вы используете Thread.Sleep в своем общении для паузы на X миллисекунд, лучшее, что он может сделать, - это 10 мс или больше для бездействия или паузы.
В моем случае это слишком долго, чтобы моя программа могла взаимодействовать с внешним устройством. Устройство отвечает в течение 10 мс, как только получает запрос от моей программы. Если моя программа не готова получить ответ, то время ожидания моей программы истечет.
Единственный способ решить эту проблему - настроить или изменить разрешение системного таймера. Для этого мне сказали использовать методы Windows timeBeginPeriod и timeEndPeriod из winmm.dll. Хотя я могу импортировать эти методы в свою версию моей программы для Windows .NET, я хотел бы знать, есть ли какая-либо замена для этих методов в платформах .NET.