Dell U2412M'de yazılım parlaklık kontrolünü etkinleştirmek mümkün mü


13

Dell e-posta desteğine bu evet / hayır basit sorusunu sormak istedim. Web sitelerinde sadece e-posta göndermek için servis kodu gerekiyordu. Sonra onların "teknik" sohbet desteğini denedim. Bazı Hintli kişi garip bir şekilde cevap verdi ve sonunda teknik bilgiye sahip olmadığını ve sadece bana (zaten denedim) e-posta desteğinin bağlantısını verdi.

DisplayPort ve up-link USB bağlantı noktasına sahip bir Dell U2412M monitörüm var. OSD'de DDC / CI'yi etkinleştirdim. Windows 8 kullanıyorum ve Cazibe Çubuğundaki parlaklık kontrolü devre dışı.

Etkinleştirmek mümkün mü? Çünkü DDC / CI'nın bilgisayarınızın ekranınızı kontrol etmesine izin verdiğini duydum.

DDC / CI (Komut Arabirimi) standardı Ağustos 1998'de tanıtıldı. Bir bilgisayarın monitöre komutlar göndermesi ve monitörden çift yönlü bir bağlantı üzerinden sensör verisi alması için bir yol belirler. Monitörleri kontrol etmek için özel komutlar, Eylül 1998'de piyasaya sürülen ayrı bir Monitör Kontrol Komut Seti (MCCS) standart sürüm 1.0'da tanımlanır. DDC / CI monitörler bazen monitörün renk dengesinin otomatik kalibrasyonuna izin vermek için harici bir renk sensörü ile birlikte verilir. Bazı eğimli DDC / CI monitörler, monitördeki bir döndürme sensörünün, işletim sistemi, monitör dikey ve yatay konumlar arasında hareket ederken ekranı dik tutmasını sağlayan otomatik pivot işlevini destekler. Çoğu DDC / CI monitörü MCCS komutlarının yalnızca küçük bir alt kümesini destekler ve bazılarında belgelenmemiş komutlar bulunur.parlaklık ve kontrast yönetimi.


Linux için kontrol ddcutil.com
cwd

Yanıtlar:



6

HDMI aracılığıyla nVidia kartına bağlı bir Dell U2515H'm var.

SoftMCCS'i denedim ve iyi çalıştı. Arka ışık parlaklığını yazılımdan ayarlayabildim.

Bu monitörlerin görünüşte desteklediği kontrol kodları şunlardır:

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

Birkaç başka aracı daha değerlendirdim:

  • Dimmer - Arka ışığı karartmaz. Sahte yazılım karartma kullanır.
  • ScreenBright - Görünüşe göre arka ışığı kontrol etmek için DDC / CI kullanıyor, ancak yazarın web sitesinden kaldırıldı. Bu tehlikeli ayna sitelerinden birinden indirmeyi denemedim.
  • Redshift - Dimmer gibi taklit ediyor.

Düzenle: Windows'ta ekran parlaklığını ayarlamak için kullanımı kolay bir API olduğu ortaya çıkıyor. İşte bazı örnek kod:

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

Açık bir şekilde kullanın.


softMCCS kullanarak DisplayPort üzerinde Philips BDM4065UC üzerinde çalışıyor ve bunun için gerçekten mutlu, teşekkürler !!!!
Avlin

4

DDC / CI destekleyen monitör yazılımı ayarlarını ve monitör yapılandırmasını kontrol etmek mümkündür.

Dell, monitörleriyle birlikte kullanılmak üzere EnTech Taiwan tarafından tasarlanan Dell Display Manager adında özel markalı bir yazılım sunar . Öncelikle GUI tabanlı bir yardımcı programdır, ancak oldukça kapsamlı bir komut satırı yeteneği sunar. Geçerli sürüm Windows Vista - Windows 10 ile uyumludur. Diğer satıcıların ekranlarıyla çalışabilir, ancak bu onaylanmamıştır.

Yazılımın en son sürümü doğrudan resmi web sitesinden indirilebilir .


Dell Ekran Yöneticisi

Aşağıdaki bilgiler, programın About ( Bilgi) bilgilerinden ve Readme.txt dosyasının komut satırı sözdizimini vurgulayan bir bölümünden alınmıştır .

hakkında

Dell Display Manager
Sürüm 1.27.0.1792
Telif Hakkı (c) 2007-2016, EnTech Tayvan.

Dell Inc. lisanslıdır.

Web sitesi: http://www.entechtaiwan.com
E-posta: dell.support@entechtaiwan.com

Komut Dili

Komut satırı üzerinden zengin ve esnek bir komut dili desteklenir ve komut satırı bağımsız değişkenleri birleştirilebilir. Uygun olduğunda, komutun ekran numarasıyla önceden ayarlanmasıyla belirli bir ekran hedeflenebilir, örn 2:AutoSetup.; bir ekran numarası belirtilmezse, komut seçili olan ekrana veya tüm ekranlara uygun şekilde uygulanır. Komutlar şunları içerir:

SetActiveInput [DVI2/HDMI/DP2,etc]- aktif girişi değiştirir
RestoreFactoryDefaults- fabrika varsayılanlarını geri yükler *
AutoSetup- otomatik kurulum yapar (yalnızca analog) *
RestoreLevelDefaults- seviye varsayılanlarını
RestoreColorDefaultsgeri yükler * - renk varsayılanlarını geri yükler *
SetBrightnessLevel X- parlaklığı% X olarak ayarlar (0-100) *
SetContrastLevel X- kontrastı % X (0-100) olarak ayarlar ) *
SetNamedPreset [Movie/CAL1,etc]- Ön ayar
SetPowerMode [on/off]modunu değiştirir *
SetOptimalResolution- ekran güç modunu ayarlar * - optimum çözünürlüğe geçer
SaveProfile [Name]- ayarları adlandırılmış profile
RestoreProfile [Name]kaydeder * - ayarları adlandırılmış profilden geri yükler *
DeleteProfile [Name]- adlandırılmış profili sil
SetGridType [X]- Kolay Izgara türünü X olarak değiştirir
Rescan- ekran donanımını yeniden tarar
ForceReset- ekran donanımını yeniden bağlar ve yeniden tarar
SetControl X Y- hex kontrol X'u hex değerine Y ayarlar - X kontrolünün değerini Y
IncControl X Yarttırır
DecControl X Y- X kontrolünün değerini Y kadar azaltır
Wait X- duraklatma X milisaniye
Exit- programı sonlandırır

Bu komutların bazıları için MCCS standardına aşina olmanız gerekir. Örneğin, bunu destekleyen monitörlerde, OSD dilini İspanyolca'ya değiştirme komutu SetControl CC 0A; yanlışlıkla kilitlenen bir OSD'nin kilidini açmak için SetControl CA 02.

Talimatlar komut satırında birleştirilebilir ve isteğe bağlı kısayol tuşlarıyla standart Windows kısayollarına atanabilir. Örneğin:

ddm.exe /RestoreLevelDefaults /2:SetContrastLevel 70

önce tüm monitörlerde düzey varsayılanlarını geri yükler ve ardından monitör # 2'deki kontrast düzeyini% 70'e ayarlar.

Not : Belirli bir monitörü hedeflemezseniz, yukarıda listelenen ve bir yıldız işaretiyle (*) etiketlenmiş komutlar, çok monitörlü bir matrisin tüm üyeleri üzerinde basit ve tekdüze kontrolü kolaylaştırmak için tüm monitörlere uygulanır. Örneğin, 16 özdeş monitörden oluşan bir matris üzerinde yürütülürse, komut satırı:

ddm.exe /SetNamedPreset Warm /SetBrightnessLevel 75

16 monitörün tamamını% 75 parlaklık seviyesiyle Sıcak ön ayar moduna geçirir.


% 25'ten daha düşük kontrast oluşturulamıyor
Nakilon

1

Benim için iyi çalışan "mControl" programını kullanıyorum - monitörüm Dell U2312HM:

mControl, tek ve çoklu monitör dizilerini, dinamik olarak yön değiştiren, gücü koruyan, renk profillerini değiştiren ve parlaklığı ayarlayan akıllı ekranlanabilir cihazlara dönüştürür ve ekranın üzerindeki arkaik düğmeleri kullanarak belirsiz menülerde öğrenme ve gezinme ihtiyacını ortadan kaldırır.

Bu programı indirmek için http://www.ddc-ci.com/ sayfasının alt yarısında "Grafik ve Monitör Yardımcı Programları" bölümünü bulmalı ve o bölümün altındaki "mControl" bağlantısını tıklamalısınız.


0

Uygun MCCS komutlarını göndermek için bu reddit gönderisinden esinlenilen bu otomatik anahtar komut dosyasını kullanıyorum . Win10 altındaki Dell U2718Q cihazımda bir cazibe gibi çalışır:

^!-::
    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)
} 
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.