Est-il possible d'activer le contrôle de la luminosité du logiciel sur Dell U2412M


13

Eh bien, je voulais juste cette question simple oui / non au support par e-mail Dell. Leur site Web exigeait un code de service juste pour envoyer un e-mail. Ensuite, j'ai essayé leur support de chat "technique". Un Indien a répondu bizarrement et a finalement répondu qu'il n'avait pas de connaissances techniques et m'a simplement donné le lien vers le support par e-mail (que j'ai déjà essayé).

J'ai un moniteur Dell U2412M qui a un DisplayPort et un port USB de liaison montante. J'ai activé DDC / CI dans l'OSD. J'utilise Windows 8 et le contrôle de la luminosité sur la barre de charme est désactivé.

Est-il possible de l'activer? Parce que j'ai entendu dire que DDC / CI permet à votre ordinateur de contrôler votre écran.

La norme DDC / CI (Command Interface) a été introduite en août 1998. Elle spécifie un moyen pour un ordinateur d'envoyer des commandes au moniteur, ainsi que de recevoir des données de capteur du moniteur, via une liaison bidirectionnelle. Des commandes spécifiques pour contrôler les moniteurs sont définies dans une version standard 1.0 du MCCS (Monitor Control Command Set), publiée en septembre 1998. Les moniteurs DDC / CI sont parfois fournis avec un capteur de couleur externe pour permettre un étalonnage automatique de la balance des couleurs du moniteur. Certains moniteurs DDC / CI inclinables prennent en charge une fonction de pivotement automatique, où un capteur de rotation dans le moniteur permet au système d'exploitation de maintenir l'écran en position verticale lorsque le moniteur se déplace entre ses positions portrait et paysage. La plupart des moniteurs DDC / CI ne prennent en charge qu'un petit sous-ensemble de commandes MCCS et certains ont des commandes non documentées.gestion de la luminosité et du contraste.


Pour linux, consultez ddcutil.com
cwd

Réponses:



6

J'ai un Dell U2515H connecté via HDMI à une carte nVidia.

J'ai essayé softMCCS et cela a bien fonctionné. J'ai pu régler la luminosité du rétroéclairage à partir du logiciel.

Voici les codes de contrôle que ce moniteur prend en charge:

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

J'ai également évalué quelques autres outils:

  • Dimmer - N'atténue pas le rétro-éclairage. Utilise un faux logiciel de gradation.
  • ScreenBright - utilise apparemment DDC / CI pour contrôler le rétro-éclairage, mais a été supprimé du site Web de l'auteur. Je n'ai pas essayé de le télécharger depuis l'un de ces sites miroirs douteux.
  • Redshift - Fakes it like Dimmer.

Modifier: il s'avère qu'il existe une API facile à utiliser pour définir la luminosité de l'écran dans Windows. Voici un exemple de code:

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

À utiliser de manière évidente.


fonctionne sur mon Philips BDM4065UC sur DisplayPort en utilisant softMCCS et vraiment heureux pour cela, merci !!!!
Avlin

4

Il est possible de contrôler les paramètres du micrologiciel et la configuration des moniteurs prenant en charge DDC / CI.

Dell fournit un logiciel de marque personnalisée du nom de Dell Display Manager , conçu par EnTech Taiwan, pour une utilisation avec leurs moniteurs. Il s'agit principalement d'un utilitaire basé sur une interface graphique, mais offre une capacité de ligne de commande assez complète. La version actuelle est compatible avec Windows Vista - Windows 10. Elle peut fonctionner avec les écrans d'autres fournisseurs, mais cela n'a pas été confirmé.

La dernière version du logiciel peut être téléchargée directement depuis le site officiel .


Dell Display Manager

Les informations ci-dessous sont extraites des informations À propos du programme et d'une partie du fichier Readme.txt mettant en évidence la syntaxe de la ligne de commande.

À propos

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

Sous licence Dell Inc.

Site Web: http://www.entechtaiwan.com
Courriel: dell.support@entechtaiwan.com

Langage de commande

Un langage de commande riche et flexible est pris en charge via la ligne de commande et les arguments de ligne de commande peuvent être combinés. Le cas échéant, un affichage spécifique peut être ciblé en faisant précéder la commande du numéro d'affichage, par exemple 2:AutoSetup; si aucun numéro d'affichage n'est spécifié, la commande sera appliquée à l'affichage actuellement sélectionné ou à tous les affichages, selon le cas. Les commandes incluent:

SetActiveInput [DVI2/HDMI/DP2,etc]- commute l'entrée active
RestoreFactoryDefaults- restaure les
AutoSetupparamètres d' usine * - exécute une configuration automatique (analogique uniquement) *
RestoreLevelDefaults- restaure les paramètres de niveau *
RestoreColorDefaults- restaure les
SetBrightnessLevel Xparamètres de couleur * - définit la luminosité sur X% (0-100) *
SetContrastLevel X- définit le contraste sur X% (0-100 ) *
SetNamedPreset [Movie/CAL1,etc]- modifie le mode prédéfini *
SetPowerMode [on/off]- définit le mode d'alimentation de l'affichage *
SetOptimalResolution- bascule sur une résolution optimale
SaveProfile [Name]- enregistre les paramètres dans le profil nommé *
RestoreProfile [Name]- restaure les paramètres du profil nommé *
DeleteProfile [Name]- supprime le profil nommé
SetGridType [X]- modifie le type de grille Easy Arrange sur X
Rescan- réanalyse le matériel d'affichage
ForceReset- reconnecte et réanalyse le matériel d'affichage
SetControl X Y- définit le contrôle hexadécimal X sur la valeur hexadécimale Y
IncControl X Y- augmente la valeur du contrôle X de Y
DecControl X Y- diminue la valeur du contrôle X de Y
Wait X- pause X millisecondes
Exit- termine le programme

Certaines de ces commandes nécessitent une connaissance de la norme MCCS. Par exemple, sur les moniteurs qui le prennent en charge, la commande pour basculer la langue OSD vers l'espagnol serait SetControl CC 0A; pour déverrouiller un OSD qui a été verrouillé par inadvertance SetControl CA 02.

Les instructions peuvent être combinées sur la ligne de commande et attribuées aux raccourcis Windows standard avec des raccourcis clavier en option. Par exemple:

ddm.exe /RestoreLevelDefaults /2:SetContrastLevel 70

rétablirait d'abord les niveaux par défaut sur tous les moniteurs, puis réglerait le niveau de contraste sur le moniteur n ° 2 à 70%.

Remarque : Si elles ne sont pas ciblées sur un moniteur spécifique, les commandes répertoriées ci-dessus marquées d'un astérisque (*) s'appliquent à tous les moniteurs pour faciliter un contrôle simple et uniforme sur tous les membres d'une matrice multi-moniteurs. Par exemple, si elle est exécutée sur une matrice de 16 moniteurs identiques, la ligne de commande:

ddm.exe /SetNamedPreset Warm /SetBrightnessLevel 75

mettrait les 16 moniteurs en mode de préréglage chaud, avec un niveau de luminosité de 75%.


Impossible de faire un contraste inférieur à 25%
Nakilon

1

J'utilise le programme "mControl" qui fonctionne bien pour moi - mon moniteur est Dell U2312HM:

mControl transforme des baies de moniteurs simples et multiples en dispositifs programmables intelligents qui changent dynamiquement l'orientation, économisent l'énergie, changent de profil de couleurs et ajustent la luminosité, éliminant ainsi le besoin d'apprendre et de naviguer dans des menus obscurs à l'aide de boutons archaïques sur l'écran lui-même.

Pour télécharger ce programme, vous devez trouver la section "Graphics and Monitor Utilities" dans la moitié inférieure de la page http://www.ddc-ci.com/ , et cliquer sur le lien "mControl" au bas de cette section.


0

J'utilise ce script autohotkey, inspiré de ce post reddit pour envoyer les commandes MCCS appropriées. Fonctionne comme un charme sur mon Dell U2718Q sous 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)
} 
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.