Có thể bật điều khiển độ sáng phần mềm trên Dell U2412M


13

Vâng, tôi chỉ muốn câu hỏi có / không đơn giản này để hỗ trợ e-mail Dell. Trang web của họ yêu cầu mã dịch vụ chỉ để gửi e-mail. Sau đó, tôi đã thử hỗ trợ trò chuyện "kỹ thuật" của họ. Một số người Ấn Độ đã trả lời một cách kỳ lạ và cuối cùng trả lời rằng anh ấy / cô ấy không có kiến ​​thức kỹ thuật và chỉ cho tôi liên kết đến hỗ trợ e-mail (mà tôi đã thử rồi).

Tôi có màn hình Dell U2412M có DisplayPort và cổng USB liên kết lên. Tôi đã kích hoạt DDC / CI trong OSD. Tôi đang sử dụng Windows 8 và điều khiển độ sáng trên Charm Bar bị tắt.

Có thể kích hoạt nó? Bởi vì tôi nghe nói rằng DDC / CI cho phép máy tính của bạn điều khiển màn hình của bạn.

Tiêu chuẩn DDC / CI (Giao diện lệnh) được giới thiệu vào tháng 8 năm 1998. Nó chỉ định một phương tiện để máy tính gửi lệnh đến màn hình, cũng như nhận dữ liệu cảm biến từ màn hình, qua liên kết hai chiều. Các lệnh cụ thể để điều khiển màn hình được xác định trong một bộ lệnh điều khiển màn hình (MCCS) riêng biệt phiên bản 1.0, được phát hành vào tháng 9 năm 1998. Màn hình DDC / CI đôi khi được cung cấp cảm biến màu bên ngoài để cho phép tự động cân bằng màu của màn hình. Một số màn hình DDC / CI nghiêng hỗ trợ chức năng tự động xoay, trong đó cảm biến xoay trong màn hình cho phép hệ điều hành giữ cho màn hình đứng thẳng khi màn hình được di chuyển giữa các vị trí dọc và ngang. Hầu hết các màn hình DDC / CI chỉ hỗ trợ một tập hợp nhỏ các lệnh MCCS và một số có các lệnh không có giấy tờ.quản lý độ sáng và độ tương phản.


Đối với linux kiểm tra ddcutil.com
cwd

Câu trả lời:



6

Tôi có Dell U2515H được kết nối qua HDMI với thẻ nVidia.

Tôi đã thử softMCCS và nó hoạt động tốt. Tôi đã có thể điều chỉnh độ sáng của đèn nền từ phần mềm.

Đây là các mã điều khiển mà màn hình này hỗ trợ rõ ràng:

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

Tôi cũng đã đánh giá một vài công cụ khác:

  • Dimmer - Không làm mờ đèn nền. Sử dụng phần mềm giả mờ.
  • ScreenBright - Rõ ràng sử dụng DDC / CI để kiểm soát đèn nền, nhưng đã bị xóa khỏi trang web của tác giả. Tôi đã không thử tải nó xuống từ một trong những trang nhân bản tinh ranh đó.
  • Redshift - Làm cho nó giống như Dimmer.

Chỉnh sửa: Hóa ra có một API dễ sử dụng để cài đặt độ sáng màn hình trong Windows. Dưới đây là một số mã ví dụ:

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

Sử dụng một cách rõ ràng.


hoạt động trên Philips BDM4065UC của tôi trên DisplayPort bằng softMCCS và thực sự rất vui vì điều đó, cảm ơn !!!!
Avlin

4

Có thể kiểm soát cài đặt chương trình cơ sở và cấu hình của màn hình hỗ trợ DDC / CI.

Dell cung cấp một phần mềm có thương hiệu tùy chỉnh với tên Dell Manager Manager , được thiết kế bởi EnTech Đài Loan, để sử dụng với màn hình của họ. Nó chủ yếu là một tiện ích dựa trên GUI nhưng cung cấp khả năng dòng lệnh khá toàn diện. Phiên bản hiện tại tương thích với Windows Vista - Windows 10. Nó có thể hoạt động với màn hình từ các nhà cung cấp khác, nhưng điều đó chưa được xác nhận.

Phiên bản mới nhất của phần mềm có thể được tải xuống trực tiếp từ trang web chính thức .


Trình quản lý màn hình Dell

Thông tin bên dưới được trích từ thông tin Giới thiệu và một phần của cú pháp dòng lệnh Readme.txt làm nổi bật cú pháp dòng lệnh.

Trong khoảng

Dell Display Manager
Phiên bản 1.27.0.1792
Bản quyền (c) 2007-2016, EnTech Đài Loan.

Được cấp phép cho Dell Inc.

Trang web: http://www.entechtaiwan.com
E-mail: dell.support@entechtaiwan.com

Ngôn ngữ lệnh

Một ngôn ngữ lệnh phong phú và linh hoạt được hỗ trợ thông qua dòng lệnh và các đối số dòng lệnh có thể được kết hợp. Khi thích hợp, một màn hình cụ thể có thể được nhắm mục tiêu bằng cách đặt trước lệnh với số hiển thị, ví dụ : 2:AutoSetup; nếu số lượng hiển thị không được chỉ định, lệnh sẽ được áp dụng cho màn hình được chọn hiện tại hoặc cho tất cả các màn hình, nếu phù hợp. Các lệnh bao gồm:

SetActiveInput [DVI2/HDMI/DP2,etc]- chuyển đổi đầu vào hoạt động
RestoreFactoryDefaults- khôi phục mặc định của nhà máy *
AutoSetup- thực hiện tự động lưu (chỉ tương tự) *
RestoreLevelDefaults- khôi phục mặc định mức *
RestoreColorDefaults- khôi phục mặc định màu *
SetBrightnessLevel X- đặt độ sáng thành X% (0-100) *
SetContrastLevel X- đặt độ tương phản thành X% (0-100 ) *
SetNamedPreset [Movie/CAL1,etc]- thay đổi chế độ Cài đặt sẵn *
SetPowerMode [on/off]- đặt chế độ nguồn hiển thị *
SetOptimalResolution- chuyển sang độ phân giải tối ưu
SaveProfile [Name]- lưu cài đặt thành cấu hình đã đặt tên *
RestoreProfile [Name]- khôi phục cài đặt từ cấu hình đã đặt tên *
DeleteProfile [Name]- xóa cấu hình đã đặt tên
SetGridType [X]- thay đổi Loại lưới dễ dàng sắp xếp thành X
Rescan- giải cứu phần cứng
ForceReset- kết nối lại và giải cứu phần cứng hiển thị
SetControl X Y- đặt điều khiển hex X thành giá trị hex Y
IncControl X Y- tăng giá trị của điều khiển X theo Y
DecControl X Y- giảm giá trị của điều khiển X theo Y
Wait X- tạm dừng X mili giây
Exit- chấm dứt chương trình

Một số lệnh này yêu cầu làm quen với tiêu chuẩn MCCS. Ví dụ, trên các màn hình hỗ trợ nó, lệnh chuyển ngôn ngữ OSD sang tiếng Tây Ban Nha sẽ là SetControl CC 0A; để mở khóa một OSD đã vô tình bị khóa SetControl CA 02.

Các hướng dẫn có thể được kết hợp trên dòng lệnh và được gán cho các phím tắt Windows tiêu chuẩn với các phím nóng tùy chọn. Ví dụ:

ddm.exe /RestoreLevelDefaults /2:SetContrastLevel 70

đầu tiên sẽ khôi phục mặc định mức trên tất cả các màn hình, sau đó đặt mức độ tương phản trên màn hình # 2 đến 70%.

Lưu ý : Nếu không được nhắm mục tiêu đến một màn hình cụ thể, các lệnh được liệt kê ở trên được gắn thẻ hoa thị (*) sẽ áp dụng cho tất cả các màn hình để tạo điều kiện kiểm soát đơn giản và thống nhất cho tất cả các thành viên của ma trận đa màn hình. Chẳng hạn, nếu được thực thi trên ma trận gồm 16 màn hình giống hệt nhau, dòng lệnh:

ddm.exe /SetNamedPreset Warm /SetBrightnessLevel 75

sẽ đặt tất cả 16 màn hình thành chế độ Cài đặt sẵn ấm, với mức độ sáng 75%.


Không thể tạo độ tương phản thấp hơn 25%
Nakilon

1

Tôi đã sử dụng chương trình "mControl" hoạt động tốt với tôi - màn hình của tôi là Dell U2312HM:

mControl biến các mảng màn hình đơn và nhiều màn hình thành các thiết bị lập trình thông minh tự động thay đổi hướng, tiết kiệm năng lượng, chuyển đổi cấu hình màu và điều chỉnh độ sáng, loại bỏ nhu cầu tìm hiểu và điều hướng các menu khó hiểu bằng chính các nút trên màn hình.

Để tải xuống chương trình này, bạn cần tìm phần "Đồ họa và màn hình tiện ích" ở nửa dưới của trang http://www.ddc-ci.com/ và nhấp vào liên kết "mControl" ở cuối phần đó.


0

Tôi sử dụng tập lệnh autohotkey này, lấy cảm hứng từ bài đăng reddit này để gửi các lệnh MCCS thích hợp. Hoạt động như một nét quyến rũ trên Dell U2718Q của tôi dưới 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)
} 
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.