Использование (DR) STRACE для сравнения выполнения программы Windows

Я задаю здесь вопрос непосредственно в связи с этой проблемой на github для узла-последовательного порта. В двух словах, что-то, что раньше нормально работало в v4.x библиотеки, больше не работает в v6.x библиотеки. Я думаю, что это должно быть как-то связано с тем, как библиотека открывает COM-порт (опции или что-то в этом роде), и я подозреваю , что он искусственно ограничивает мощность, передаваемую через USB в текущей версии библиотеки.

Я написал простейшие сценарии, которые я мог воспроизвести, проблему (сценарии, опубликованные в выпуске), используя:

  • NodeJS и v4.x библиотеки [работает]
  • NodeJS и v6.x библиотеки [терпит неудачу]
  • Python и PySerial эквивалент [работы]

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

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

Я понял, что опубликовать этот вопрос здесь - что-то вроде отчаяния, но я думаю, что стоит попробовать. Надеюсь, ясно, что мне не хватило усилий, чтобы заняться этим самостоятельно, я сейчас над головой и могу использовать помощь, чтобы продвинуться дальше. Любое руководство будет оценено. Самым удивительным был бы тот, кто разбирается в этом уровне диагностики, смотрит на него и читает чайные листья. Было бы здорово внести свой вклад в такую ​​важную библиотеку с открытым исходным кодом.

Обновление 2017 от 10 ноября

Я обратился в службу поддержки FTDI с просьбой:

  

Я использую FT231X во многих своих продуктах. Мне нужна помощь с   понимание того, как драйвер Windows FTDI управляет питанием. Больше к   Дык, я надеюсь, что вы можете помочь мне понять, как направить водителя   разрешить доставку всех 500 мА, разрешенных USB, моему продукту   на компьютере с Windows.

Ответ был:

  

Просто используйте нашу утилиту FT_Prog , чтобы установить максимальный ток VBUS до 500   мА:  введите описание изображения здесь

     

Этот ток привода становится доступным после перечисления FT231X.

Я еще не пробовал этот совет, но хотел поделиться им с кем-нибудь, кто читает это. Факт остается фактом, что поведение node-serialport 6.0.4 отличается как от поведения node-serialport 4.0.7, так и от поведения pyserial.

7 голосов | спросил vicatcu 3 52017vEurope/Moscow11bEurope/MoscowFri, 03 Nov 2017 05:55:46 +0300 2017, 05:55:46

2 ответа


0

Вот альтернативная теория, с которой вы могли бы ознакомиться:

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

ответил azyth 13 12017vEurope/Moscow11bEurope/MoscowMon, 13 Nov 2017 17:41:58 +0300 2017, 17:41:58
0

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

Я являюсь участником SerialPort и могу вам сказать, что он предлагает только привязки для операционной системы к узлу, что означает, что он не выполняет никаких действий, он предлагает вам только API, прочитайте следующее из Microsoft, они говорят, что вы должны спросить ваше оборудование поставщик

Управление питанием в драйверах последовательного порта (Windows CE 5.0)

Windows CE 5.0 Отправить отзыв Минимальное управление питанием, которое может обеспечить драйвер последовательного порта, состоит в том, чтобы перевести аппаратное обеспечение последовательного порта в состояние его наименьшего энергопотребления с помощью функции HWPowerOff и полностью включить аппаратное обеспечение последовательного порта с помощью функции HWPowerOn. Обе эти функции реализованы на нижнем уровне. Помимо этой минимальной обработки, драйвер последовательного порта может более эффективно экономить электроэнергию, оставляя порт отключенным, если приложение не открыло последовательный порт. Если драйверу не нужно обнаруживать события стыковки для съемных устройств последовательного порта, драйвер может пойти еще дальше и отключить питание от универсального чипа асинхронного приемника-передатчика (UART) последовательного порта, если порт не используют никакие приложения. Большая часть оборудования последовательного порта может поддерживать чтение входных линий порта даже без подачи питания на драйвер последовательной линии. Обратитесь к документации для вашего оборудования последовательного порта, чтобы определить, какие части схемы последовательного порта могут быть выборочно включены и выключены, и какие части должны быть включены для различных условий использования.

Источник: https://msdn.microsoft.com/en-us/library/aa447559. ASPX

об изменениях из serialport v4 => 6

  • новый интерфейс потока
  • но ничего не изменилось с основным способом открытия порта.
  • также ничего не изменилось в привязках, которые открывают порт
  • последовательный порт узла - это набор привязок, написанных на c ++
ответил google-frank-dspeed 3 52017vEurope/Moscow11bEurope/MoscowFri, 03 Nov 2017 12:09:19 +0300 2017, 12:09:19

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132