Родное приложение от производителя «USB Tester Tool», оно же «UsbMeter», до сих пор имеет версию 0.0.6 от середины 2022 года и, похоже, не спешит развиваться вовсе, хотя и является достаточно кривым – помимо прочего еще и связь иногда теряет – и, что главное, не умеющим экспортировать данные в какой-нибудь общепринятый формат, к примеру, тот же .CSV, а сохраняет только в некий проприетарный бинарный формат .CFN, что совсем грустно…
Да, на просторах есть скрипт на Python из пакета «USB-Meter utils», но он не работает на Windows – с Питоном я не знаком, поэтому немного поковырялся и бросил это дело.
Чуть погодя я нашел две альтернативные реализации штатного приложения, но уже с возможностью сохранения в .CSV. Обе на Питоне и одна, по сути является форком другой.
Первая на Windows не запустилась – но и не обещали –, зато, пока я смотрел код и искал причину, которую, понятно, не нашел, понял кое какие нюансы работы «pyusb» на Винде и основательно подготовился к финальной битве!
А вот о второй, которая к тому же является крайне продвинутой по функционалу и максимально близкой к оригиналу, дальше и пойдет речь.
В данной статье используются следующие версии программного обеспечения:
Проверено на FNIRSI FNB48S, но предположительно все нижеизложенное должно с минимальными корректировками подходить и для FNIRSI FNB58, FNIRSI FNB48, FNIRSI C1.
Для запуска этого скрипта необходимо установить Python и зависимости, заменить драйвер устройства и немного подправить код скрипта.
Качаем и устанавливаем Python – тут все просто и в подробном описании не нуждается, но я бы только рекомендовал нажать «Customize installation», в окне «Optional Features» выбрать «for all users (requires admin privileges)», а в следующем окне, «Advanced Options», выбрать «Install Python X.XX for all users» и «Add Python to environment variables».
Для семерки же, помимо пакета обновления 1, необходимо дополнительно установить «KB2533623» или его обновленную версию «KB3063858»1) иначе Питон будет невнятно ругаться и в упор не ставиться… И да, обратите внимание, что максимальная версия Python может быть не выше 3.8.10!
Зависимости ставятся так:
python -m pip install pyusb pyqt5 pyqtgraph matplotlib numpy
При запуске скрипта на Windows 7, скорее всего будет ошибка python.exe «APPCRASH» в модуле «_multiarray_umath.cp38-win32.pyd».
Это известная ошибка NumPy версии 1.24.x и для ее исправления необходимо просто понизить версию до 1.23.0 командой:
python -m pip install --force-reinstall numpy==1.23.0
Для работы PyUsb с тестером стандартный HID драйвер не подходит и это вообще не очевидный момент! – пришлось прилично времени потратить, чтобы найти и разобраться.
Изначально я использовал драйвер «libusb-win32», но скрипт с не равными промежутками – от часов до суток – выпадал в ошибку «USB poll error: [Errno None] b'libusb-dll:err [_usb_reap_async] timeout error», причем, что на Windows 11, что на Windows 7.
Замена на «libusbK», можно сказать, помогла – частота сбоев снизилась в несколько десятков раз. К тому же я нашел, что драйвера рекомендуется использовать в следующем порядке – WinUSB → libusbK → libusb-win32 – однако при использовании «WinUSB», скрипт не видит устройство.
Далее остается только скачать релиз, распаковать его и, открыв файл «3usb_meter.py» в любом редакторе, заменить «VENDOR_ID» и «PRODUCT_ID» на нужные – для FNB48S это
VENDOR_ID = 0x2E3C PRODUCT_ID = 0x0049
Все – запускаем скрипт двойным кликом и радуемся программе здорового человека!
Обсуждение