Почему компьютерная игра замедляет работу несвязанного COM-порта? - PullRequest
1 голос
/ 18 апреля 2019

Проблема:

Итак, у меня есть физическое устройство с кнопками и джойстиками на нем, и я использую его для перемещения мыши и нажатия значков и т. Д.

Для выполненияэто у меня есть программа на C #, которая читает COM-порт и использует InputSimulator для имитации действий клавиатуры и мыши.(Кстати, это приложение является графическим приложением с собственным окном, поскольку оно также отображает данные отладки на экране.)

Это прекрасно работает в Windows, так как я могу использовать его для навигации по ОС, открытия программи т. д. Я вывожу переменную maxTimeBetweenReadings, которая на самом деле не превышает 20 или 30 мс.

Однако затем я открываю Steam и запускаю компьютерную игру.Сначала мое устройство работает нормально, и я могу перемещаться по меню «Пуск».Но при входе на уровень связь с устройства становится невероятно изменчивой, и игра не воспроизводится.Мое значение maxTimeBetweenReadings достигает более секунды.

Вещи, которые я пробовал:

  • Я пытался использовать настоящую мышь и клавиатуру, которая по-прежнему идеально плавная, поэтому я знаю, что игра не замедляетсявесь мой компьютер.

  • Я попытался установить приоритет моей программы на C # в реальном времени (хотя я не хочу делать это в рабочей среде) и приоритет потока, к которому она порождаетНаибольший.Это не имеет значения, что я вижу.

  • Я закомментировал все другие действия (запись / чтение файлов и т. Д.) В программе на C #, хотя я не думаю, что это должноизменить ситуацию на всех.Опять же без разницы, но тогда у меня не было надежды.

Насколько я понимаю, Windows запросила COM-порт для моей C # -программы и теперь не позволяет другим говорить с ней,так что, даже если игра по какой-то причине хочет помешать ей, она не должна это делать?

И даже если игра каким-то образом могла возиться и прерывать связь, разве не факт, чтопрограмма на C # работает с приоритетом в реальном времени, а это значит, что игре никогда не следует давать такой шанс?

Однако в моем понимании, очевидно, есть пробелы, поскольку они не соответствуют тому, что я вижу.

Мы должны быть в состоянии отдать это устройство с уверенностью, что оно может работать с ЛЮБОЙ игрой, независимо от того, как игра была реализована, независимо от того, какие неловкие вещи она пытается сделать.

Если мне придется идти за игрой, чтобы убедиться, что они не мешают как-то (а я до сих пор не понимаю, как они могут), то я буду здесь тысячу лет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...