Blog. Just Blog

VESA Commander 1.5

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Мои программы | Автор: ManHunter
Скриншот программы VESA Commander
Скриншот программы VESA Commander

VESA Commander - консольная программа для получения различной технической информации и тестирования мониторов с поддержкой стандарта VESA DDC/CI. Она позволяет получить текущее значение и описание любого из поддерживаемых монитором VCP кодов, а также изменить это значение, если это возможно. Таким образом, например, вы можете включить или выключить монитор, поменять язык экранных подсказок, изменить яркость или контрастность, выбрать цветовой профиль, а также сделать со своим монитором еще много чего интересного. Список VCP кодов стандартизирован и описан в документе VESA Monitor Control Command Set (MCCS), там же приводится формат и описание большинства значений передаваемых и получаемых параметров.

Команды:
list - получение списка установленных мониторов
set [monitor] [code] [value] - установить новое значение VCP кода для монитора
wset [monitor] [code] [value] - подождать, пока монитор не будет готов к приему команд и установить новое значение VCP кода для монитора
setw [monitor] [code] [value] - установить новое значение VCP кода для монитора и ожидать, пока он будет готов к приему следующих команд
fset [monitor] [code] [value] - принудительно установить новое значение VCP кода для монитора без каких-либо дополнительных проверок (крайне не рекомендуется к использованию!)
get [monitor] [code] - получить значение VCP кода для монитора
wget [monitor] [code] - подождать, пока монитор не будет готов к приему команд и получить значение VCP кода для монитора
all [monitor] - получить список поддерживаемых VCP кодов
cap [monitor] - получить строку параметров для монитора

Значения параметров [code] и [value] указываются в шестнадцатеричной системе счисления.

Примеры использования:

vesacom list
Получить список установленных мониторов. Число перед названием монитора используется в качестве параметра [monitor] для всех остальных команд. Также в качестве идентификатора монитора можно использовать любое из значений "Device Name", "Model", "Device Serial Number", "Manufacturer Product Code", "Manufacturer Serial Number".

vesacom cap 1
Получить строку поддерживаемых параметров монитора №1. Это техническая информация в кодированном формате, в большинстве случаев она нужна только специалистам.

vesacom all 1
Получить строку поддерживаемых параметров и список всех доступных VCP кодов для монитора №1. По возможности для некоторых кодов также выводятся их допустимые значения.

vesacom get 2 c8
Получить значение VCP кода C8h (Display Usage Time) для монитора №2.

vesacom set 1 d6 5
Выключить монитор №1.

vesacom set 1 cc 2
Установить английский язык экранных надписей для монитора №1.

vesacom set 2 4 1
Сбросить монитор №2 к заводским настройкам.

Для использования в пакетных файлах предусмотрены коды возврата в зависимости от выполняемой команды.

Команда list:
errorlevel = количество установленных мониторов

Команды set, wset и setw:
errorlevel = 65534 - код не поддерживается
errorlevel = 65533 - попытка изменить read-only код
errorlevel = 1 - команда успешно выполнена
errorlevel = 0 - команда выполнена с ошибкой

Команда get и wget:
errorlevel = 65534 - код не поддерживается
errorlevel = CurrentValue в случае успешного выполнения

Общее для команд set, setw, get, all, cap:
errorlevel = 65535 - монитор не поддерживает стандарт VESA DDC/CI
errorlevel = 65532 - монитор не найден
errorlevel = 65530 - аварийное завершение по Ctrl+C

Общее для команд wset, wget:
errorlevel = 65534 - код не поддерживается
errorlevel = 65532 - монитор не найден
errorlevel = 65530 - аварийное завершение по Ctrl+C

Если монитор действительно не поддерживает стандарт VESA DDC/CI или находится в таком состоянии, что не способен принимать команды, то на выполнение команд wset или wget дается 1 минута. По истечению таймаута команда завершается с errorlevel = 65534 (код не поддерживается).

Вся информация выводится на stdout, так что вы можете перенаправлять ее как угодно. Поддерживаются системы Windows Vista и выше.

Утилита VESA Commander работает напрямую с железом, поэтому будьте внимательны и осторожны при ее использовании. Со своей стороны я постарался предусмотреть потенциально опасные ситуации, но все равно вы должны четко понимать, что и зачем вы делаете, особенно при изменении значений различных VCP кодов. Я не несу никакой ответственности за результаты применения этой утилиты.

VESA Commander 1.5VESA Commander 1.5

VESA.Commander.1.5-PCL.zip (63,847 bytes)


Поделиться ссылкой ВКонтакте
Просмотров: 5887 | Комментариев: 45

Комментарии

Отзывы посетителей сайта о статье
Petya (10.01.2024 в 18:49):
ЦитатаК браузеру. На сайте уже много лет в этом плане ничего не менялось.

Я, кажется, нашёл условия возникновения. Куки быстро протухают - если открыть страницу и уйти пить чай, а по возвращении ткнуть на файл, будет такой эффект.
alex (17.10.2023 в 03:13):
Понял что не так, ещё раз прочитал статью про выключение, у меня же самсунг там другой код.
set 1 e1h 0
set 1 e1h 1
Эти команды включают и выключают монитор.
alex (17.10.2023 в 02:44):
Монитор самсунг при выполнении команды
vesacom set 1 d6 5
монитор не выключается, вот что пишет
Универсальный монитор PnP
VCP code: D6h (Power Mode, READ/WRITE)
Available values: 01h, 04h
Description: 05h = Power off
Sets value: 05h, result: OK

Программа monitoroffex.exe отключает монитор! Вот лог
Универсальный монитор PnP - ID: 0005h - Cur: 1 - Max: 4 - ResS: 1 - CurS: 1 - MaxS: 1

Я что-то не так делаю?
ManHunter (07.09.2023 в 23:50):
Версия 1.5. На выполнение команд wget и wset теперь дается 1 минута, после чего программа завершается с errorlevel = 65534 (код не поддерживается). Зависаний, даже теоретических, с этими командами больше не будет. Добавлены свежие Manufacturer ID.
ManHunter (07.09.2022 в 08:15):
Это результаты вызова двух совершенно разных функций, и результаты совпадают. Я сделаю, конечно, какую-нибудь мелкую тестовую программу, которая сохранит в файл результаты в необработанном виде, чтобы я их потом спокойно поковырял. Но сомневаюсь, что это поможет. Тут или система, или монитор дают странный результат. Техника же, с ней любая невообразимая хрень становится возможной, даже та, которой в принципе быть не должно :)
User (07.09.2022 в 00:05):
ЦитатаСделал определение разрешения монитора другим способом, теперь должно быть более правильно. Архив обновлен.

Не сработало. Инфа осталась прежняя (( Если интересно, могу предоставить монитор на удалённое растерзание )
ManHunter (06.09.2022 в 11:45):
Сделал определение разрешения монитора другим способом, теперь должно быть более правильно. Архив обновлен.
User (06.09.2022 в 02:50):
Неверно считалось разрешение экрана, в реальности 2560x1440. Windows 11
vesacom list
1 - Generic PnP Monitor
Resolution: 1707x960
Model: ASUS PB278
Manufacturer ID: ACI - Asus (ASUSTeK Computer Inc.)
Manufacturer Product Code: 27A3
ManHunter (09.06.2022 в 11:43):
К браузеру. На сайте уже много лет в этом плане ничего не менялось.
АндрейК (09.06.2022 в 11:40):
Не совсем в тему, но нажал ссылку VESA.Commander.1.4-PCL.zip и вместо скачаивания "что-то там включите куки и т.п.". В браузере нажал "<-", f5 и снова нажал ссылку (zip) - в результате скачалось.
Это вопросы к браузеру или к сайту ?
ManHunter (01.12.2021 в 14:49):
Да это обычная реакция на Ассемблер и не только у дефендера. Надеюсь, про то, что это ложная тревога, напоминать не надо :) У меня тут и так часть софта в архивах под паролями, потому что пидорский гугл задолбал уже своими предъявами о якобы распространении злого зла.
Compiller (01.12.2021 в 14:47):
не то чтобы я паникёр - но Windows Defender слегка матерится... ему наверное пакер не нравится?
ManHunter (29.10.2021 в 11:50):
Спасибо за дельное предложение
АндрейК (12.10.2021 в 01:58):
Отдельно спасибо за fset.
ManHunter (24.09.2021 в 11:11):
Версия 1.4. Список вендоров дополнен новыми данными, еще раз отсортирован и приведен в порядок. Добавлена команда fset - установка параметра без каких-либо проверок его поддержки и обработки результата. Крайне НЕ рекомендуется к использованию, применяйте эту команду только если вы четко понимаете, что и зачем вы хотите сделать.
АндрейК (16.09.2021 в 14:49):
Теперь красота:
Manufacturer ID: BNQ - BenQ Corporation

Спасибо, Дмитрий!
ManHunter (16.09.2021 в 14:29):
АндрейК, а тут главная печалька, что нет единой и актуальной базы по Manufacturer ID, а типа официальная база https://uefi.org/pnp_id_list давно не обновлялась. В разных источниках есть какие-то обрывки или свои идентификаторы, но иногда одинаковые ID по разным данным принадлежат вообще непохожим производителям. Насобирал еще немного, добавил, архив обновлен. Спасибо!
АндрейК (16.09.2021 в 13:22):
Небольшое примечание (декоративная недоработка).

При запуске
>vesacom.exe list

Отвечает (в частности)
Manufacturer ID: BNQ - Unknown

Фактически - монитор BENQ

PS. Внутри программы есть буквы "BBL Brain Boxes Limited", а BENQ вниманием обделили.
ManHunter (16.09.2021 в 13:04):
Нет. В программе ничего искусственно не задерживается, вся реакция на стороне монитора.
АндрейК (16.09.2021 в 13:02):
Можно ли как-то ускорить выполнение vesacom set 1 60 1 ?
ManHunter (06.10.2020 в 21:46):
Версия 1.3. Добавлены команды wset и wget, в информацию о мониторах добавлены новые характеристики из блока EDID, некоторые из которых теперь можно использовать в качестве идентификатора монитора вместо его номера. Например, для монитора с параметрами

Philips 240B7QPT (24 inch Wide LCD MONITOR)
Device Name: \\.\DISPLAY1\Monitor0
Device ID: MONITOR\PHL0904\{4d36e96e-e325-11ce-bfc1-08002be10318}\0007
Model: PHL 240B7QPT
Device Serial Number: AU11801000050
Manufacturer ID: PHL - Philips Consumer Electronics Company
Manufacturer Product Code: 0904
Manufacturer Serial Number: 50
Year of manufacture: 2018

теперь абсолютно корректными и равнозначными будут записи типа

vesacom get 1 c0
vesacom get "\\.\DISPLAY1\Monitor0" c0
vesacom get "PHL 240B7QPT" c0
vesacom get "AU11801000050" c0
vesacom get "0904" c0
vesacom get "50" c0
ManHunter (16.09.2020 в 20:08):
Подумаю.
Rustamer (16.09.2020 в 20:03):
Успешно переключаю между компьютером и ноутбуком пару мониторов, но возникла еще одна хотелка из практики: надо бы за мониторами закрепить какие-нибудь ID-шки. Номера 1, 2, 3 постоянно меняются местами (как мониторы в винде). Хотелось бы обращаться по чему-то менее переменчивому.
ManHunter (14.05.2020 в 09:59):
Версия 1.2. Список доступных кодов сортируется по возрастанию. Добавлена команда setw - установить значение и ожидать, пока монитор будет готов к приему очередных команд. Теперь при выполнении подряд команд вроде
vesacom setw 2 d6 4
vesacom get 2 d6
вторая команда не будет вываливать ошибку, а отработает как задумано. Больше не надо городить в пакетных файлах искусственные задержки или типа того.
ControlMyMonitor (25.03.2020 в 00:54):
ЦитатаНо она не дотягивает по некоторому функционалу.

Само собой :)
ManHunter (23.03.2020 в 00:21):
Есть. Но она не дотягивает по некоторому функционалу.
ControlMyMonitor (23.03.2020 в 00:19):
Есть ещё такая вот программулина:
https://www.nirsoft.net/utils/...monitor.html
user (28.01.2020 в 05:08):
Поправка к предыдущему посту:
Опечатка в имени программы. Правильно:
"vesacom.exe 1 10 0"
user (28.01.2020 в 04:56):
Программа очень пригодилась.
На работе имеется человек, выкручивающий яркость монитора на 70%,
тогда как мне нужна яркость 0%.
Вот и был составлен и помещён в автозагрузку такой пакетный файл:
"vgacom.exe 1 10 0"
И теперь при запуске то, что надо. А он пускай выкручивает.
ManHunter (25.01.2020 в 17:57):
Это лишнее. На свете немыслимое количество готового софта, чья задача состоит именно в запуске процессов по горячим клавишам и/или из трея. Городить интерфейс для узкозаточенной консольной программы не считаю правильным.
Rustamer (25.01.2020 в 17:54):
Использую постоянно для переключения между мониторами. Очень удобно быстро переключаться между ноутбуком и домашним компом. И вот сейчас возникла очевидная хотелка - переключение по горячим клавишам и через трей. В такой ситуации придется держать сабж в автозагрузке и делать интерфейс, но имхо оно того стоит. Можно конечно выкрутиться сторонними решениями  или написать свое, но просто как идея для развития.
Guest (23.01.2020 в 12:00):
Филип, спасибо за совет, у меня это работает, а вот из "полностью" выключенного состояния не выводится ни по set X d6 1 ни по set X d6 0, вероятно дежурное питание отключается правильно.
ManHunter (17.01.2020 в 14:23):
Версия 1.1. Добавлены описания для известных значений параметров. Добавлена проверка версии Windows, т.к. все функции доступны только в Vista и выше, выполнена оптимизация и сделаны прочие мелкие изменения.
Филип (16.01.2020 в 19:44):
По поводу коматозного состояния № 4 :)

Монитор из него выводится командой set X d6 1, где X - номер коматозного монитора :)

Что любопытно, из "полностью" выключенного состояния монитор выводится той же самой командой. Получается, он хоть и спит, но курей бачит :)
ManHunter (19.12.2019 в 23:30):
ЦитатаWould be possible to control more attached monitors at once?

Sorry, but simultaneous control for different monitors is very ambiguous. Use .BAT-files, for example:

Цитата@echo off
vesacom list
for /L %%i in (1,1,%errorlevel%) do vesacom set %%i 10 3c

Result for my system:

1 - Philips 240B7QPT (24 inch Wide LCD MONITOR) - 1920x1200
2 - Универсальный монитор PnP - 1920x1080
Philips 240B7QPT (24 inch Wide LCD MONITOR)
VCP code: 10h (Luminance, READ/WRITE)
Sets value: 3Ch, result: OK
Универсальный монитор PnP
VCP code: 10h (Luminance, READ/WRITE)
Sets value: 3Ch, result: OK
Ejs (19.12.2019 в 20:11):
Great program! Thanks much.
Would be possible to control more attached monitors at once?
for example:
vesacom.exe set * 10 3c
to control Luminance on both (or more) displays simultaneously?
Compiller (17.12.2019 в 00:23):
Ура!
Спасибо!

c:\TEMP\VESA>vesacom.exe set 2 60 01
LG L2000C(Digital)
VCP code: 60h (Input Source, READ/WRITE)
Available values: 01h, 03h
Sets value: 01h, result: OK

c:\TEMP\VESA>vesacom.exe set 1 60 03
LG L2000C(Analog)
VCP code: 60h (Input Source, READ/WRITE)
Available values: 01h, 03h
Sets value: 03h, result: OK
Входы переключаются.
Для дебага можно пивот от LG поковырять.
forteManager_v318
на сайте LG выгугливается - хотя оно и древнее, или EntechTaiwan MonitorInfoTool
АндрейК (12.12.2019 в 15:36):
Я просто привёл цифры. Возможно они кому-то пригодятся, а кому-то бесполезны.

Выбирая комфорт для глаз ориентируюсь по ощущениям (ориентируюсь на удобство чтения мелких деталей в первую очередь). Видел как некоторые принципиально выкручивают "яркость" на максимум. Их глаза, их право, возможно им так удобнее.
ManHunter (11.12.2019 в 10:38):
Если выбирать между комфортом для глаз и копейками, то я выберу глаза.
АндрейК (11.12.2019 в 10:08):
Извините что влезаю в софтовую тему, но
Возможно кому-то будет интересно узнать о энергопотреблении "обычного монитора" (на примере PHILIPS 23" с IPS матрицей. Цифры верны для конкретного монитора, но весьма схожи с аналогичными)

Практически только "Яркость" влияет на энергопотребление и влияет так:
  0% -  8,0 Вт
50% - 14,9 Вт
100% - 21,6 Вт
зависимость линейная, потому только три значении.
Изменение значения "контраст" практически не влияет на энергопотребление либо разница не превышает +/- 0,1 Вт.

В режим "ожидания" ~ 0,3 Вт.

Немного бухгалтерии. За год "нагорит", при цене 1 кВт/час в 5 рублей
В режим "ожидания" - 0,50 руб.
При яркости 0% - 8*365*24/1000*5 = 350,4 руб.
При яркости 100% - 21,6*365*24/1000*5 = 946,08 руб.
АндрейК (11.12.2019 в 09:18):
Весьма полезная утилита. Спасибо.
ManHunter (09.12.2019 в 21:32):
На работе сервера крутятся под CentOS, так что волей-неволей приходится понемногу разбираться. Каждому свое, мне привычнее винда, Linux на десктопе не практикую.
u-b0at (09.12.2019 в 20:53):
О! Спасибо за линк)
Кстати, а как лично Вы оцениваете "ось" Linux? Работали с ней? Ваше мнение?
ManHunter (09.12.2019 в 14:23):
Я не пишу под Linux. Тем более под него уже все написано: https://habr.com/ru/post/94990/
u-b0at (09.12.2019 в 14:23):
Версии для Linux будут?

Добавить комментарий

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.06 сек. / MySQL: 2 (0.0018 сек.) / Память: 4.5 Mb
Наверх