用 Autoit3 , DIY寫的 外接螢幕 DDC/CI VCP 工具
參考資料
https://www.ddcutil.com/vcpinfo_output/
https://www.autoitscript.com/forum/topic/206419-manage-monitors-through-ddcci-channel-using-vcp-commands/
2024.9.13.11
https://www.mediafire.com/file/i74k7q3amng7f8a/
只是優化一些 GUI 相關的部份
VCP 和 2024.9.10.20 都一樣
2024.9.10.20
https://www.mediafire.com/file/r1a9b8xmxouy63o/
1. GUI 調整
2. 修復 GetVCP Test 會重復刷結束訊息的 bug
3. MonitorVCP Debug 模式 和 GetVCP Test 的 Debug Console
可以看到一些 EDID資訊(如果系統註冊中有EDID) , 但不保證正確性
舊版不推薦
2024.9.5 https://www.mediafire.com/file/ovhvqykv4vdlasd/
主要說明:
算是寫好玩的
程式更多主要是 VCP測試 ...
如果只是像調亮度 , 可以用 Twinkle Tray ( GUI介面 操作 等比較好...不過我嫌它太肥)
功能較多的 ClickMonitorDDC(英文不想看)
或是 ControlMyMonitor(在我的 VP228T 不太好用) ... 等等
關於 VESA DDC/CI EDID MCCS VCP
這些就不說了 , 網上找的到資料
(或者說我也不知道我理解的對不對, 所以索性不說了)
現在的外接螢幕 ( VGA , DVI , HDMI , DP , Type-C )
應該大部份都能支援 DDC/CI , 只差在支援那些 VCP 功能而以
主要是依我用的 ASUS VP228T 做測試
我基本只預設一些比較常用通用的 VCP ( VP228T 也只支援這些 )
可以自行修改 config.ini 增加或移除 VCP
要額外說一下(個人推測)...
對螢幕傳送 VCP 時
我是用 Windows API , GetVCPFeatureAndVCPFeatureReply , SetVCPFeature
GetVCP
推測是先對螢幕傳送要 GetVCP 訊號 , 之後若收到 VCP 的值 就是 成功 (沒收到就失敗啦)
所以是 一送一答 的交握 , 不過不是每次都會功成 (也有可能我的 VP228T 比較爛)
不過因為 一送一答...所以可以判斷是否成功
因為可以判斷...所以不成功就多送幾次就好
SetVCP
是射後不理 , 就是對螢幕傳送 SetVCP 訊號 , 然後就沒了 (API 一定是反回 True)
螢幕有沒執行就不知道 , 所以有可能 SetVCP 然後 螢幕 啥都沒發生
因為不是一送一答...所以無法判斷是否成功 , 所以要確保成功就多送幾次
當然對於一些 Read/Write 的 VCP ( 有的 VCP 是 Read Only , Write Only )
如果手動 SetVCP 後接著用 GetVCP 檢查值
是可以手動判斷是否成功 , 不過要多花 GetVCP 的時間
不過我測試 SetVCP 其實還滿容易成功 , GetVCP 反而比較容易失敗
我的 VP228T
GetVCP 平均 30次 (間隔10ms) 以下大多會成功
SetVCP 平均 10次 以下大多會成功 (常常 1, 2次 就成功)

沒有留言:
張貼留言