工控網首頁
>

應用設計

>

Weston 桌面雙屏顯示獨立觸摸配置

Weston 桌面雙屏顯示獨立觸摸配置

1). 簡介

在前述文章中,我們介紹了如何基于 Weston Compositor 實現多屏幕分別顯示不同的應用,而進一步延伸出的一個應用場景,就是多屏幕分別有獨立的觸摸實現分別控制在對應屏幕之上進行響應。本文就基于前述文章同樣的 NXP i.MX8MP 平臺來測試如何實現這個功能場景。

 

本文所演示的平臺來自于 Toradex Verdin i.MX8MP 嵌入式平臺。

 

 

2. 準備

a). Verdin i.MX8MP ARM核心版配合Dahlia 載板,并連接調試串口用于測試。

b). Dahlia 載板分別由 DSI-HDMI 轉接卡和 native HDMI 兩個接口連接兩臺 HDMI 顯示器以便于進行多屏顯示測試。

c). 兩個 HDMI 屏幕都具備 USB 電容觸摸屏接口,將兩個 USB 通過一個 USB Hub 連接到 Dahlia 載板 X4 上的 USB Host 接口。

 

 

3) . 部署流程

a). 首先參考前述文章將兩個屏幕分別顯示兩個 Qt 應用配置成功。通過如下命令可以確認,DSI-HDMI 接口的 HDMI 顯示設備是 “HDMI-A-1”;而 native HDMI 接口的顯示設備是 “HDMI-A-2”:

---------------------------------------

root@verdin-imx8mp-06849028:~# modetest -M imx-drm |grep -C 3 Encoders                     

Encoders:

id      crtc     type     possible crtcs     possible clones

37      33      DSI      0x00000001      0x00000001

39      36      TMDS    0x00000002      0x00000002

 

root@verdin-imx8mp-06849028:~# modetest -M imx-drm |grep -C 1 connected                    

id      encoder   status          name          size (mm)       modes   encoders

38      37      connected       HDMI-A-1        0x0             12      37

...

40      39      connected       HDMI-A-2        0x0             24      39

...

---------------------------------------

 

b). 為了實現對于兩個觸摸設備分別對應兩個顯示設備,需要通過 udev rule來進行關聯。

./ 首先通過執行如 “evtest” 或者 “udenadm monitor” 來確認觸摸屏 event 對應關系,注意這個可能是動態變化的,本文配置當前啟動下的狀態如下:

---------------------------------------

root@verdin-imx8mp-06849028:~# evtest

No device specified, trying to scan all of /dev/input/event*

Available devices:

/dev/input/event0:      gpio-keys

/dev/input/event1:      30370000.snvs:snvs-powerkey

/dev/input/event2:      audio-hdmi HDMI Jack

/dev/input/event3:      ELAN Touchscreen

/dev/input/event4:      ELAN Touchscreen UNKNOWN

/dev/input/event5:      ELAN Touchscreen UNKNOWN

/dev/input/event6:      HID 27c0:0818

---------------------------------------

 

其中 “/dev/input/event3: ELAN Touchscreen” 對應 “HDMI-A-1” 顯示器的觸摸; “/dev/input/event6: HID 27c0:0818” 對應 “HDMI-A-2” 顯示器的觸摸

 

./ 基于上述信息通過 “udevadm info” 命令進一步確認觸摸設備的信息,其中 “ID_VENDOR_ID” 和 “ID_MODEL_ID” 是固定不變的,”DEVPATH” 的前部分在不改變 USB 接口的情況下是不變的。

--------------------------------------

root@verdin-imx8mp-06849028:~# udevadm info /dev/input/event3 |grep ID_VENDOR

E: ID_VENDOR=ELAN

E: ID_VENDOR_ENC=ELAN

E: ID_VENDOR_ID=04f3

root@verdin-imx8mp-06849028:~# udevadm info /dev/input/event3 |grep ID_MODEL

E: ID_MODEL=Touchscreen

E: ID_MODEL_ENC=Touchscreen

E: ID_MODEL_ID=2884

root@verdin-imx8mp-06849028:~# udevadm info /dev/input/event3 |grep DEVPATH

E: DEVPATH=/devices/platform/soc@0/32f10108.usb/38200000.usb/xhci-hcd.1.auto/usb1/1-1/1-1.2

/1-1.2.3/1-1.2.3.2/1-1.2.3.2:1.0/0003:04F3:2884.0009/input/input14/event3

 

root@verdin-imx8mp-06849028:~# udevadm info /dev/input/event6 |grep ID_VENDOR              

E: ID_VENDOR=27c0

E: ID_VENDOR_ENC=27c0

E: ID_VENDOR_ID=27c0

root@verdin-imx8mp-06849028:~# udevadm info /dev/input/event6 |grep ID_MODEL

E: ID_MODEL=0818

E: ID_MODEL_ENC=0818

E: ID_MODEL_ID=0818

root@verdin-imx8mp-06849028:~# udevadm info /dev/input/event6 |grep DEVPATH

E: DEVPATH=/devices/platform/soc@0/32f10108.usb/38200000.usb/xhci-hcd.1.auto/usb1/1-1/1-1.2

/1-1.2.4/1-1.2.4.4/1-1.2.4.4:1.0/0003:27C0:0818.0007/input/input13/event6

--------------------------------------

 

./ 利用上述信息修改系統默認的 udev rules 文件 - /etc/udev/rules.d/touchscreen.rules,通過輸出 “WL_OUTPUT” 環境變量來將觸摸屏設備和顯示設備綁定

---------------------------------------

--- a/etc/udev/rules.d/touchscreen.rules

+++ b/etc/udev/rules.d/touchscreen.rules

@@ -16,3 +16,7 @@

 # Create a symlink to any touchscreen input device

 SUBSYSTEM=="input", KERNEL=="event[0-9]*", ATTRS{modalias}=="input:*-e0*,3,*a0,1,*18,*", S

YMLINK+="input/touchscreen0"

 SUBSYSTEM=="input", KERNEL=="event[0-9]*", ATTRS{modalias}=="ads7846", SYMLINK+="input/tou

chscreen0"

+

+ENV{ID_VENDOR_ID}=="27c0",ENV{ID_MODEL_ID}=="0818",DEVPATH=="/devices/platform/soc@0/32f10

108.usb/38200000.usb/xhci-hcd.1.auto/usb1/1-1/*",ENV{WL_OUTPUT}="HDMI-A-2"

+

+ENV{ID_VENDOR_ID}=="04f3",ENV{ID_MODEL_ID}=="2884",DEVPATH=="/devices/platform/soc@0/32f10

108.usb/38200000.usb/xhci-hcd.1.auto/usb1/1-1/*",ENV{WL_OUTPUT}="HDMI-A-1"

---------------------------------------

 

c). 完成上述修改后重新啟動使得修改生效。

 

 

4). 測試

a). 重新啟動后,通過如下命令可以查詢到觸摸設備和對應屏幕關聯成功

-------------------------------

root@verdin-imx8mp-06849028:~# journalctl |grep HDMI-A-1

Dec 26 04:05:12 verdin-imx8mp-06849028 weston[513]: [04:05:12.151] DRM: head 'HDMI-A-1' fou

nd, connector 38 is connected, EDID make 'RTK', model 'WCS Display', serial 'demoset-1'

...

Dec 26 04:05:12 verdin-imx8mp-06849028 weston[513]: [04:05:12.421] associating input device

 event3 with output HDMI-A-1 (HDMI-A-1 by udev)

 

root@verdin-imx8mp-06849028:~# journalctl |grep HDMI-A-2

Dec 26 04:05:12 verdin-imx8mp-06849028 weston[513]: [04:05:12.259] DRM: head 'HDMI-A-2' fou

nd, connector 40 is connected, EDID make 'RTK', model 'WCS Display', serial 'demoset-1'

...

Dec 26 04:05:15 verdin-imx8mp-06849028 weston[513]: [04:05:15.268] associating input device

 event6 with output HDMI-A-2 (HDMI-A-2 by udev)

-------------------------------

 

b). 此時兩個Qt 應用分別顯示在兩個 HDMI 顯示器上,通過實際觸摸操作可以分別操控兩個 Qt 應用,部署測試成功。

 

 

5). 總結

本文基于 NXP i.MX8MP 處理器平臺測試了 Yocto Linux 下基于 Weston 實現多屏幕分別有獨立的觸摸實現單獨控制。

 

參考文檔

https://web.archive.org/web/20201112030845/https://wiki.tizen.org/IVI/Mapping_multiple_touchscreen_Wayland

審核編輯(
王靜
)
投訴建議

提交

查看更多評論
其他資訊

查看更多

NXP iMX8MP 使用 OP-TEE

NXP iMX8MM 通過本地服務器更新 BSP 鏡像

NXP iMX8MM ARM 平臺 Weston RDP 遠程桌面部署測試

基于 NXP iMX8MP 平臺測試 CODESYS TargetVisu

通過 Docker 部署測試 CODESYS PLC示例