Ubuntu 22.04 设置拓展显示屏设置使用

一 项目背景

        项目要求使用ubunut系统,由于需要java应用开发需要,选用x86CPU结构开发(哎,用这种开发的产品量就不会大)。需要两个显示输出,一个HDMI用作客户使用,一个输出给到一个8寸的小屏(带触摸和声音)。要求启动后8寸屏显示自己做的应用,客户在这个应用上设置各种参数。

二 硬件选定

        选用intel 12代 CPU,16G内存。hdmi输出显示屏,typec输出8寸屏,喇叭和触摸在8寸屏。连线接好两个屏幕,键盘,鼠标。

三 设置方法

      1) 设置主屏 副屏;(拓展显示都正常,正常了才进行下面步骤)

             a. 可以在设置->显示->选择那个主副屏。

             b. 使用xrandr命令 xrandr --output HDMI-1 --auto --primary

     2) 设置触摸屏

            触摸屏刚开始默认是两个屏都都是接触摸屏的(只要接了触摸屏,也有可能时我用的时typec接口)所以一个触摸屏的对应的时两个显示器。

           a 确认触摸屏的设备ID 使用 xinput list 命令,显示touch 的ID 我的设备触摸ID是10;

           b 使用 xrandr 命令,获取现在有触摸屏的显示器上的名称(output name)这里是DP-2

           c  使用xinput map-to-output 10 DP-2 命令进行正确的触摸屏映射。

    3) 然后发现没有作用。发现ubuntu 22.04 使用的gdm3是wayland。可能是我用的8寸屏接口不标准,系统不能辨认和警告。 所以需要切换成xorg(X11)的显示接口协议。直接vim /etc/gdm3/custom.conf ; 把 其中 #WaylandEnable=false 的注释去掉。保存后 输入命令 systemctl restart gdm3 ;重启后显示在设置-》关于-》窗口系统 由原来的Wayland编程X11。

         再做一次设置触摸屏。(注意窗口系统更改后,触摸屏和显示的名称和ID都会变化)。

  4) 重启后发现触摸屏映射没有起作用,要重新输入xinput map-to-output 命令。

四 开机启动运行qt

        1)开机启动 

        在终端输入命令行: 

        touch start.sh     

        chmod +x start.sh

        vim start.sh

         在start.sh添加以下内容

         #!/bin/sh

          xinput map-to-output

          sleep 2    #必须的,否则系统启动某些模块没有完全启动可能造成应用启动出问题。

         nohup /home/xxx/startApp/startApp &   #程序是循环的话必须这样,否则关闭终端会关闭程序。而且用全路径目录。

         exit 0

        2) QT安装

              顺便说一下 (使用rufus 3.2制作了一个22.04. lts的系统盘,安装后系统后)安装其他附件(最好还是用命令行,感觉用图形化的慢好多,不知道是否有主观印象)。 图像界面软件和更新里换成ailiyun的源(或更改/apt/soourcelist文件)。然后执行以下命令

            sudo apt update

             sudo apt upgrade

             sudo apt install ubuntu-restricted-extras 

 #x86的cpu直接安装,不要搞什么源码安装,22.04版本跟18.04的不一样,试了一下发现下面就可以的。 

                sudo apt-get install build-essential
                sudo apt-get install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools
                sudo apt-get install qtcreator

安装后在终端输入命令 qtcreator就可以启动qt 开发环境了。

  3) 选用屏幕显示 

          用一下代码可以获取屏幕并在这个屏幕上显示(我用的是副屏)

           QList<QScreen *> list_screen = QGuiApplication::screens();

           if( list_screen.size()>1) 

           {

                        this->setGeometry(list_screen.at(1)->geometry());

           }

          QRect rect = list_screen.at(1)->geometry()   //拓展屏相当于在分辨率的添加(根据方向)

4) qt显示全屏并固定窗口;

        //主窗口全屏无边框显示
        setWindowState(Qt::WindowFullScreen);

        //widget和控件可使用 w.showFullScreen(); 

        //控件 使用resize()不能超过父widget。

5)开机启动:

         qt应用demo写完后可以使用把app执行文件拷贝到startApp文件夹。

          在应用程序-》启动程序 添加start.sh作为启动程序。

          在设置-》用户 确认不用密码进入桌面。

 五 总结:

      把主板的上电启动跳线完成。上电后8寸屏就自动运行和显示应用。在设置-》声音 选择带喇叭的屏幕 内置音频。 并把声音设置到最大。主要难点在于两个显示器不一样,一个带触摸屏,一个不带。(还有就是电源电流一定要足,无良js 电源适配器12V5A 到底有多少。主板一个全部电子元件功率不到20W的板子,居然要100W功率要求。不稳定就是因此而产生)

       

               

           

          

猜你喜欢

转载自blog.csdn.net/jb_mai/article/details/131458480