Эта статья появилась из комментария к моему обзору Test Controller на Хабре:
VC8145 не заработал, пишет что таймаут. В конфигурационном файле для него в общем-то и менять нечего. Но, насколько я понял из конфигурационного файла, он если и заработает, то умеет читать только число с основного дисплея (это я и сам умею:)). Поскольку официальной документации протокола я не нашел, мне было бы интересно посмотреть, как читаются данные с дополнительного дисплея, но увы...
Мне стало любопытно как Test Controller работает с мультиметром VC8145. Конфигурация для VC8145 действительно "скромная":
#idString Vici,VC8145 #name Vici VC8145 #handle VC8145 #driver VC8145 #port comfixedbaud #baudrate 9600N81Rd #help VC8145 #interfaceType DMM #interface readValue 0
Есть только метаданные и указание драйвера VC8145, который реализован в TestController.jar. Однако узнать как он реализован несложно - Test Controller написана на Java и если автор программы не ставил цель скрыть исходный код, то достаточно загрузить этот файл в любой декомпилятор Java. Например в Java Decompiler.
Для запуска Java Decompiler понадобится Java Runtime Environment. Установка JRE для Debian 12 выглядит так:
$ sudo apt-get update $ sudo apt-get install openjdk-17-jre $ java -version openjdk version "17.0.15" 2025-04-15 OpenJDK Runtime Environment (build 17.0.15+6-Debian-1deb12u1) OpenJDK 64-Bit Server VM (build 17.0.15+6-Debian-1deb12u1, mixed mode, sharing)
Установка Java Decompiler 1.6.6
$ JD_VERSION=1.6.6 $ mkdir ~/.local/JavaDecompiler/ $ curl -Lo ~/.local/JavaDecompiler/jd-gui-${JD_VERSION}.jar https://github.com/java-decompiler/jd-gui/releases/download/v${JD_VERSION}/jd-gui-${JD_VERSION}.jar $ curl -Lo ~/.local/JavaDecompiler/icon.png https://raw.githubusercontent.com/java-decompiler/jd-gui/v${JD_VERSION}/app/src/main/resources/org/jd/gui/images/jd_icon_128.png $ cat > ~/.local/share/applications/JavaDecompiler.desktop <<_EOF_ [Desktop Entry] Name=Java Decompiler Path=$HOME/.local/JavaDecompiler/ Exec=java -jar $HOME/.local/JavaDecompiler/jd-gui-${JD_VERSION}.jar Icon=$HOME/.local/JavaDecompiler/icon.png Categories=Development Version=1.0 Type=Application Terminal=false _EOF_
Запускаю Java Decompiler и загружаю в него файл ~/.local/TestController/TestController.jar
В итоге в dk.hkj.devices.DeviceVC8145
находится код драйвера для нужного мультиметра.
Автору комментария этот код не даёт новых знаний, т.к. его интересовали команды чтения показаний дополнительного экрана, но в EEVBlog forum нашлось сообщение где дали ссылку (http://www.26th.net/blog/vichy-vici-vc8145-digital-multimeter-rs232-protocol/) на реверс протокола для VC8145.
На данный момент ссылка уже не открывается, но её можно посмотреть через WayBack Machine.
Попутно заметил использование библиотеки com.github.sarxos.webcam
и некоторую функциональность относящуюся к камере:
dk.hkj.main.CameraDigits
dk.hkj.main.PopupCameraInput
dk.hkj.main.PopupCameraSelect
Поизучал dk.hkj.main.Main
и нашёл скрытый параметр запуска, который активирует дополнительный пункт "Camera" в "Popups".
Если выбрать этот пункт, то открывается меню настроек
По клику на кнопку "Show" открывается предварительный просмотр камеры на котором видны цифры согласно выбранному формату. Я попробовал считывать показания индикатора, но то ли этот функционал ещё не готов, то ли его нужно как-то иначе настраивать, но у меня не получилось считывать таким образом показания.
Идея интересная - считывать показания устройств, которые не имеют связи с компьютером. Я видел что-то подобное в стендах поверки мультиметров. Там показания считывались камерой, а не через компьютерный интерфейс.
Ради интереса связался с автором программы и попросил описать эту функцию. Автор ответил что она экспериментальная и скрыта по причине её неготовности.
Комментариев нет:
Отправить комментарий