Инструменты пользователя

Инструменты сайта


windows:11:fnirsi:fnb48s:python:data_logger

Это старая версия документа!


Сохранение данных FNIRSI FNB48S в CSV

Родное приложение от производителя «USB Tester Tool», оно же «UsbMeter», до сих пор имеет версию 0.0.6 от середины 2022 года и, похоже, не спешит развиваться вовсе, хотя и является достаточно кривым – помимо прочего еще и связь иногда теряет – и, что главное, не умеющим экспортировать данные в какой-нибудь общепринятый формат, к примеру, тот же .CSV, а сохраняет только в некий проприетарный бинарный формат .CFN, что совсем грустно…

Да, на просторах есть скрипт на Python из пакета «USB-Meter utils», но он не работает на Windows – с Питоном я не знаком, поэтому немного поковырялся и бросил это дело.

Чуть погодя я нашел две альтернативные реализации штатного приложения, но уже с возможностью сохранения в .CSV. Обе на Питоне и одна, по сути является форком другого.

Первая на Windows не запустилась – но и не обещали –, зато, пока я смотрел код и искал причину, которую, понятно, не нашел, понял кое какие нюансы работы «pyusb» на Винде и основательно подготовился к финальной битве! 8-)

А вот о второй, которая к тому же является крайне продвинутой по функционалу и максимально близкой к оригиналу, дальше и пойдет речь.

USB Meter Dashboard and Report Generator for Fnirsi FNB48S

Версии

В данной статье используются следующие версии программного обеспечения:

  • Windows 11 Pro 24H2;
    • Python 3.13.5;
      • pyusb 1.3.1;
      • pyqt5 5.15.11;
      • pyqtgraph 0.13.7;
      • matplotlib 3.10.3;
      • numpy 2.3.2;
  • Windows 7 Pro SP1 (32-bit);
    • Python 3.8.10;
      • pyusb 1.2.1;
      • pyqt5 5.15.11;
      • pyqtgraph 0.13.3;
      • matplotlib 3.7.5;
      • numpy 1.23.0;
  • Zadig 2.9;
  • USB Meter Dashboard 1.0.0.

:!: Проверено на FNIRSI FNB48S, но предположительно все нижеизложенное должно с минимальными корректировками подходить и для FNIRSI FNB58, FNIRSI FNB48, FNIRSI C1.

Установка

Для запуска этого скрипта необходимо установить Python и зависимости, заменить драйвер устройства и немного подправить код скрипта.

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».

Windows 7

Для семерки же, помимо пакета обновления 1, необходимо дополнительно установить «KB2533623» или его обновленную версию «KB3063858»1) иначе Питон будет невнятно ругаться и в упор не ставиться… И да, обратите внимание, что максимальная версия Python может быть не выше 3.8.10!

Зависимости

Зависимости ставятся так:

python -m pip install pyusb pyqt5 pyqtgraph matplotlib numpy

Ошибка

python.exe APPCRASH _multiarray_umath.cp38-win32.pydПри запуске скрипта на 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

Драйвер

USB Tester Zadig libusb-win32Для работы PyUsb с тестером стандартный HID драйвер не подходит и это вообще не очевидный момент! – пришлось прилично времени потратить, чтобы найти и разобраться.

  1. Подключаем устройство;
  2. загружаем и запускаем Zadig;
  3. отмечаем пункт «List All Devices» в «Options»;
  4. выбираем в списке «USB Tester»;
  5. стрелочками выбираем libusb-win32 (vX.X.X.X);
  6. нажимаем «Replace Driver» и ждем;
  7. утвердительно отвечаем в диалоге «…modify a system driver».

Использование

Далее остается только скачать релиз, распаковать его и, открыв файл «3usb_meter.py» в любом редакторе, заменить «VENDOR_ID» и «PRODUCT_ID» на нужные – для FNB48S это

VENDOR_ID = 0x2E3C
PRODUCT_ID = 0x0049

Все – запускаем скрипт двойным кликом и радуемся программе здорового человека! ;-)

Обсуждение

Ваш комментарий:
X X V G A E S H M S G C W M M H
 
Последнее изменение: 2025/07/30 01:01 — Николай Солошин