Чи можна включити програмне керування яскравістю на Dell U2412M


13

Ну, я просто хотів, щоб це / не просте запитання до служби підтримки електронної пошти Dell. Їх веб-сайт вимагав код послуги лише для надсилання електронної пошти. Тоді я спробував їхню "технічну" підтримку в чаті. Якийсь індійський чоловік відповів дивно і нарешті відповів, що не має технічних знань, і просто дав мені посилання на підтримку електронної пошти (що я вже намагався).

У мене є монітор Dell U2412M, на якому є DisplayPort та USB-порт для висхідної лінії зв'язку. Увімкнено DDC / CI в екрані. Я використовую Windows 8, і контроль яскравості на панелі шарму вимкнено.

Чи можна це ввімкнути? Тому що я чув, що DDC / CI дозволяє вашому комп'ютеру керувати вашим дисплеєм.

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


Для перевірки Linux Linux ddcutil.com
cwd

Відповіді:


5

Дивіться сторінку DDC у Вікіпедії :

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


Дякую. Я спробував screenwhite.com/screenbright , і це спрацювало. Хоча GUI трохи незграбний ...
Чортові овочі

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 - підробляє це як Діммер.

Редагувати: виявляється, що для налаштування яскравості екрана в Windows простий у використанні API. Ось приклад коду:

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;
}

Використовуйте очевидним чином.


працює на моєму Philips BDM4065UC на DisplayPort, використовуючи softMCCS і дуже радий за це, дякую !!!!
Авлін

4

Можна керувати налаштуваннями мікропрограмного забезпечення та конфігурацією моніторів, які підтримують DDC / CI.

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

Останню версію програмного забезпечення можна завантажити безпосередньо з офіційного веб-сайту .


Диспетчер дисплеїв Dell

Нижче інформації взято з програми Про інформації та частини Readme.txt розмальовки файлів синтаксису командного рядка.

Про

Dell Display Manager
версії 1.27.0.1792
Авторські права (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]- зміна типу «
RescanСільтурний упорядкування» на X - перестановка обладнання для відображення
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 моніторів у теплий попередньо встановлений режим, із рівнем яскравості 75%.


Неможливо зробити контраст нижче 25%
Накілон

1

Я використовую програму "mControl", яка добре працює для мене - мій монітор - Dell U2312HM:

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

Щоб завантажити цю програму, вам потрібно знайти розділ "Утиліти графіки та монітора" в нижній половині сторінки http://www.ddc-ci.com/ і натисніть на посилання "mControl" внизу цього розділу.


0

Я використовую цей сценарій автоматичної клавіші, натхненний цією публікацією reddit для надсилання відповідних команд MCCS. Працює як шарм на моєму Dell U2718Q під Win10:

^!-::
    changeMonitorBrightness(-10)
return

^!=::
    changeMonitorBrightness(10)

getMonitorHandle()
{
  MouseGetPos, xpos, ypos
  point := ( ( xpos ) & 0xFFFFFFFF ) | ( ( ypos ) << 32 )
  ; Initialize Monitor handle
  hMon := DllCall("MonitorFromPoint"
    , "int64", point ; point on monitor
    , "uint", 1) ; flag to return primary monitor on failure

  ; Get Physical Monitor from handle
  VarSetCapacity(Physical_Monitor, 8 + 256, 0)

  DllCall("dxva2\GetPhysicalMonitorsFromHMONITOR"
    , "int", hMon   ; monitor handle
    , "uint", 1   ; monitor array size
    , "int", &Physical_Monitor)   ; point to array with monitor

  return hPhysMon := NumGet(Physical_Monitor)
}

destroyMonitorHandle(handle)
{
  DllCall("dxva2\DestroyPhysicalMonitor", "int", handle)
}


changeMonitorBrightness(delta)
{
  vcpLuminance := 0x10

  handle := getMonitorHandle()

  DllCall("dxva2\GetVCPFeatureAndVCPFeatureReply"
    , "int", handle
    , "char", vcpLuminance
    , "Ptr", 0
    , "uint*", luminance
    , "uint*", maximumValue)

  luminance += delta

  if (luminance > 100) 
  {
  luminance := 100
  }
  else if (luminance < 0)
  {
  luminance := 0
  }

  DllCall("dxva2\SetVCPFeature"
    , "int", handle
    , "char", vcpLuminance
    , "uint", luminance)
  destroyMonitorHandle(handle)
} 
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.