Dell U2412M에서 소프트웨어 밝기 제어를 활성화 할 수 있습니까


13

Dell 전자 메일 지원에 대한 예 / 아니요 간단한 질문이 필요했습니다. 그들의 웹 사이트는 이메일을 보내기 위해 서비스 코드가 필요했습니다. 그런 다음 "기술적 인"채팅 지원을 시도했습니다. 일부 인도인은 이상하게 응답하여 기술 지식이 없으며 전자 메일 지원 (이미 시도)에 대한 링크 만 제공했다고 대답했습니다.

DisplayPort 및 업 링크 USB 포트가있는 Dell U2412M 모니터가 있습니다. OSD에서 DDC / CI를 활성화했습니다. Windows 8을 사용하고 있으며 참 바의 밝기 조절이 비활성화되어 있습니다.

활성화 할 수 있습니까? DDC / CI를 통해 컴퓨터에서 디스플레이를 제어 할 수 있다고 들었습니다.

DDC / CI (명령 인터페이스) 표준은 1998 년 8 월에 도입되었습니다.이 명령은 컴퓨터가 양방향 링크를 통해 모니터로 센서 데이터를 수신 할뿐만 아니라 모니터로 명령을 전송하는 수단을 지정합니다. 모니터를 제어하기위한 특정 명령은 1998 년 9 월에 릴리스 된 별도의 MCCS (Monitor Control Command Set) 표준 버전 1.0에 정의되어 있습니다. DDC / CI 모니터에는 때때로 모니터의 색상 균형을 자동으로 교정 할 수 있도록 외부 컬러 센서가 제공됩니다. 일부 틸팅 DDC / CI 모니터는 자동 피벗 기능을 지원합니다. 모니터의 회전 센서를 사용하면 모니터가 세로 및 가로 위치 사이에서 움직일 때 운영 체제가 디스플레이를 똑바로 유지할 수 있습니다. 대부분의 DDC / CI 모니터는 MCCS 명령의 작은 하위 집합 만 지원하며 일부는 문서화되지 않은 명령이 있습니다.밝기 및 대비 관리.


리눅스의 경우 ddcutil.com을
cwd

답변:



6

HDMI를 통해 nVidia 카드에 연결된 Dell U2515H가 있습니다.

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를 사용하지만 저자의 웹 사이트에서 제거되었습니다. 나는 그 독창적 인 거울 사이트 중 하나에서 다운로드를 시도하지 않았습니다.
  • 레드 시프트-디머처럼 가짜.

편집 : 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;
}

확실한 방법으로 사용하십시오.


softMCCS를 사용하여 DisplayPort의 필립스 BDM4065UC에서 작동하며 정말 감사합니다 !!!!
Avlin

4

DDC / CI를 지원하는 모니터의 펌웨어 설정 및 구성을 제어 할 수 있습니다.

Dell은 모니터와 함께 사용할 수 있도록 EnTech Taiwan에서 설계 한 Dell Display Manager 라는 사용자 지정 브랜드 소프트웨어를 제공 합니다. 주로 GUI 기반 유틸리티이지만 상당히 포괄적 인 명령 줄 기능을 제공합니다. 현재 버전은 Windows Vista-Windows 10과 호환됩니다. 다른 공급 업체의 디스플레이와 작동 할 수 있지만 확인되지 않았습니다.

최신 버전의 소프트웨어는 공식 웹 사이트 에서 직접 다운로드 할 수 있습니다 .


Dell 디스플레이 관리자

아래 정보는 프로그램의 정보 정보 및 명령 줄 구문을 강조 하는 Readme.txt 파일의 일부 에서 발췌 한 것 입니다.

Dell Display Manager
버전 1.27.0.1792
저작권 (c) 2007-2016, EnTech Taiwan.

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]-그리드 유형을 X로 변경
Rescan-디스플레이 하드웨어 재검색
ForceReset-디스플레이 하드웨어를 다시 연결하고 다시 스캔-16
SetControl X Y진 제어 X를 16 진 값 Y로 설정-제어 X의 값을 Y
IncControl X Y만큼 증가시킵니다.
DecControl X Y-제어 X의 값을 Y만큼 감소
Wait X-일시 정지 X 밀리 초
Exit-프로그램 종료

이러한 명령 중 일부는 MCCS 표준에 익숙해야합니다. 예를 들어,이를 지원하는 모니터에서 OSD 언어를 스페인어로 전환하는 명령은 SetControl CC 0A; 실수로 잠긴 OSD를 잠금 해제합니다 SetControl CA 02.

명령 줄에서 지침을 결합하고 옵션 단축키를 사용하여 표준 Windows 바로 가기에 할당 할 수 있습니다. 예를 들면 다음과 같습니다.

ddm.exe /RestoreLevelDefaults /2:SetContrastLevel 70

먼저 모든 모니터에서 수준 기본값을 복원 한 다음 모니터 # 2의 대비 수준을 70 %로 설정합니다.

참고 : 특정 모니터를 대상으로하지 않는 경우 별표 (*)로 표시된 위에 나열된 명령은 모든 모니터에 적용되어 다중 모니터 매트릭스의 모든 멤버를 간단하고 균일하게 제어 할 수 있습니다. 예를 들어 16 개의 동일한 모니터 매트릭스에서 실행되는 경우 명령 행은 다음과 같습니다.

ddm.exe /SetNamedPreset Warm /SetBrightnessLevel 75

16 개의 모니터를 모두 밝기 사전 설정 모드로 설정하고 밝기 수준은 75 %입니다.


대비를 25 % 미만으로 낮출 수 없음
Nakilon

1

모니터는 Dell U2312HM입니다. "mControl"프로그램을 사용하고 있습니다.

mControl은 단일 및 다중 모니터 어레이를 동적으로 방향을 바꾸고, 전력을 보존하고, 색상 프로파일을 전환하고, 밝기를 조정하는 지능형 프로그램 가능 장치로 전환하여 디스플레이 자체의 구식 버튼을 사용하여 모호한 메뉴를 통해 배우고 탐색 할 필요가 없습니다.

이 프로그램을 다운로드하려면 http://www.ddc-ci.com/ 페이지 하단에서 "Graphics and Monitor Utilities"섹션을 찾아 해당 섹션 하단의 "mControl"링크를 클릭하십시오.


0

이 자동 핫키 스크립트를 사용하여이 reddit 게시물 에서 영감을 얻어 적절한 MCCS 명령을 보냅니다. Win10에서 Dell U2718Q의 매력처럼 작동합니다.

^!-::
    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)
} 
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.