2015-07-11 32 views
2

這不是其他問題的重複,因爲我想在linux中完成這些任務。如何檢查顯示器是否插入? (Linux)

我正在開發板上進行圖像處理,爲此,我正在我的筆記本電腦上測試/開發。在OpenCV中,有imshow()用於顯示圖像。但只有當顯示器在那裏時纔會起作用。所以我想在調用之前檢查顯示器是否存在,以便在代碼在PC上運行時而不是在板上運行時調用它。

我該如何做到這一點?

... 
... 
if(<only-if-monitor-is-present>) 
    imshow(img); 
... 
... 

回答

0

這裏是如何做到這一點:

int MonitorNotPresent = system("xset -q | tail -n1 | grep On"); 
if(!WEXITSTATUS(MonitorNotPresent)) 
    imshow(img) 

頭使用:

cstdlib 
+0

我想你應該接受其中一個答案,如果它爲你提供了足夠的信息。 – tommus

0

你可以嘗試使用xset (user preference utility for X)-q標誌:

的q選項爲您提供了當前設置信息。

我已經寫了使用該命令並解析輸出簡單的程序:在我的筆記本結果與輸出

#include <cstdlib> 
#include <iostream> 

bool is_monitor_present() { 
    int result = system("xset -q | tail -n1 | grep 'Monitor is On'"); 
    return result == 0; 
} 

int main() { 
    bool found = is_monitor_present(); 

    if(found) { 
     std::cout << "Monitor is present." << std::endl; 
    } else { 
     std::cout << "Monitor absent." << std::endl; 
    } 
} 

的Linux操作系統Ubuntu 15.04執行:

監視器存在。在我的覆盆子

相同的代碼,最多最新的有或幾乎跟上時代的Raspbian:

XSET:無法打開顯示「」

監視器缺席。

我不建議在生產中使用此代碼,但對於某些測試似乎工作正常。至少在Debian上。

+0

在租賃使用'popen方法( 「XSET -q |尾-N1」, 「R」)'和'函數,pclose ',而不是'系統'! –

相關問題