10

Ну, я просто хотел ответить на этот вопрос да / нет по электронной почте Dell. Их веб-сайт требовал сервисный код только для отправки по электронной почте. Тогда я попробовал их "техническую" поддержку в чате. Какой-то индус ответил странным образом и, наконец, ответил, что у него / нее нет технических знаний, и просто дал мне ссылку на поддержку по электронной почте (которую я уже пробовал).

У меня есть монитор Dell U2412M, который имеет порт DisplayPort и USB-порт восходящего соединения. Я включил DDC/CI в экранном меню. Я использую Windows 8, и управление яркостью на панели Charm отключено.

Возможно ли это включить? Потому что я слышал, что DDC/CI позволяет вашему компьютеру управлять вашим дисплеем.

Стандарт DDC/CI (Command Interface) был введен в августе 1998 года. Он определяет средство для компьютера, чтобы отправлять команды на монитор, а также получать данные датчика с монитора по двунаправленной линии связи. Конкретные команды для управления мониторами определены в отдельной стандартной версии 1.0 набора команд управления мониторами (MCCS), выпущенной в сентябре 1998 года. Мониторы DDC/CI иногда поставляются с внешним цветным датчиком для автоматической калибровки цветового баланса монитора. Некоторые наклонные мониторы DDC/CI поддерживают функцию автоматического поворота, при которой датчик вращения на мониторе позволяет операционной системе держать дисплей в вертикальном положении при перемещении монитора между его портретным и альбомным положениями. Большинство мониторов DDC/CI поддерживают только небольшое подмножество команд MCCS, а некоторые имеют недокументированные команды. В прошлом многие производители не обращали внимания на DDC/CI, но сейчас почти все мониторы поддерживают такие общие команды MCCS, как управление яркостью и контрастностью.

4 ответа4

6

У меня Dell U2515H, подключенный через HDMI к карте nVidia.

Я попробовал softMCCS, и он работал нормально. Мне удалось отрегулировать яркость подсветки с помощью программного обеспечения.

Это контрольные коды, которые этот монитор, по-видимому, поддерживает:

New control value
Restore factory defaults
Restore luminance/contrast defaults
Restore color defaults
Luminance
Contrast
Select color preset
Red video gain
Green video gain
Blue video gain
Active control
Input source
Screen orientation
Horizontal frequency
Vertical frequency
Panel sub-pixel layout
Display technology type
Application enable key
Display controller type
Display firmware level
Power mode
Display application
VCP version
Manufacturer specific - 0xE0
Manufacturer specific - 0xE1
Manufacturer specific - 0xE2
Manufacturer specific - 0xF0
Manufacturer specific - 0xF1
Manufacturer specific - 0xF2
Manufacturer specific - 0xFD

Я также оценил несколько других инструментов:

  • Диммер - не тускнеет подсветка. Использует поддельное программное обеспечение затемнения.
  • ScreenBright - очевидно использует DDC/CI для управления подсветкой, но был удален с сайта автора. Я не пытался загрузить его с одного из этих хитрых зеркал.
  • Redshift - подделывает его как диммер.

Изменить: Оказывается, есть простой в использовании API для настройки яркости экрана в Windows. Вот пример кода:

Monitor.h

#pragma once

#include <physicalmonitorenumerationapi.h>
#include <highlevelmonitorconfigurationapi.h>

#include <vector>

class Monitor
{
public:
    explicit Monitor(PHYSICAL_MONITOR pm);
    ~Monitor();

    bool brightnessSupported() const;

    int minimumBrightness() const;
    int maximumBrightness() const;
    int currentBrightness() const;

    void setCurrentBrightness(int b);
    // Set brightness from 0.0-1.0
    void setCurrentBrightnessFraction(double fraction);

private:
    bool mBrightnessSupported = false;

    int mMinimumBrightness = 0;
    int mMaximumBrightness = 0;
    int mCurrentBrightness = 0;
    PHYSICAL_MONITOR mPhysicalMonitor;
};

std::vector<Monitor> EnumerateMonitors();

Monitor.cpp

#include "stdafx.h"
#include "Monitor.h"

Monitor::Monitor(PHYSICAL_MONITOR pm) : mPhysicalMonitor(pm)
{
    DWORD dwMonitorCapabilities = 0;
    DWORD dwSupportedColorTemperatures = 0;
    BOOL bSuccess = GetMonitorCapabilities(mPhysicalMonitor.hPhysicalMonitor, &dwMonitorCapabilities, &dwSupportedColorTemperatures);

    if (bSuccess)
    {
        if (dwMonitorCapabilities & MC_CAPS_BRIGHTNESS)
        {
            // Get min and max brightness.
            DWORD dwMinimumBrightness = 0;
            DWORD dwMaximumBrightness = 0;
            DWORD dwCurrentBrightness = 0;
            bSuccess = GetMonitorBrightness(mPhysicalMonitor.hPhysicalMonitor, &dwMinimumBrightness, &dwCurrentBrightness, &dwMaximumBrightness);
            if (bSuccess)
            {
                mBrightnessSupported = true;
                mMinimumBrightness = dwMinimumBrightness;
                mMaximumBrightness = dwMaximumBrightness;
            }
        }
    }
}

Monitor::~Monitor()
{
}

bool Monitor::brightnessSupported() const
{
    return mBrightnessSupported;
}

int Monitor::minimumBrightness() const
{
    return mMinimumBrightness;
}

int Monitor::maximumBrightness() const
{
    return mMaximumBrightness;
}

int Monitor::currentBrightness() const
{
    if (!mBrightnessSupported)
        return -1;

    DWORD dwMinimumBrightness = 0;
    DWORD dwMaximumBrightness = 100;
    DWORD dwCurrentBrightness = 0;
    BOOL bSuccess = GetMonitorBrightness(mPhysicalMonitor.hPhysicalMonitor, &dwMinimumBrightness, &dwCurrentBrightness, &dwMaximumBrightness);
    if (bSuccess)
    {
        return dwCurrentBrightness;
    }
    return -1;
}

void Monitor::setCurrentBrightness(int b)
{
    if (!mBrightnessSupported)
        return;

    SetMonitorBrightness(mPhysicalMonitor.hPhysicalMonitor, b);
}

void Monitor::setCurrentBrightnessFraction(double fraction)
{
    if (!mBrightnessSupported)
        return;
    if (mMinimumBrightness >= mMaximumBrightness)
        return;
    setCurrentBrightness((mMaximumBrightness - mMinimumBrightness) * fraction + mMinimumBrightness);
}


BOOL CALLBACK MonitorEnumCallback(_In_ HMONITOR hMonitor, _In_ HDC hdcMonitor, _In_ LPRECT lprcMonitor, _In_ LPARAM dwData)
{
    std::vector<Monitor>* monitors = reinterpret_cast<std::vector<Monitor>*>(dwData);

    // Get the number of physical monitors.
    DWORD cPhysicalMonitors;
    BOOL bSuccess = GetNumberOfPhysicalMonitorsFromHMONITOR(hMonitor, &cPhysicalMonitors);

    LPPHYSICAL_MONITOR pPhysicalMonitors = NULL;
    if (bSuccess)
    {
        // Allocate the array of PHYSICAL_MONITOR structures.
        LPPHYSICAL_MONITOR pPhysicalMonitors = new PHYSICAL_MONITOR[cPhysicalMonitors];

        if (pPhysicalMonitors != NULL)
        {
            // Get the array.
            bSuccess = GetPhysicalMonitorsFromHMONITOR(hMonitor, cPhysicalMonitors, pPhysicalMonitors);

            // Use the monitor handles.
            for (unsigned int i = 0; i < cPhysicalMonitors; ++i)
            {
                monitors->push_back(Monitor(pPhysicalMonitors[i]));
            }
        }
    }
    // Return true to continue enumeration.
    return TRUE;
}

std::vector<Monitor> EnumerateMonitors()
{
    std::vector<Monitor> monitors;
    EnumDisplayMonitors(NULL, NULL, MonitorEnumCallback, reinterpret_cast<LPARAM>(&monitors));
    return monitors;
}

Используйте очевидным образом.

4

Смотрите страницу DDC в Википедии :

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

2

Можно управлять настройками прошивки и конфигурацией мониторов, поддерживающих DDC/CI.

Dell предоставляет специальное программное обеспечение под названием Dell Display Manager, разработанное EnTech Taiwan, для использования с их мониторами. В первую очередь это утилита, основанная на графическом интерфейсе, но обладающая довольно широкими возможностями командной строки. Текущая версия совместима с Windows Vista - Windows 10. Он может работать с дисплеями других производителей, но это не было подтверждено.

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


Диспетчер дисплея Dell

Ниже информация взята из програмы О информации и части файла Readme.txt подсветки синтаксиса командной строки.

Около

Диспетчер дисплея Dell
Версия 1.27.0.1792
Copyright (c) 2007-2016, EnTech Тайвань.

Лицензировано для Dell Inc.

Веб-сайт: http://www.entechtaiwan.com
Электронная почта: dell.support@entechtaiwan.com

Командный язык

Богатый и гибкий язык команд поддерживается через командную строку, и аргументы командной строки могут быть объединены. Там, где это уместно, можно настроить отображение конкретного дисплея, предварительно указав в команде номер дисплея, например, 2:AutoSetup ; если номер дисплея не указан, команда будет применена к текущему выбранному дисплею или ко всем дисплеям, в зависимости от ситуации. Команды включают в себя:

SetActiveInput [DVI2/HDMI/DP2,etc] - переключает активный вход
RestoreFactoryDefaults - восстанавливает заводские настройки по умолчанию *
AutoSetup - выполняет автоматическую настройку (только аналог)*
RestoreLevelDefaults - восстанавливает уровни по умолчанию *
RestoreColorDefaults - восстанавливает настройки цвета по умолчанию *
SetBrightnessLevel X - устанавливает яркость на X% (0-100)*
SetContrastLevel X - устанавливает контраст в X% (0-100)*
SetNamedPreset [Movie/CAL1,etc] - изменяет режим пресетов *
SetPowerMode [on/off] - устанавливает режим питания дисплея *
SetOptimalResolution - переключается на оптимальное разрешение
SaveProfile [Name] - сохранить настройки в именованный профиль *
RestoreProfile [Name] - восстановить настройки из именованного профиля *
DeleteProfile [Name] - удалить именованный профиль
SetGridType [X] - изменяет тип сетки Easy Arrange на X
Rescan - повторно сканирует оборудование дисплея
ForceReset - переподключение и повторное сканирование оборудования дисплея
SetControl X Y - устанавливает шестнадцатеричный элемент управления X в шестнадцатеричное значение Y
IncControl X Y - увеличивает значение элемента управления X на Y
DecControl X Y - уменьшает значение элемента управления X на Y
Wait X - пауза X миллисекунд
Exit - завершает программу

Некоторые из этих команд требуют знакомства со стандартом MCCS. Например, на мониторах, которые его поддерживают, команда переключения языка экранного меню на испанский была бы SetControl CC 0A ; разблокировать экранное меню, которое было случайно заблокировано SetControl CA 02 .

Инструкции могут быть объединены в командной строке и назначены стандартным ярлыкам Windows с дополнительными горячими клавишами. Например:

ddm.exe /RestoreLevelDefaults /2:SetContrastLevel 70

сначала восстановит значения по умолчанию для всех мониторов, а затем установит уровень контрастности на мониторе № 2 на 70%.

Примечание . Если команды не предназначены для конкретного монитора, перечисленные выше команды, помеченные звездочкой (*), применяются ко всем мониторам, чтобы упростить простой и равномерный контроль над всеми элементами матрицы с несколькими мониторами. Например, если выполняется на матрице из 16 одинаковых мониторов, командная строка:

ddm.exe /SetNamedPreset Warm /SetBrightnessLevel 75

установил бы все 16 мониторов в режим предустановок Warm с уровнем яркости 75%.

1

Я использую программу "mControl", которая хорошо работает для меня - мой монитор Dell U2312HM:

mControl превращает один и несколько мониторов в интеллектуальные программируемые устройства, которые динамически меняют ориентацию, сохраняют мощность, переключают цветовые профили и регулируют яркость, устраняя необходимость в изучении и навигации по непонятным меню с помощью архаичных кнопок на самом дисплее.

Чтобы загрузить эту программу, вам нужно найти раздел "Утилиты графики и монитора" в нижней половине страницы http://www.ddc-ci.com/ и нажать ссылку "mControl" в нижней части этого раздела.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .