Phát hiện HDMI và Bắt đầu GUI


7

Chúng tôi xây dựng một ứng dụng hỗ trợ chế độ máy chủ và chế độ GUI. Bây giờ XServer và ứng dụng sẽ khởi động, nếu Cáp HDMI được kết nối nếu không thì nó chỉ nên chạy máy chủ.

Vì vậy, cách tốt nhất để phát hiện HDMI là gì? Đọc độ phân giải và nếu nó không phải là độ phân giải HDMI mặc định, nó có được kết nối không? Nhưng điều này sẽ không thể xảy ra nếu PI đã khởi động, phải không?


Có thể đơn giản hơn để kiểm tra runlevel bằng lệnh runlevel. nếu chạy trong runlevel 5 sẽ tạo ra một thiết lập được hỗ trợ gui. Sau đó, bạn có thể khởi chạy GUI như một phần của khởi động GUI.
Steve Robillard

@SteveRobillard Kiểm tra runlevel sẽ là A) Khấu hao, B) Không nhất thiết chỉ ra liệu X có chạy hay không. Tôi đã không kiểm tra, nhưng tôi cá là những gì xảy ra với một hệ thống GUI không có màn hình được đính kèm là X bắt đầu, không tìm thấy màn hình và thoát. Tuy nhiên, runlevel (hoặc không tương đương khấu hao) vẫn sẽ giữ nguyên, vì vậy nếu bạn muốn một hệ thống có thể được cấu hình để sử dụng GUI khi có sẵn thì đó không phải là một thử nghiệm hữu ích ...
goldilocks

... Bạn chắc chắn có thể nhận được thông tin chi tiết từ đầu ra của máy chủ X - tuy nhiên trên thực tế, đầu ra của systemctl status ______có lẽ sẽ là điều dễ dàng và quyết định nhất để phân tích ở đây. Có lẽ có API python: P Và để truy vấn máy chủ X để hiển thị và phân giải (cũng xem man xargs).
goldilocks

Câu trả lời:


10

Có một tiện ích dòng lệnh, tvserviceđược tích hợp trong Raspbian sẽ cho bạn biết trạng thái của HDMI.

Để phát hiện trạng thái đầy đủ, bạn có thể sử dụng lệnh : tvservice -s. Trên RPi của tôi, kết quả hiện tại này:

state 0x40001 [NTSC 4:3], 720x480 @ 60.00Hz, interlaced

Các tiểu bang (mà tôi đã tập hợp) như sau:

  • 0x40001 Không được khởi tạo và cáp HDMI bị ngắt kết nối
  • 0x40002 Không được khởi tạo nhưng cáp HDMI được kết nối
  • 0x120002 Chế độ chờ
  • 0x120005 HDMI bị ngắt kết nối
  • 0x120016 Hoạt động

Nếu bạn ít quan tâm đến các chi tiết bổ sung tvservice -ncó thể đơn giản hơn một chút để phân tích cú pháp. Nó cho tên hiện tại của thiết bị được kết nối. Thí dụ:

[E] No device present

Ngoài ra, nếu kết nối chạm và đi, bạn có thể thấy -Mcờ hữu ích. Nó theo dõi các sự kiện liên quan đến cổng HDMI.

Nguồn :

Biên tập:

Như Ghanima đã chỉ ra trong các bình luận, tvservice cũng có sẵn trong Arch /opt/vc/bin/tvservice.


2
Mặt khác, nó không chỉ có sẵn một Raspbian. Arch có nó, nó nằm trong /opt/vc/bin/tvservicevà là một phần của gói công cụ phần mềm raspberrypi được cài đặt theo mặc định.
Ghanima

2

Lệnh tvservice không nhất quán khi HDMI bị ngắt kết nối. Giả sử bạn khởi động Pi bằng HDMI, sau đó ngắt kết nối cáp HDMI. Lệnh tvservice vẫn sẽ báo cáo rằng thiết bị HDMI được kết nối, trong đó các lệnh -n, -s, v.v. vẫn báo cáo màn hình được kết nối trước đó qua HDMI.

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.