Ist es möglich, die Software-Helligkeitssteuerung auf Dell U2412M zu aktivieren?


13

Nun, ich wollte nur diese einfache Ja / Nein-Frage an den Dell E-Mail-Support. Für ihre Website war ein Servicecode erforderlich, um eine E-Mail zu senden. Dann habe ich ihren "technischen" Chat-Support ausprobiert. Eine indische Person antwortete seltsam und antwortete schließlich, dass sie kein technisches Wissen habe und gab mir nur den Link zum E-Mail-Support (den ich bereits ausprobiert habe).

Ich habe einen Dell U2412M-Monitor mit einem DisplayPort und einem Uplink-USB-Anschluss. Ich habe DDC / CI im OSD aktiviert. Ich verwende Windows 8 und die Helligkeitssteuerung in der Charm-Leiste ist deaktiviert.

Ist es möglich, es zu aktivieren? Weil ich gehört habe, dass mit DDC / CI Ihr Computer Ihr Display steuern kann.

Der DDC / CI-Standard (Command Interface) wurde im August 1998 eingeführt. Er gibt ein Mittel an, mit dem ein Computer Befehle an den Monitor senden und Sensordaten vom Monitor über eine bidirektionale Verbindung empfangen kann. Spezifische Befehle zur Steuerung von Monitoren werden in einem separaten MCCS-Standard (Monitor Control Command Set), Version 1.0, definiert, der im September 1998 veröffentlicht wurde. DDC / CI-Monitore werden manchmal mit einem externen Farbsensor geliefert, um die automatische Kalibrierung der Farbbalance des Monitors zu ermöglichen. Einige kippbare DDC / CI-Monitore unterstützen eine Auto-Pivot-Funktion, bei der ein Rotationssensor im Monitor es dem Betriebssystem ermöglicht, die Anzeige aufrecht zu halten, wenn der Monitor zwischen Hoch- und Querformat bewegt wird. Die meisten DDC / CI-Monitore unterstützen nur eine kleine Teilmenge der MCCS-Befehle, und einige verfügen über undokumentierte Befehle.Helligkeits- und Kontrastmanagement.


Für Linux überprüfen Sie ddcutil.com
cwd

Antworten:



6

Ich habe einen Dell U2515H, der über HDMI mit einer nVidia-Karte verbunden ist.

Ich habe softMCCS ausprobiert und es hat gut funktioniert. Ich konnte die Helligkeit der Hintergrundbeleuchtung über die Software anpassen.

Dies sind die Steuercodes, die dieser Monitor anscheinend unterstützt:

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

Ich habe auch einige andere Tools evaluiert:

  • Dimmer - Dimmt die Hintergrundbeleuchtung nicht ab. Verwendet gefälschtes Software-Dimmen.
  • ScreenBright - Verwendet anscheinend DDC / CI, um die Hintergrundbeleuchtung zu steuern, wurde jedoch von der Website des Autors entfernt. Ich habe nicht versucht, es von einer dieser zwielichtigen Spiegelseiten herunterzuladen.
  • Rotverschiebung - Fälscht es wie Dimmer.

Bearbeiten: Es stellt sich heraus, dass es eine einfach zu verwendende API zum Einstellen der Bildschirmhelligkeit in Windows gibt. Hier ist ein Beispielcode:

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

Auf offensichtliche Weise verwenden.


funktioniert auf meinem Philips BDM4065UC auf DisplayPort mit softMCCS und freut sich sehr darüber, danke !!!!
Avlin

4

Es ist möglich, die Firmware-Einstellungen und die Konfiguration von Monitoren zu steuern, die DDC / CI unterstützen.

Dell bietet eine von EnTech Taiwan entwickelte Software mit dem Namen Dell Display Manager zur Verwendung mit seinen Monitoren an. Es ist in erster Linie ein GUI-basiertes Dienstprogramm, bietet jedoch eine ziemlich umfassende Befehlszeilenfunktion. Die aktuelle Version ist mit Windows Vista - Windows 10 kompatibel. Sie funktioniert möglicherweise mit Displays anderer Hersteller, dies wurde jedoch nicht bestätigt.

Die neueste Version der Software kann direkt von der offiziellen Website heruntergeladen werden .


Dell Display Manager

Die folgenden Informationen werden aus dem Programm der exzerpiert Über info und ein Teil der Readme.txt Befehlszeilensyntax - Datei markieren.

Über

Dell Display Manager
Version 1.27.0.1792
Copyright (c) 2007-2016, EnTech Taiwan.

Lizenziert an Dell Inc.

Website: http://www.entechtaiwan.com
E-Mail: dell.support@entechtaiwan.com

Befehlssprache

Über die Befehlszeile wird eine umfangreiche und flexible Befehlssprache unterstützt, und Befehlszeilenargumente können kombiniert werden. Gegebenenfalls kann eine bestimmte Anzeige als Ziel ausgewählt werden, indem dem Befehl die Anzeigenummer vorangestellt wird, z 2:AutoSetup. Wenn keine Anzeigenummer angegeben ist, wird der Befehl auf die aktuell ausgewählte Anzeige oder auf alle Anzeigen angewendet. Zu den Befehlen gehören:

SetActiveInput [DVI2/HDMI/DP2,etc]- schaltet den aktiven Eingang um
RestoreFactoryDefaults- stellt die Werkseinstellungen wieder her *
AutoSetup- führt eine automatische Einrichtung durch (nur analog) *
RestoreLevelDefaults- stellt die Standardeinstellungen wieder her *
RestoreColorDefaults- stellt die Farbstandards wieder her *
SetBrightnessLevel X- stellt die Helligkeit auf X% (0-100) ein *
SetContrastLevel X- stellt den Kontrast auf X% (0-100) ein ) *
SetNamedPreset [Movie/CAL1,etc]- Ändert den voreingestellten Modus *
SetPowerMode [on/off]- Stellt den Anzeigeleistungsmodus ein * - Schaltet
SetOptimalResolutionauf die optimale Auflösung um
SaveProfile [Name]- Speichern von Einstellungen im benannten Profil *
RestoreProfile [Name]- Wiederherstellen von Einstellungen aus dem benannten Profil *
DeleteProfile [Name]- Löschen des benannten Profils
SetGridType [X]- Ändern des Easy Arrange-
RescanRastertyps in X - Erneutes Scannen der Anzeigehardware
ForceReset- Verbindet die Anzeigehardware wieder und scannt sie erneut - Setzt die
SetControl X YHex-Steuerung X auf den Hex-Wert Y
IncControl X Y- Erhöht den Wert der Steuerung X um Y.
DecControl X Y- verringert den Wert der Steuerung X um Y
Wait X- Pause X Millisekunden
Exit- beendet das Programm

Einige dieser Befehle erfordern Kenntnisse des MCCS-Standards. Auf Monitoren, die dies unterstützen, lautet der Befehl zum Umschalten der OSD-Sprache auf Spanisch SetControl CC 0A. um ein versehentlich gesperrtes OSD zu entsperren SetControl CA 02.

Anweisungen können in der Befehlszeile kombiniert und Standard-Windows-Verknüpfungen mit optionalen Hotkeys zugewiesen werden. Zum Beispiel:

ddm.exe /RestoreLevelDefaults /2:SetContrastLevel 70

würde zuerst die Standardeinstellungen für den Pegel auf allen Monitoren wiederherstellen und dann den Kontrastpegel für Monitor Nr. 2 auf 70% einstellen.

Hinweis : Wenn die oben mit einem Sternchen (*) gekennzeichneten Befehle nicht auf einen bestimmten Monitor ausgerichtet sind, gelten sie für alle Monitore, um eine einfache und einheitliche Steuerung aller Mitglieder einer Matrix mit mehreren Monitoren zu ermöglichen. Wenn Sie beispielsweise auf einer Matrix von 16 identischen Monitoren ausgeführt werden, wird die Befehlszeile:

ddm.exe /SetNamedPreset Warm /SetBrightnessLevel 75

würde alle 16 Monitore auf den Warm-Preset-Modus mit einer Helligkeitsstufe von 75% einstellen.


Der Kontrast kann nicht unter 25% liegen
Nakilon

1

Ich habe das Programm "mControl" verwendet, das für mich gut funktioniert. Mein Monitor ist Dell U2312HM:

mControl verwandelt einzelne und mehrere Monitor-Arrays in intelligente programmierbare Geräte, die die Ausrichtung dynamisch ändern, Strom sparen, Farbprofile wechseln und die Helligkeit anpassen, sodass Sie nicht mehr mit archaischen Schaltflächen auf dem Display durch dunkle Menüs lernen und navigieren müssen.

Um dieses Programm herunterzuladen, müssen Sie den Abschnitt "Grafik- und Monitor-Dienstprogramme" in der unteren Hälfte der Seite http://www.ddc-ci.com/ finden und unten in diesem Abschnitt auf den Link "mControl" klicken.


0

Ich verwende dieses Autohotkey-Skript, das von diesem reddit-Beitrag inspiriert wurde , um die entsprechenden MCCS-Befehle zu senden. Funktioniert wie ein Zauber auf meinem Dell U2718Q unter 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)
} 
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.