2008-12-26 68 views
11

Tôi có quá trình crunching số lượng dài, tận dụng khá nhiều tính năng hiển thị ngoài màn hình OpenGL. Tất cả đều hoạt động tốt nhưng khi tôi để nó hoạt động một mình trong khi tôi đi làm bánh sandwich, tôi thường thấy rằng nó bị rơi khi tôi đi vắng.
Tôi đã có thể xác định rằng sự cố xảy ra rất gần thời điểm Máy tính xách tay tôi đang sử dụng quyết định tắt màn hình để tiết kiệm năng lượng. Bản thân vụ tai nạn cũng nằm bên trong các dll NVIDIA nên không có hy vọng nào biết được những gì đang xảy ra.Tắt hiển thị màn hình khi máy tính xách tay tắt màn hình?

Giải pháp rõ ràng là tắt tính năng quản lý nguồn, tắt màn hình và tắt video nhưng tôi đang tìm kiếm một cái gì đó thân thiện với người dùng hơn. Có cách nào để thực hiện điều này theo chương trình không?
Tôi biết có một cài đặt SETI @ home tận dụng lợi thế của việc xử lý GPU. Làm cách nào để thẻ video không chuyển sang chế độ ngủ?

+1

Tại sao lại đánh dấu sự cố này? Có vẻ như một câu hỏi hợp lệ. 1 để chống lại các lái xe hèn nhát. –

Trả lời

9

Tôi không chắc chắn bạn đang sử dụng hệ điều hành nào, nhưng windows sends a message sắp sửa chuyển sang trạng thái nguồn mới. Bạn có thể lắng nghe điều đó và sau đó bắt đầu xử lý trên CPU hoặc từ chối yêu cầu nhập vào trạng thái công suất thấp hơn.

+0

Có, cửa sổ. rất tuyệt, cảm ơn! – shoosh

8

Vì lợi ích của người dùng Linux gặp sự cố tương tự, tôi nghĩ tôi sẽ thêm vào đó, bạn có thể nhận được các thông báo tương tự và ngăn chặn các thay đổi trạng thái nguồn bằng cách sử dụng DBUS API. Một tập lệnh mẫu trong Python, được lấy từ liên kết, để ngăn chặn sự thay đổi trạng thái nguồn:

#!/usr/bin/python 
import dbus 
import time 
bus = dbus.Bus(dbus.Bus.TYPE_SESSION) 
devobj = bus.get_object('org.freedesktop.PowerManagement', 
         '/org/freedesktop/PowerManagement') 
dev = dbus.Interface (devobj, "org.freedesktop.PowerManagement.Inhibit") 
cookie = dev.Inhibit('Nautilus', 'Copying files from /media/SANVOL') 
time.sleep(10) 
dev.UnInhibit(cookie) 
0

Theo MSDN, có một ứng dụng cho phép Windows biết rằng nó vẫn hoạt động và Windows không nên đi ngủ hoặc tắt màn hình.

Chức năng được gọi là SetThreadExecutionState (MSDN). Nó hoạt động cho tôi, sử dụng các cờ ES_SYSTEM_REQUIREDES_CONTINUOUS. Tuy nhiên, lưu ý rằng việc sử dụng chức năng này không làm cho trình bảo vệ màn hình không chạy, điều này có thể ảnh hưởng đến ứng dụng OpenGL của bạn nếu trình bảo vệ màn hình cũng sử dụng OpenGL (oder Direct3D).

+0

Tắt màn hình là * không * giống như kích hoạt trình bảo vệ màn hình. Đó là hai cài đặt độc lập. -1 – 0xC0000022L

Các vấn đề liên quan