提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
现如今嵌入式设备需要小屏操作,怎么制作嵌入式设备可用的桌面应用呢。本例原理是通过在主机启动前端服务,然后开机自启动,识别连接的屏幕,将前端UI渲染到屏幕上,全屏显示出来。
提示:以下是本篇文章正文内容,下面案例可供参考
一、查看屏幕
本例示范选择用Vue + TS 来创建桌面应用,在linux系统上,实现开机自动渲染桌面应用从而控制嵌入式设备,和嵌入式驱动。
(本例实现基于ubuntu系统)
1. 识别当前Display
echo $DISPLAY
对于带桌面的Ubuntu系统通常输出的是 :0, 它代表着第一个显示服务器, 代表现在正在使用第一个显示服务器。
2. 输出桌面环境类别
echo $XDG_SESSION_TYPE
-
X11 (x11): 环境变量 DISPLAY=:0 是绝对正确的指定方式。
-
Wayland (wayland): Wayland本身不使用 DISPLAY 变量,但为了兼容性,它通常仍然会设置 DISPLAY=:0。许多基于X11的应用程序(如Chromium、Firefox)会通过一个叫做“XWayland”的兼容层来运行,而这个兼容层实例就对应着 :0。
-
tty: 如果是tty意味着当前终端没有使用图形桌面环境,是一个纯文本的环境( 通常是 tty2 或 tty1,具体取决于你的Ubuntu版本和配置)Ctrl + ALT + F2 进入桌面环境,Ctrl + ALT + F3 进入纯文本环境 (F3对应的是tty3)。

注意:查看当前图形桌面环境需要在当前用户下查看,如果通过su 命令切换了其它用户,那么当前终端就会变成纯文本环境。
如果需要调试,检查下图形服务器是否在运行,命令如下:
# 1. 检查最关键的图形服务器进程(Xorg 或 Xwayland)是否存在
ps aux | grep -E "(Xorg|Xwayland)"
# 2. 检查当前正在运行的进程里是否有图形界面管理器(显示管理器)
ps aux | grep -E "(gdm|lightdm|sddm)"
# 3. 检查系统启动的默认目标(是图形模式还是文本模式)
systemctl get-default
# 4. 检查当前正在运行的服务目标
systemctl isolate
3. 查看已经连接的屏幕
执行 xrandr --query
xrandr --query
Screen 0: minimum 16 x 16, current 1280 x 800, maximum 32767 x 32767
Virtual-1 connected primary 1280x800+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
1280x800 59.81*+
1024x768 59.92
800x600 59.86
640x480 59.38
320x240 59.52
1152x720 59.97
960x600 59.63
928x580 59.88
800x500 59.50
768x480 59.90
720x480 59.71
640x400 59.95
320x200 58.96
1280x720 59.86
1024x576 59.90
864x486 59.92
720x400 59.55
640x350 59.77
从上面输出可以看到当前 Screen 0 下面的Virtual-1 已经连接,并且显示了分别率
二、测试屏幕
1. 安装依赖
代码如下(示例):
# 安装Node.js和npm
sudo apt install -y nodejs npm
# 安装Vue CLI
sudo npm install -g @vue/cli
# 安装PM2(用于进程管理)
sudo npm install -g pm2
# 安装Chromium浏览器(用于全屏显示)
sudo apt install -y chromium-browser
- 下载前建议将软件镜像源换成国内镜像

-
为了自由的在虚拟机和主机网络通信,建议把虚拟机网络设置改成 桥接模式,虚拟机会从主机DHCP分配一个同网段的网络。
-
为了可以让虚拟机和主机之间可以自由的复制粘贴,需要安装VM tools工具,然后共享粘贴板 (需要重启生效)
sudo apt update
sudo apt install open-vm-tools-desktop
2. 测试运行
在测试屏幕存在,并且安装了依赖后,开启UI
DISPLAY=:0 chromium-browser --no-sandbox --disable-features=VizDisplayCompositor --start-fullscreen --kiosk http://localhost:3000
为了不用杀进程关闭页面可以取消 --kiosk 参数,执行完桌面就会跳转到前端服务界面。
总结
提示:如上就是嵌入式系统开发屏幕的步骤
1179

被折叠的 条评论
为什么被折叠?



