工控網(wǎng)首頁(yè)
>

應(yīng)用設(shè)計(jì)

>

Weston 桌面雙屏顯示獨(dú)立觸摸配置

Weston 桌面雙屏顯示獨(dú)立觸摸配置

1). 簡(jiǎn)介

前述文章中,我們介紹了如何基于 Weston Compositor 實(shí)現(xiàn)多屏幕分別顯示不同的應(yīng)用,而進(jìn)一步延伸出的一個(gè)應(yīng)用場(chǎng)景,就是多屏幕分別有獨(dú)立的觸摸實(shí)現(xiàn)分別控制在對(duì)應(yīng)屏幕之上進(jìn)行響應(yīng)。本文就基于前述文章同樣的 NXP i.MX8MP 平臺(tái)來(lái)測(cè)試如何實(shí)現(xiàn)這個(gè)功能場(chǎng)景。

 

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

 

 

2. 準(zhǔn)備

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

b). Dahlia 載板分別由 DSI-HDMI 轉(zhuǎn)接卡和 native HDMI 兩個(gè)接口連接兩臺(tái) HDMI 顯示器以便于進(jìn)行多屏顯示測(cè)試。

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

 

 

3) 部署流程

a). 首先參考前述文章將兩個(gè)屏幕分別顯示兩個(gè) Qt 應(yīng)用配置成功。通過(guò)如下命令可以確認(rèn),DSI-HDMI 接口的 HDMI 顯示設(shè)備是 “HDMI-A-1”;而 native HDMI 接口的顯示設(shè)備是 “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). 為了實(shí)現(xiàn)對(duì)于兩個(gè)觸摸設(shè)備分別對(duì)應(yīng)兩個(gè)顯示設(shè)備,需要通過(guò) udev rule來(lái)進(jìn)行關(guān)聯(lián)。

./ 首先通過(guò)執(zhí)行如 evtest 或者 udenadm monitor 來(lái)確認(rèn)觸摸屏 event 對(duì)應(yīng)關(guān)系,注意這個(gè)可能是動(dòng)態(tài)變化的,本文配置當(dāng)前啟動(dòng)下的狀態(tài)如下:

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

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 對(duì)應(yīng) “HDMI-A-1” 顯示器的觸摸; /dev/input/event6: HID 27c0:0818 對(duì)應(yīng) “HDMI-A-2 顯示器的觸摸

 

./ 基于上述信息通過(guò) udevadm info 命令進(jìn)一步確認(rèn)觸摸設(shè)備的信息,其中 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

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

 

./ 利用上述信息修改系統(tǒng)默認(rèn)的 udev rules 文件 - /etc/udev/rules.d/touchscreen.rules,通過(guò)輸出 WL_OUTPUT 環(huán)境變量來(lái)將觸摸屏設(shè)備和顯示設(shè)備綁定

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

--- 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). 完成上述修改后重新啟動(dòng)使得修改生效。

 

 

4). 測(cè)試

a). 重新啟動(dòng)后,通過(guò)如下命令可以查詢到觸摸設(shè)備和對(duì)應(yīng)屏幕關(guān)聯(lián)成功

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

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). 此時(shí)兩個(gè)Qt 應(yīng)用分別顯示在兩個(gè) HDMI 顯示器上,通過(guò)實(shí)際觸摸操作可以分別操控兩個(gè) Qt 應(yīng)用,部署測(cè)試成功。

 

 

5). 總結(jié)

本文基于 NXP i.MX8MP 處理器平臺(tái)測(cè)試了 Yocto Linux 下基于 Weston 實(shí)現(xiàn)多屏幕分別有獨(dú)立的觸摸實(shí)現(xiàn)單獨(dú)控制。

 

參考文檔

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

審核編輯(
王靜
)

提交

查看更多評(píng)論
其他資訊

查看更多

NXP iMX8MP 使用 OP-TEE

NXP iMX8MM 通過(guò)本地服務(wù)器更新 BSP 鏡像

NXP iMX8MM ARM 平臺(tái) Weston RDP 遠(yuǎn)程桌面部署測(cè)試

基于 NXP iMX8MP 平臺(tái)測(cè)試 CODESYS TargetVisu

通過(guò) Docker 部署測(cè)試 CODESYS PLC示例