Почему скорость, с которой мой USB-порт USB считывает данные, зависит от того, какой ноутбук подключен?

273
James

Резюме

Я читаю последовательные данные через порт USB, и когда ноутбук заряжается, COM-порт получает около 60 обновлений в секунду, а когда ноутбук не заряжается, COM-порт получает около 1 обновления в секунду.


Фон (я не уверен, какая информация полезна)

Я работаю над проектом, в котором набор датчиков взаимодействует с микропроцессором, а микропроцессор подключен к ноутбуку. Поскольку мне нужны данные для управления в реальном времени, важна скорость, с которой ноутбук получает информацию от микропроцессора.

Как правило, мне удавалось получать около 60 обновлений от микропроцессора в секунду. Однако я часто сталкиваюсь с замедлением без видимой причины. Сегодня произошло одно из этих замедлений, и я понял, что когда ноутбук не заряжался активно, обновления в секунду были очень медленными, но когда ноутбук заряжался, он получал обновления на полной скорости.

Обратите внимание, что микропроцессор не питается от ноутбука.

Редактировать 1: Мой план питания настроен на баланс.

Изменить 2: я сделал следующие изменения, чтобы попытаться улучшить производительность

  1. Я установил для своих критических процессов приоритет в реальном времени
  2. установить мой план питания на высокую производительность
  3. Я выводил данные в консольное окно довольно быстро, поэтому я уменьшил консольную печать
  4. Я отключил выборочную приостановку USB
  5. Ранее я изменил таймер задержки COM-порта на 1 мс, а прием (байты) - на 128, чтобы попытаться устранить проблемы со связью с этим устройством.

Я думал, что это исправило это, но после нескольких минут работы замедление произошло снова.

Глядя на диспетчер задач, когда программа работает должным образом, загрузка процессора составляет около 50%, а использование памяти составляет около 50%. В тот момент, когда произошло замедление, загрузка ЦП снизилась примерно до 25%, использование памяти осталось неизменным.

Похоже, что количество потоков и дескрипторов, отображаемых в диспетчере задач, неуклонно растет с течением времени, примерно до 4000 потоков и 98000 дескрипторов. Когда я закрыл свои программы, количество потоков уменьшилось до 3000, а число обработчиков - до 90000.

Настройки COM-порта

Изменить 3:

Я вошел в BIOS и изменил Intel Speedstep на отключенный, а управление состояниями C на отключенный. Это, похоже, ничего не исправило. Я сделал это по совету этой веб-страницы: http://smallbusiness.chron.com/prevent-drops-cpu-speed-70828.html

Редактировать 4: Я использовал Docklight, чтобы подтвердить, что микропроцессор отправляет информацию достаточно быстро. Так что проблема определенно на стороне ноутбука

2
Вы убедились, что конфигурация вашего плана питания установлена ​​правильно? Если приложение, получающее обновления, связано с производительностью ЦП, имеющей неправильный план питания, может объяснить, что вы видели. Укажите любую необходимую информацию в обновлении вашего вопроса. Ramhound 5 лет назад 0
Ramhound, мой план власти настроен на баланс. Если смотреть онлайн, то это может вызвать некоторые проблемы, когда к процессору предъявляются высокие требования. Кроме просмотра загрузки процессора во время работы приложения, как узнать, связано ли это с производительностью процессора? (Сейчас я дома и не буду запускать программу до завтра) James 5 лет назад 0
Вы пытались установить план питания на «максимальную производительность» или как его там? Jamie Hanrahan 5 лет назад 0
Пока еще не Джейми, не понимал, что это может быть фактором, пока Рэмхаунд не упомянул. Завтра, когда я доберусь до лаборатории, я обязательно проверю и доложу. Может быть причина, но пока не знаю. Благодарю. James 5 лет назад 0

0 ответов на вопрос